blob: 439e26d6aafba79e9b8f2a97f2634092ad073d24 [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 */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530482 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
schang86c22c42013-03-13 18:41:24 -0700483 /*-------------------------------------------------------------------------
484 Indications
485 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800487 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530488 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
489 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700490#ifdef WLAN_FEATURE_11W
491 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
492#else
493 NULL,
494#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700495 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
496 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530497#ifdef FEATURE_WLAN_BATCH_SCAN
498 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
499 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
500#else
501 NULL,
502 NULL,
503#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700504 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800505
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530506 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800507 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
508
509 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530510#ifdef FEATURE_WLAN_TDLS
511 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
512#else
513 NULL,
514#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530515 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530516 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700517};
518
519
Jeff Johnsone7245742012-09-05 17:12:55 -0700520/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700521 DAL Request Processing Array - the functions in this table will only be
522 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700523 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700524 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700525WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700526{
527 /*INIT*/
528 WDI_ProcessStartRsp, /* WDI_START_RESP */
529 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
530 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
531
532 /*SCAN*/
533 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
534 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
535 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
536 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
537
538 /* ASSOCIATION*/
539 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
540 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
541 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
542 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
543 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
544
545 /* Security */
546 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
547 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
548 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
549 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
550
551 /* QoS and BA APIs */
552 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
553 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
554 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
555 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
556 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
557
558 /* Miscellaneous Control APIs */
559 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
560 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
561 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
562 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
563 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
564
565 /* BA APIs*/
566 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
567 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700568
Jeff Johnson295189b2012-06-20 16:38:30 -0700569 /* IBSS APIs*/
570 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
571 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
572
573 /*Soft AP APIs*/
574 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
575 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
576 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
577 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
578
579 /* PowerSave APIs */
580 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
581 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
582 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
583 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
584 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
585 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
586 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
587 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
588 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
589 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
590 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
591 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
592 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
593 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
594 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
595 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
596 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
597 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700598
Jeff Johnson295189b2012-06-20 16:38:30 -0700599
600 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
601
602 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
603 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
604#ifdef WLAN_FEATURE_VOWIFI_11R
605 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
606#else
607 NULL,
608#endif /* WLAN_FEATURE_VOWIFI_11R */
609 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
610 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700611#ifdef FEATURE_OEM_DATA_SUPPORT
612 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
613#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700614 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700615#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
617
Jeff Johnson295189b2012-06-20 16:38:30 -0700618 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700619
Jeff Johnson295189b2012-06-20 16:38:30 -0700620 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700621
Jeff Johnsone7245742012-09-05 17:12:55 -0700622 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
623
Jeff Johnson295189b2012-06-20 16:38:30 -0700624#ifdef FEATURE_WLAN_SCAN_PNO
625 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
626 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
627 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
628#else
629 NULL,
630 NULL,
631 NULL,
632#endif // FEATURE_WLAN_SCAN_PNO
633
634 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 /*---------------------------------------------------------------------
636 Indications
637 ---------------------------------------------------------------------*/
638#ifdef WLAN_FEATURE_PACKET_FILTERING
639 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700640 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700641 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700642 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700643 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700644 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700645 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700646 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700647#else
648 NULL,
649 NULL,
650 NULL,
651 NULL,
652#endif // WLAN_FEATURE_PACKET_FILTERING
653
654 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
655 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
656
657 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800658#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700659 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
660#else
661 NULL,
662#endif
663
664#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700665 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
666 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700667#else
668 NULL,
669 NULL,
670#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700671 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
672 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700673#ifdef WLAN_FEATURE_11AC
674 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700675#else
676 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700677#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800678#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800679 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
680#else
681 NULL,
682#endif
schang86c22c42013-03-13 18:41:24 -0700683 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700684#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700685 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700686#else
687 NULL,
688#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530689#ifdef FEATURE_WLAN_TDLS
690 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
691#else
692 NULL,
693#endif
Leo Chang9056f462013-08-01 19:21:11 -0700694#ifdef FEATURE_WLAN_LPHB
695 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
696#else
697 NULL,
698#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530699
700#ifdef FEATURE_WLAN_BATCH_SCAN
701 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
702#else
703 NULL,
704#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800705 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530706
c_hpothu92367912014-05-01 15:18:17 +0530707 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800708
c_hpothu92367912014-05-01 15:18:17 +0530709 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
710
711 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800712
Sunil Duttbd736ed2014-05-26 21:19:41 +0530713
714#ifdef WLAN_FEATURE_LINK_LAYER_STATS
715 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
716 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
717 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
718#else
719 NULL,
720 NULL,
721 NULL,
722#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530723#ifdef WLAN_FEATURE_EXTSCAN
724 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
725 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
726 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
727 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
728 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
729 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
730 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
731 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
732#else
733 NULL,
734 NULL,
735 NULL,
736 NULL,
737 NULL,
738 NULL,
739 NULL,
740 NULL,
741#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530742 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530743
744 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530745
746 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530747 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530748 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530749
Srinivas Dasari32a79262015-02-19 13:04:49 +0530750 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
751
Katya Nigamf0511f62015-05-05 16:40:57 +0530752 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
753 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530754 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700755 /*---------------------------------------------------------------------
756 Indications
757 ---------------------------------------------------------------------*/
758 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
759 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
760 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
761 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
762 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
763 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
764
765 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
766
767 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
768
Jeff Johnson295189b2012-06-20 16:38:30 -0700769 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700770
771#ifdef FEATURE_WLAN_SCAN_PNO
772 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
773#else
774 NULL,
775#endif // FEATURE_WLAN_SCAN_PNO
776
777#ifdef WLAN_WAKEUP_EVENTS
778 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
779#else // WLAN_WAKEUP_EVENTS
780 NULL,
781#endif // WLAN_WAKEUP_EVENTS
782
783 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800784
Viral Modid86bde22012-12-10 13:09:21 -0800785 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530786#ifdef FEATURE_WLAN_TDLS
787 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
788#else
789 NULL,
790#endif
Leo Chang9056f462013-08-01 19:21:11 -0700791
792#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700793 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700794#else
795 NULL,
796#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700797
798 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700799
800 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530801
802#ifdef FEATURE_WLAN_BATCH_SCAN
803 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
804#else
805 NULL,
806#endif
807
Leo Chang0b0e45a2013-12-15 15:18:55 -0800808#ifdef FEATURE_WLAN_CH_AVOID
809 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
810#else
811 NULL,
812#endif /* FEATURE_WLAN_CH_AVOID */
813
Sunil Duttbd736ed2014-05-26 21:19:41 +0530814 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
815#ifdef WLAN_FEATURE_LINK_LAYER_STATS
816 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
817#else
818 NULL,
819#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530820#ifdef WLAN_FEATURE_EXTSCAN
821 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
822 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
823 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
824 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
825 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
826#else
827 NULL,
828 NULL,
829 NULL,
830 NULL,
831 NULL,
832#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530833#ifdef FEATURE_WLAN_TDLS
834 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
835#else
836 NULL,
837#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530838 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530839 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530840 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700841};
842
843
Jeff Johnsone7245742012-09-05 17:12:55 -0700844/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700845 WLAN DAL Global Control Block
846 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700847WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700848static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
849
Jeff Johnsone7245742012-09-05 17:12:55 -0700850const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700851
852/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700853WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700854void* WDI_GET_PAL_CTX( void )
855{
Jeff Johnsone7245742012-09-05 17:12:55 -0700856 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700857}/*WDI_GET_PAL_CTX*/
858
Jeff Johnsone7245742012-09-05 17:12:55 -0700859/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700860 Helper inline converters
861 ============================================================================*/
862/*Convert WDI driver type into HAL driver type*/
863WPT_STATIC WPT_INLINE WDI_Status
864WDI_HAL_2_WDI_STATUS
865(
866 eHalStatus halStatus
867);
868
869/*Convert WDI request type into HAL request type*/
870WPT_STATIC WPT_INLINE tHalHostMsgType
871WDI_2_HAL_REQ_TYPE
872(
873 WDI_RequestEnumType wdiReqType
874);
875
876/*Convert WDI response type into HAL response type*/
877WPT_STATIC WPT_INLINE WDI_ResponseEnumType
878HAL_2_WDI_RSP_TYPE
879(
880 tHalHostMsgType halMsg
881);
882
883/*Convert WDI driver type into HAL driver type*/
884WPT_STATIC WPT_INLINE tDriverType
885WDI_2_HAL_DRV_TYPE
886(
887 WDI_DriverType wdiDriverType
888);
889
890/*Convert WDI stop reason into HAL stop reason*/
891WPT_STATIC WPT_INLINE tHalStopType
892WDI_2_HAL_STOP_REASON
893(
894 WDI_StopType wdiStopType
895);
896
897/*Convert WDI scan mode type into HAL scan mode type*/
898WPT_STATIC WPT_INLINE eHalSysMode
899WDI_2_HAL_SCAN_MODE
900(
901 WDI_ScanMode wdiScanMode
902);
903
904/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700905WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700906WDI_2_HAL_SEC_CH_OFFSET
907(
908 WDI_HTSecondaryChannelOffset wdiSecChOffset
909);
910
911/*Convert WDI BSS type into HAL BSS type*/
912WPT_STATIC WPT_INLINE tSirBssType
913WDI_2_HAL_BSS_TYPE
914(
915 WDI_BssType wdiBSSType
916);
917
918/*Convert WDI NW type into HAL NW type*/
919WPT_STATIC WPT_INLINE tSirNwType
920WDI_2_HAL_NW_TYPE
921(
922 WDI_NwType wdiNWType
923);
924
925/*Convert WDI chanel bonding type into HAL cb type*/
926WPT_STATIC WPT_INLINE ePhyChanBondState
927WDI_2_HAL_CB_STATE
928(
929 WDI_PhyChanBondState wdiCbState
930);
931
932/*Convert WDI chanel bonding type into HAL cb type*/
933WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
934WDI_2_HAL_HT_OPER_MODE
935(
936 WDI_HTOperatingMode wdiHTOperMode
937);
938
939/*Convert WDI mimo PS type into HAL mimo PS type*/
940WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
941WDI_2_HAL_MIMO_PS
942(
943 WDI_HTMIMOPowerSaveState wdiHTOperMode
944);
945
946/*Convert WDI ENC type into HAL ENC type*/
947WPT_STATIC WPT_INLINE tAniEdType
948WDI_2_HAL_ENC_TYPE
949(
950 WDI_EncryptType wdiEncType
951);
952
953/*Convert WDI WEP type into HAL WEP type*/
954WPT_STATIC WPT_INLINE tAniWepType
955WDI_2_HAL_WEP_TYPE
956(
957 WDI_WepType wdiWEPType
958);
959
960/*Convert WDI Link State into HAL Link State*/
961WPT_STATIC WPT_INLINE tSirLinkState
962WDI_2_HAL_LINK_STATE
963(
964 WDI_LinkStateType wdiLinkState
965);
966
Jeff Johnsone7245742012-09-05 17:12:55 -0700967/*Translate a STA Context from WDI into HAL*/
968WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700969void
970WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700971(
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 tConfigStaParams* phalConfigSta,
973 WDI_ConfigStaReqInfoType* pwdiConfigSta
974);
Jeff Johnsone7245742012-09-05 17:12:55 -0700975
976/*Translate a Rate set info from WDI into HAL*/
977WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700978WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700979(
Jeff Johnson295189b2012-06-20 16:38:30 -0700980 tSirMacRateSet* pHalRateSet,
981 WDI_RateSet* pwdiRateSet
982);
983
984/*Translate an EDCA Parameter Record from WDI into HAL*/
985WPT_STATIC WPT_INLINE void
986WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700987(
Jeff Johnson295189b2012-06-20 16:38:30 -0700988 tSirMacEdcaParamRecord* phalEdcaParam,
989 WDI_EdcaParamRecord* pWDIEdcaParam
990);
991
992/*Copy a management frame header from WDI fmt into HAL fmt*/
993WPT_STATIC WPT_INLINE void
994WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
995(
996 tSirMacMgmtHdr* pmacMgmtHdr,
997 WDI_MacMgmtHdr* pwdiMacMgmtHdr
998);
999
1000/*Copy config bss parameters from WDI fmt into HAL fmt*/
1001WPT_STATIC WPT_INLINE void
1002WDI_CopyWDIConfigBSSToHALConfigBSS
1003(
1004 tConfigBssParams* phalConfigBSS,
1005 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1006);
1007
Jeff Johnsone7245742012-09-05 17:12:55 -07001008/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001009 pointed to by user data */
1010WPT_STATIC WPT_INLINE void
1011WDI_ExtractRequestCBFromEvent
1012(
1013 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001014 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001015 void** ppUserData
1016);
1017
1018wpt_uint8
1019WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001020(
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 WDI_ControlBlockType* pWDICtx,
1022 WDI_BSSSessionType** ppSession
1023);
1024
1025void
1026WDI_AddBcastSTAtoSTATable
1027(
1028 WDI_ControlBlockType* pWDICtx,
1029 WDI_AddStaParams * staParams,
1030 wpt_uint16 usBcastStaIdx
1031);
1032
1033WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001034(
Jeff Johnson295189b2012-06-20 16:38:30 -07001035 WDI_ControlBlockType* pWDICtx,
1036 WDI_EventInfoType* pEventData
1037);
1038
1039void
1040WDI_SetPowerStateCb
1041(
1042 wpt_status status,
1043 unsigned int dxePhyAddr,
1044 void *pContext
1045);
1046
Jeff Johnson295189b2012-06-20 16:38:30 -07001047/**
1048 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001049
1050 @param wdiReqMsgId: WDI Message request Id
1051
1052 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001053 @return Result of the function call
1054*/
1055static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1056{
1057 switch (wdiReqMsgId)
1058 {
1059 CASE_RETURN_STRING( WDI_START_REQ );
1060 CASE_RETURN_STRING( WDI_STOP_REQ );
1061 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1062 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1063 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1064 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1065 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1066 CASE_RETURN_STRING( WDI_JOIN_REQ );
1067 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1068 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1069 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1070 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1071 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1072 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1073 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1074 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1075 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1076 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1077 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1078 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1079 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1080 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001081 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001082 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1083 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1084 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1085 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1086 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1087 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1088 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1089 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1090 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1091 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1092 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1093 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001094 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001095 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301096#ifdef FEATURE_WLAN_TDLS
1097 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301098 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301099#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001100 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1101 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1102 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1103 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1104 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1105 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1106 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1107 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1108 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1109 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1110 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1111 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1112 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1113 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1114 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1115 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1116 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1117 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1118 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1119 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1120 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1121 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1122 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1123 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1124 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001125 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001126 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1127 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1128 #ifdef FEATURE_WLAN_SCAN_PNO
1129 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1130 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1131 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1132 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001133#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001134 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001135#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001136 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1137 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1138 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1139 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1140 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1141 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1142 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1143 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1144 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301145 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001146 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001147 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001148#ifdef WLAN_FEATURE_11W
1149 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1150#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301151#ifdef FEATURE_WLAN_BATCH_SCAN
1152 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1153 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1154 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1155#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301156 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1157 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001158 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301159#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1160 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1161 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1162 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1163#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301164#ifdef WLAN_FEATURE_EXTSCAN
1165 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1166 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1167 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1168 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1169 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1170 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1171 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1172 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1173#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301174 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301175 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301176 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301177 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301178 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301179 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301180 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301181 CASE_RETURN_STRING( WDI_MON_START_REQ );
1182 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301183 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 default:
1185 return "Unknown WDI MessageId";
1186 }
1187}
1188
1189
1190
1191/**
1192 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001193
1194 @param wdiRespMsgId: WDI Message response Id
1195
1196 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 @return Result of the function call
1198*/
1199static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1200{
1201 switch (wdiRespMsgId)
1202 {
1203 CASE_RETURN_STRING( WDI_START_RESP );
1204 CASE_RETURN_STRING( WDI_STOP_RESP );
1205 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1206 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1207 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1208 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1209 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1210 CASE_RETURN_STRING( WDI_JOIN_RESP );
1211 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1212 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1213 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1214 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1215 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1216 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1217 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1218 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1219 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1220 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1221 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1222 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1223 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1224 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1225 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1226 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1227 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1228 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1229 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1230 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1231 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1232 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1233 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1234 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1235 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1236 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1237 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301238#ifdef FEATURE_WLAN_TDLS
1239 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301240 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301241 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1242#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1244 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1245 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1246 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1247 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1248 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1249 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1250 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1251 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1252 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1253 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1254 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1255 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1256 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1257 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1258 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1259 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1260 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1261 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1262 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1263 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1264 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1265 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1266 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1267 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001268 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1270 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1271 #ifdef FEATURE_WLAN_SCAN_PNO
1272 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1273 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1274 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1275 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001276#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001277 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001278#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001279 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1280 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1281 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1282 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1283 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1284 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1285 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1286 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001287 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301288#ifdef FEATURE_WLAN_BATCH_SCAN
1289 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1290#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001291 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301292 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301293 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301294#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1295 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1296 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1297 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1298#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301299#ifdef WLAN_FEATURE_EXTSCAN
1300 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1301 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1302 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1303 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1304 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1305 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1306 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1307 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1308 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1309 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1310 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1311 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1312 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1313
1314#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301315 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301316 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301317 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301318 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301319 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001320 default:
1321 return "Unknown WDI MessageId";
1322 }
1323}
1324
1325/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301326 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1327 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301328 @param capabilityBitmap - Base address of a 4 element Bitmap array
1329 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301330 @see
1331 @returns None
1332 */
1333void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1334{
Abhishek Singh08b60122014-02-04 18:05:23 +05301335 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301336 char *pTempCapStr = NULL;
1337 char *pCapStr = NULL;
1338 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1339 if (NULL == pTempCapStr)
1340 {
1341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1342 "Memory allocation failed for CapStr");
1343 return;
1344 }
1345
1346 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301347 for (j = 0; j < 4; j++) {
1348 for (i = 0; i < 32; i++) {
1349 if ((*(capabilityBitmap + j) & (1 << i))) {
1350 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301351 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1352 pCapStr += strlen("MCC");
1353 break;
1354 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1355 pCapStr += strlen("P2P");
1356 break;
1357 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1358 pCapStr += strlen("DOT11AC");
1359 break;
1360 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1361 pCapStr += strlen("SLM_SESSIONIZATION");
1362 break;
1363 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1364 pCapStr += strlen("DOT11AC_OPMODE");
1365 break;
1366 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1367 pCapStr += strlen("SAP32STA");
1368 break;
1369 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1370 pCapStr += strlen("TDLS");
1371 break;
1372 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1373 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1374 break;
1375 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1376 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1377 break;
1378 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1379 pCapStr += strlen("BEACON_OFFLOAD");
1380 break;
1381 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1382 pCapStr += strlen("SCAN_OFFLOAD");
1383 break;
1384 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1385 pCapStr += strlen("ROAM_OFFLOAD");
1386 break;
1387 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1388 pCapStr += strlen("BCN_MISS_OFFLOAD");
1389 break;
1390 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1391 pCapStr += strlen("STA_POWERSAVE");
1392 break;
1393 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1394 pCapStr += strlen("AP_UAPSD");
1395 break;
1396 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1397 pCapStr += strlen("AP_DFS");
1398 break;
1399 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1400 pCapStr += strlen("BLOCKACK");
1401 break;
1402 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1403 pCapStr += strlen("PHY_ERR");
1404 break;
1405 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1406 pCapStr += strlen("BCN_FILTER");
1407 break;
1408 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1409 pCapStr += strlen("RTT");
1410 break;
1411 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1412 pCapStr += strlen("RATECTRL");
1413 break;
1414 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1415 pCapStr += strlen("WOW");
1416 break;
1417 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1418 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1419 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301420 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1421 pCapStr += strlen("FW_IN_TX_PATH");
1422 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301423 case HT40_OBSS_SCAN:
1424 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1425 "%s", "HT40_OBSS_SCAN");
1426 pCapStr += strlen("HT40_OBSS_SCAN");
1427 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301428 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1429 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1430 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1431 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1432 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301433 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1434 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1435 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301436 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1437 pCapStr += strlen("CH_SWITCH_V1");
1438 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301439#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1440 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1441 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1442 break;
1443#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301444#ifdef WLAN_FEATURE_EXTSCAN
1445 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1446 pCapStr += strlen("EXTENDED_SCAN");
1447 break;
1448#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301449 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1450 pCapStr += strlen("MU_MIMO");
1451 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301452
Mihir Shetec34258c2014-07-30 17:50:27 +05301453 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1454 pCapStr += strlen("DYNAMIC_WMM_PS");
1455 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301456 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1457 pCapStr += strlen("FW_STATS");
1458 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301459 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1460 pCapStr += strlen("MAC_SPOOFED_SCAN");
1461 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301462 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1463 pCapStr += strlen("WPS_PRBRSP_TMPL");
1464 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301465 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1466 pCapStr += strlen("BCN_IE_FLT_DELTA");
1467 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301468 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1469 pCapStr += strlen("MGMT_FRAME_LOGGING");
1470 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301471 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1472 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1473 break;
1474
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301475 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1476 pCapStr += strlen("DISA");
1477 break;
1478
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301479 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1480 pCapStr += strlen("TDLS_OFF_CHANNEL");
1481 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301482 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1483 pCapStr += strlen("LOGGING_ENHANCEMENT");
1484 break;
1485
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301486
Abhishek Singh08b60122014-02-04 18:05:23 +05301487 }
1488 *pCapStr++ = ',';
1489 *pCapStr++ = ' ';
1490 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301491 }
1492 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301493 pCapStr -= 2;
1494 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301496 if (pTempCapStr)
1497 {
1498 vos_mem_free(pTempCapStr);
1499 pTempCapStr = NULL;
1500 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301501}
1502
1503/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001505
1506 @param halStatusId: HAL status Id
1507
1508 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001509 @return Result of the function call
1510*/
1511static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1512{
1513 switch (halStatusId)
1514 {
1515 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1516 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1517 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1518 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1519 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1520 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1521 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1522 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1523 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1524 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1525 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1526 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1527 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1528 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1529 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1530 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1531 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1532 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1533 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1534 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1535 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1536 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1537 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1538 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1539 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1540 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1541 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1542 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1543 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1544 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1545 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1546 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1547 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1548 default:
1549 return "Unknown HAL status";
1550 }
1551}
1552
Jeff Johnsone7245742012-09-05 17:12:55 -07001553/*========================================================================
1554
Jeff Johnson295189b2012-06-20 16:38:30 -07001555 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001556
Jeff Johnson295189b2012-06-20 16:38:30 -07001557==========================================================================*/
1558
1559/**
1560 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001561
Jeff Johnson295189b2012-06-20 16:38:30 -07001562 DAL will allocate all the resources it needs. It will open PAL, it will also
1563 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001564 DXE/SMD or any other drivers that they need.
1565
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301566 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 ppWDIGlobalCtx: output pointer of Global Context
1568 pWdiDevCapability: output pointer of device capability
1569
1570 @return Result of the function call
1571*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001572WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001573WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001574(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301575 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001576 void** ppWDIGlobalCtx,
1577 WDI_DeviceCapabilityType* pWdiDevCapability,
1578 unsigned int driverType
1579)
1580{
1581 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001582 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001584 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1586
1587 /*---------------------------------------------------------------------
1588 Sanity check
1589 ---------------------------------------------------------------------*/
1590 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1591 {
1592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1593 "Invalid input parameters in WDI_Init");
1594
Jeff Johnsone7245742012-09-05 17:12:55 -07001595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 }
1597
1598 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001599 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001600 ---------------------------------------------------------------------*/
1601 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1602 {
1603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1604 "WDI module already initialized - return");
1605
Jeff Johnsone7245742012-09-05 17:12:55 -07001606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001607 }
1608
1609 /*Module is now initialized - this flag is to ensure the fact that multiple
1610 init will not happen on WDI
1611 !! - potential race does exist because read and set are not atomic,
1612 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001613 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001614
1615 /*Setup the control block */
1616 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301617 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001618
1619 /*Setup the STA Table*/
1620 wdiStatus = WDI_STATableInit(&gWDICb);
1621 if ( WDI_STATUS_SUCCESS != wdiStatus )
1622 {
1623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1624 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001625 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 goto fail_STATableInit;
1627 }
1628
1629 /*------------------------------------------------------------------------
1630 Open the PAL
1631 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301632 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1634 {
1635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1636 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001637 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001638 goto fail_wpalOpen;
1639 }
1640
1641 /*Initialize main synchro mutex - it will be used to ensure integrity of
1642 the main WDI Control Block*/
1643 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1644 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1645 {
1646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1647 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001648 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 goto fail_mutex;
1650 }
1651
1652 /*Initialize the response timer - it will be used to time all messages
1653 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001654 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1655 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 &gWDICb);
1657 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1658 {
1659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1660 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001661 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 goto fail_timer;
1663 }
1664
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001665 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1666 WDI_SsrTimerCB,
1667 &gWDICb);
1668 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1669 {
1670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1671 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001672 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001673 goto fail_timer2;
1674 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001675 /* Initialize the WDI Pending Request Queue*/
1676 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1677 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1678 {
1679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1680 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001681 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 goto fail_pend_queue;
1683 }
1684
1685 /*Init WDI Pending Assoc Id Queue */
1686 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1687 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1688 {
1689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1690 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001691 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 goto fail_assoc_queue;
1693 }
1694
1695 /*Initialize the BSS sessions pending Queue */
1696 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1697 {
1698 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1699 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1700 {
1701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1702 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001703 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 goto fail_bss_queue;
1705 }
1706 }
1707
1708 /*Indicate the control block is sufficiently initialized for callbacks*/
1709 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1710
1711 /*------------------------------------------------------------------------
1712 Initialize the Data Path Utility Module
1713 ------------------------------------------------------------------------*/
1714 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1715 if ( WDI_STATUS_SUCCESS != wdiStatus )
1716 {
1717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1718 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001719 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 goto fail_dp_util_init;
1721 }
1722
1723 /* Init Set power state event */
1724 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001725 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001726 {
1727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1728 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001729 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 goto fail_power_event;
1731 }
1732
1733 /* Init WCTS action event */
1734 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 {
1737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1738 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001739 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 goto fail_wcts_event;
1741 }
1742
1743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 ------------------------------------------------------------------------*/
1746 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1747 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001748 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wctsCBs.wctsRxMsgCBData = &gWDICb;
1750
Jeff Johnsone7245742012-09-05 17:12:55 -07001751 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 WDI_CT_CHANNEL_SIZE,
1754 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001755
1756 if ( NULL == gWDICb.wctsHandle )
1757 {
1758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001759 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 goto fail_wcts_open;
1761 }
1762
1763 gWDICb.driverMode = (tDriverType)driverType;
1764 /* FTM mode not need to open Transport Driver */
1765 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001766 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001767 /*------------------------------------------------------------------------
1768 Open the Data Transport
1769 ------------------------------------------------------------------------*/
1770 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1771 {
1772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001773 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001774 goto fail_wdts_open;
1775 }
1776 }
1777
1778 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001779 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301780 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 /*Send the context as a ptr to the global WDI Control Block*/
1782 *ppWDIGlobalCtx = &gWDICb;
1783
1784 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001785 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1787 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1788 return WDI_STATUS_SUCCESS;
1789
1790 /* ERROR handlers
1791 Undo everything that completed successfully */
1792
1793 fail_wdts_open:
1794 {
1795 wpt_status eventStatus;
1796
1797 /* Closing WCTS in this scenario is tricky since it has to close
1798 the SMD channel and then we get notified asynchronously when
1799 the channel has been closed. So we take some of the logic from
1800 the "normal" close procedure in WDI_Close()
1801 */
1802
1803 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001804 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001805 {
1806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001807 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 }
1809
1810 WCTS_CloseTransport(gWDICb.wctsHandle);
1811
1812 /* Wait for WCTS to close the control transport. If we were able
1813 to reset the event flag, then we'll wait for the event,
1814 otherwise we'll wait for a maximum amount of time required for
1815 the channel to be closed */
1816 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1817 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001818 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 WDI_WCTS_ACTION_TIMEOUT);
1820 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001823 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 }
1825 }
1826 else
1827 {
1828 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1829 }
1830 }
1831 fail_wcts_open:
1832 wpalEventDelete(&gWDICb.wctsActionEvent);
1833 fail_wcts_event:
1834 wpalEventDelete(&gWDICb.setPowerStateEvent);
1835 fail_power_event:
1836 WDI_DP_UtilsExit(&gWDICb);
1837 fail_dp_util_init:
1838 gWDICb.magic = 0;
1839 fail_bss_queue:
1840 /* entries 0 thru i-1 were successfully initialized */
1841 while (0 < i)
1842 {
1843 i--;
1844 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1845 }
1846 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1847 fail_assoc_queue:
1848 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1849 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001850 wpalTimerDelete(&gWDICb.ssrTimer);
1851 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001852 wpalTimerDelete(&gWDICb.wptResponseTimer);
1853 fail_timer:
1854 wpalMutexDelete(&gWDICb.wptMutex);
1855 fail_mutex:
1856 wpalClose(gWDICb.pPALContext);
1857 fail_wpalOpen:
1858 WDI_STATableClose(&gWDICb);
1859 fail_STATableInit:
1860 gWDIInitialized = eWLAN_PAL_FALSE;
1861
1862 return WDI_STATUS_E_FAILURE;
1863
1864}/*WDI_Init*/;
1865
1866/**
1867 @brief WDI_Start will be called when the upper MAC is ready to
1868 commence operation with the WLAN Device. Upon the call
1869 of this API the WLAN DAL will pack and send a HAL Start
1870 message to the lower RIVA sub-system if the SMD channel
1871 has been fully opened and the RIVA subsystem is up.
1872
1873 If the RIVA sub-system is not yet up and running DAL
1874 will queue the request for Open and will wait for the
1875 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001876 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001877
1878 WDI_Init must have been called.
1879
Jeff Johnsone7245742012-09-05 17:12:55 -07001880 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001882
Jeff Johnson295189b2012-06-20 16:38:30 -07001883 wdiStartRspCb: callback for passing back the response of
1884 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001885
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001887 callback
1888
Jeff Johnson295189b2012-06-20 16:38:30 -07001889 @see WDI_Start
1890 @return Result of the function call
1891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001893WDI_Start
1894(
1895 WDI_StartReqParamsType* pwdiStartParams,
1896 WDI_StartRspCb wdiStartRspCb,
1897 void* pUserData
1898)
1899{
1900 WDI_EventInfoType wdiEventData;
1901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1902
1903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 ------------------------------------------------------------------------*/
1906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1907 {
1908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1909 "WDI API call before module is initialized - Fail request");
1910
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 }
1913
1914 /*------------------------------------------------------------------------
1915 Fill in Event data and post to the Main FSM
1916 ------------------------------------------------------------------------*/
1917 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 wdiEventData.pEventData = pwdiStartParams;
1919 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1920 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001921 wdiEventData.pUserData = pUserData;
1922
1923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1924
1925}/*WDI_Start*/
1926
1927/**
1928 @brief WDI_Stop will be called when the upper MAC is ready to
1929 stop any operation with the WLAN Device. Upon the call
1930 of this API the WLAN DAL will pack and send a HAL Stop
1931 message to the lower RIVA sub-system if the DAL Core is
1932 in started state.
1933
1934 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001935
1936 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001937
1938 WDI_Start must have been called.
1939
Jeff Johnsone7245742012-09-05 17:12:55 -07001940 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001942
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 wdiStopRspCb: callback for passing back the response of
1944 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001945
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 callback
1948
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 @see WDI_Start
1950 @return Result of the function call
1951*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001953WDI_Stop
1954(
1955 WDI_StopReqParamsType* pwdiStopParams,
1956 WDI_StopRspCb wdiStopRspCb,
1957 void* pUserData
1958)
1959{
1960 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001961 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1963
1964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001966 ------------------------------------------------------------------------*/
1967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1968 {
1969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1970 "WDI API call before module is initialized - Fail request");
1971
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 }
1974
Jeff Johnson43971f52012-07-17 12:26:56 -07001975 /*Access to the global state must be locked before cleaning */
1976 wpalMutexAcquire(&pWDICtx->wptMutex);
1977
1978 /*Clear all pending request*/
1979 WDI_ClearPendingRequests(pWDICtx);
1980
1981 /*We have completed cleaning unlock now*/
1982 wpalMutexRelease(&pWDICtx->wptMutex);
1983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 /* Free the global variables */
1985 wpalMemoryFree(gpHostWlanFeatCaps);
1986 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001987 gpHostWlanFeatCaps = NULL;
1988 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001989
1990 /*------------------------------------------------------------------------
1991 Fill in Event data and post to the Main FSM
1992 ------------------------------------------------------------------------*/
1993 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 wdiEventData.pEventData = pwdiStopParams;
1995 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1996 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001997 wdiEventData.pUserData = pUserData;
1998
1999 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2000
2001}/*WDI_Stop*/
2002
2003
2004
2005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 needs to interact with DAL. DAL will free its control
2008 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002009
2010 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002011
2012 WDI_Stop must have been called.
2013
2014 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002015
Jeff Johnson295189b2012-06-20 16:38:30 -07002016 @see WDI_Stop
2017 @return Result of the function call
2018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002020WDI_Close
2021(
2022 void
2023)
2024{
2025 wpt_uint8 i;
2026 WDI_EventInfoType wdiEventData;
2027 wpt_status wptStatus;
2028 wpt_status eventStatus;
2029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2030
2031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002032 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002033 ------------------------------------------------------------------------*/
2034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2035 {
2036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2037 "WDI API call before module is initialized - Fail request");
2038
Jeff Johnsone7245742012-09-05 17:12:55 -07002039 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 }
2041
2042 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2043 (the control transport will be closed by the FSM and we'll want
2044 to wait until that completes)*/
2045 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002046 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002047 {
2048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002049 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 /* fall through and try to finish closing via the FSM */
2051 }
2052
2053 /*------------------------------------------------------------------------
2054 Fill in Event data and post to the Main FSM
2055 ------------------------------------------------------------------------*/
2056 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002057 wdiEventData.pEventData = NULL;
2058 wdiEventData.uEventDataSize = 0;
2059 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 wdiEventData.pUserData = NULL;
2061
2062 gWDIInitialized = eWLAN_PAL_FALSE;
2063
2064 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2065
2066 /*Wait for WCTS to close the control transport
2067 (but only if we were able to reset the event flag*/
2068 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2069 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 WDI_WCTS_ACTION_TIMEOUT);
2072 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2073 {
2074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002075 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002076 }
2077 }
2078
2079 /* Destroy the WCTS action event */
2080 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2081 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2082 {
2083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2084 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 }
2087
2088 /* Destroy the Set Power State event */
2089 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2090 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2091 {
2092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2093 "WDI Close failed to destroy an event");
2094
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 }
2097
2098 /*------------------------------------------------------------------------
2099 Closes the Data Path Utility Module
2100 ------------------------------------------------------------------------*/
2101 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2102 {
2103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2104 "WDI Init failed to close the DP Util Module");
2105
Jeff Johnsone7245742012-09-05 17:12:55 -07002106 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 }
2108
2109 /*destroy the BSS sessions pending Queue */
2110 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2111 {
2112 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2113 }
2114
2115 /* destroy the WDI Pending Assoc Id Request Queue*/
2116 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2117
2118 /* destroy the WDI Pending Request Queue*/
2119 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002120
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 /*destroy the response timer */
2122 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2123
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002124 /*destroy the SSR timer */
2125 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2126
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 /*invalidate the main synchro mutex */
2128 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2129 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2130 {
2131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2132 "Failed to delete mutex %d", wptStatus);
2133 WDI_ASSERT(0);
2134 }
2135
2136 /*Clear control block. note that this will clear the "magic"
2137 which will inhibit all asynchronous callbacks*/
2138 WDI_CleanCB(&gWDICb);
2139
2140 return wptStatus;
2141
2142}/*WDI_Close*/
2143
2144/**
2145 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2146 This will do most of the WDI stop & close
2147 operations without doing any handshake with Riva
2148
2149 This will also make sure that the control transport
2150 will NOT be closed.
2151
2152 This request will not be queued.
2153
2154
2155 WDI_Start must have been called.
2156
2157 @param closeTransport: Close control channel if this is set
2158
2159 @return Result of the function call
2160*/
2161WDI_Status
2162WDI_Shutdown
2163(
2164 wpt_boolean closeTransport
2165)
2166{
2167 WDI_EventInfoType wdiEventData;
2168 wpt_status wptStatus;
2169 int i = 0;
2170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2171
2172 /*------------------------------------------------------------------------
2173 Sanity Check
2174 ------------------------------------------------------------------------*/
2175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2176 {
2177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2178 "WDI API call before module is initialized - Fail request");
2179
2180 return WDI_STATUS_E_NOT_ALLOWED;
2181 }
2182
2183 /*------------------------------------------------------------------------
2184 Fill in Event data and post to the Main FSM
2185 ------------------------------------------------------------------------*/
2186 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2187 wdiEventData.pEventData = NULL;
2188 wdiEventData.uEventDataSize = 0;
2189
2190 /* Shutdown will not be queued, if the state is busy timer will be
2191 * stopped & this message will be processed.*/
2192 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2193 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2194 {
2195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002196 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 }
2198 /* Destroy the Set Power State event */
2199 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2200 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2201 {
2202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2203 "WDI Close failed to destroy an event");
2204
2205 WDI_ASSERT(0);
2206 }
2207 /*------------------------------------------------------------------------
2208 Closes the Data Path Utility Module
2209 ------------------------------------------------------------------------*/
2210 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2211 {
2212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2213 "WDI Init failed to close the DP Util Module");
2214
2215 WDI_ASSERT(0);
2216 }
2217 if ( closeTransport )
2218 {
2219 /* Close control transport, called from module unload */
2220 WCTS_CloseTransport(gWDICb.wctsHandle);
2221 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002222 else
2223 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002224 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002225 the pending messages in the transport queue */
2226 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2227 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 /*destroy the BSS sessions pending Queue */
2229 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2230 {
2231 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2232 }
2233
2234 /* destroy the WDI Pending Assoc Id Request Queue*/
2235 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2236 /* destroy the WDI Pending Request Queue*/
2237 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2238 /*destroy the response timer */
2239 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002240 /*destroy the SSR timer */
2241 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002242
2243 /*invalidate the main synchro mutex */
2244 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2245 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2246 {
2247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002248 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 WDI_ASSERT(0);
2250 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002251 /* Free the global variables */
2252 wpalMemoryFree(gpHostWlanFeatCaps);
2253 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002254 gpHostWlanFeatCaps = NULL;
2255 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 /*Clear control block. note that this will clear the "magic"
2257 which will inhibit all asynchronous callbacks*/
2258 WDI_CleanCB(&gWDICb);
2259 return wptStatus;
2260
2261}/*WDI_Shutdown*/
2262
2263
Jeff Johnsone7245742012-09-05 17:12:55 -07002264/*========================================================================
2265
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002267
Jeff Johnson295189b2012-06-20 16:38:30 -07002268==========================================================================*/
2269
2270/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 the WLAN Device to get ready for a scan procedure. Upon
2273 the call of this API the WLAN DAL will pack and send a
2274 HAL Init Scan request message to the lower RIVA
2275 sub-system if DAL is in state STARTED.
2276
2277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002279
2280 WDI_Start must have been called.
2281
2282 @param wdiInitScanParams: the init scan parameters as specified
2283 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002284
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 wdiInitScanRspCb: callback for passing back the response
2286 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002287
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002289 callback
2290
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 @see WDI_Start
2292 @return Result of the function call
2293*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002295WDI_InitScanReq
2296(
2297 WDI_InitScanReqParamsType* pwdiInitScanParams,
2298 WDI_InitScanRspCb wdiInitScanRspCb,
2299 void* pUserData
2300)
2301{
2302 WDI_EventInfoType wdiEventData;
2303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2304
2305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 ------------------------------------------------------------------------*/
2308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2309 {
2310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2311 "WDI API call before module is initialized - Fail request");
2312
Jeff Johnsone7245742012-09-05 17:12:55 -07002313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 }
2315
2316 /*------------------------------------------------------------------------
2317 Fill in Event data and post to the Main FSM
2318 ------------------------------------------------------------------------*/
2319 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002320 wdiEventData.pEventData = pwdiInitScanParams;
2321 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2322 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 wdiEventData.pUserData = pUserData;
2324
2325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2326
2327}/*WDI_InitScanReq*/
2328
2329/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 wishes to change the Scan channel on the WLAN Device.
2332 Upon the call of this API the WLAN DAL will pack and
2333 send a HAL Start Scan request message to the lower RIVA
2334 sub-system if DAL is in state STARTED.
2335
2336 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002338
2339 WDI_InitScanReq must have been called.
2340
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002343
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 wdiStartScanRspCb: callback for passing back the
2345 response of the start scan operation received from the
2346 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002347
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002349 callback
2350
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 @see WDI_InitScanReq
2352 @return Result of the function call
2353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002355WDI_StartScanReq
2356(
2357 WDI_StartScanReqParamsType* pwdiStartScanParams,
2358 WDI_StartScanRspCb wdiStartScanRspCb,
2359 void* pUserData
2360)
2361{
2362 WDI_EventInfoType wdiEventData;
2363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2364
2365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 ------------------------------------------------------------------------*/
2368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2369 {
2370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2371 "WDI API call before module is initialized - Fail request");
2372
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 }
2375
2376 /*------------------------------------------------------------------------
2377 Fill in Event data and post to the Main FSM
2378 ------------------------------------------------------------------------*/
2379 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 wdiEventData.pEventData = pwdiStartScanParams;
2381 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2382 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 wdiEventData.pUserData = pUserData;
2384
2385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2386
2387}/*WDI_StartScanReq*/
2388
2389
2390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002391 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wants to end scanning for a particular channel that it
2393 had set before by calling Scan Start on the WLAN Device.
2394 Upon the call of this API the WLAN DAL will pack and
2395 send a HAL End Scan request message to the lower RIVA
2396 sub-system if DAL is in state STARTED.
2397
2398 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002399 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002400
2401 WDI_StartScanReq must have been called.
2402
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002404 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002405
Jeff Johnson295189b2012-06-20 16:38:30 -07002406 wdiEndScanRspCb: callback for passing back the response
2407 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002408
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 callback
2411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 @see WDI_StartScanReq
2413 @return Result of the function call
2414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002416WDI_EndScanReq
2417(
2418 WDI_EndScanReqParamsType* pwdiEndScanParams,
2419 WDI_EndScanRspCb wdiEndScanRspCb,
2420 void* pUserData
2421)
2422{
2423 WDI_EventInfoType wdiEventData;
2424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2425
2426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 ------------------------------------------------------------------------*/
2429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2430 {
2431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2432 "WDI API call before module is initialized - Fail request");
2433
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 }
2436
2437 /*------------------------------------------------------------------------
2438 Fill in Event data and post to the Main FSM
2439 ------------------------------------------------------------------------*/
2440 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002441 wdiEventData.pEventData = pwdiEndScanParams;
2442 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2443 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 wdiEventData.pUserData = pUserData;
2445
2446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2447
2448}/*WDI_EndScanReq*/
2449
2450
2451/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 completed the scan process on the WLAN Device. Upon the
2454 call of this API the WLAN DAL will pack and send a HAL
2455 Finish Scan Request request message to the lower RIVA
2456 sub-system if DAL is in state STARTED.
2457
2458 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002460
2461 WDI_InitScanReq must have been called.
2462
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002465
Jeff Johnson295189b2012-06-20 16:38:30 -07002466 wdiFinishScanRspCb: callback for passing back the
2467 response of the finish scan operation received from the
2468 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002469
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 callback
2472
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 @see WDI_InitScanReq
2474 @return Result of the function call
2475*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002476WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002477WDI_FinishScanReq
2478(
2479 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2480 WDI_FinishScanRspCb wdiFinishScanRspCb,
2481 void* pUserData
2482)
2483{
2484 WDI_EventInfoType wdiEventData;
2485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2486
2487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 ------------------------------------------------------------------------*/
2490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2491 {
2492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2493 "WDI API call before module is initialized - Fail request");
2494
Jeff Johnsone7245742012-09-05 17:12:55 -07002495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 }
2497
2498 /*------------------------------------------------------------------------
2499 Fill in Event data and post to the Main FSM
2500 ------------------------------------------------------------------------*/
2501 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 wdiEventData.pEventData = pwdiFinishScanParams;
2503 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2504 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 wdiEventData.pUserData = pUserData;
2506
2507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2508
2509}/*WDI_FinishScanReq*/
2510
Jeff Johnsone7245742012-09-05 17:12:55 -07002511/*========================================================================
2512
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515==========================================================================*/
2516
2517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 to start an association procedure to a BSS. Upon the
2520 call of this API the WLAN DAL will pack and send a HAL
2521 Join request message to the lower RIVA sub-system if
2522 DAL is in state STARTED.
2523
2524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002526
2527 WDI_Start must have been called.
2528
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 wdiJoinRspCb: callback for passing back the response of
2533 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 callback
2537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 @see WDI_Start
2539 @return Result of the function call
2540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002542WDI_JoinReq
2543(
2544 WDI_JoinReqParamsType* pwdiJoinParams,
2545 WDI_JoinRspCb wdiJoinRspCb,
2546 void* pUserData
2547)
2548{
2549 WDI_EventInfoType wdiEventData;
2550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2551
2552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 ------------------------------------------------------------------------*/
2555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2556 {
2557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2558 "WDI API call before module is initialized - Fail request");
2559
Jeff Johnsone7245742012-09-05 17:12:55 -07002560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002561 }
2562
2563 /*------------------------------------------------------------------------
2564 Fill in Event data and post to the Main FSM
2565 ------------------------------------------------------------------------*/
2566 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 wdiEventData.pEventData = pwdiJoinParams;
2568 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2569 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 wdiEventData.pUserData = pUserData;
2571
2572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2573
2574}/*WDI_JoinReq*/
2575
2576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 wishes to configure the newly acquired or in process of
2579 being acquired BSS to the HW . Upon the call of this API
2580 the WLAN DAL will pack and send a HAL Config BSS request
2581 message to the lower RIVA sub-system if DAL is in state
2582 STARTED.
2583
2584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002586
2587 WDI_JoinReq must have been called.
2588
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002590 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002591
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 wdiConfigBSSRspCb: callback for passing back the
2593 response of the config BSS operation received from the
2594 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002595
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 callback
2598
Jeff Johnson295189b2012-06-20 16:38:30 -07002599 @see WDI_JoinReq
2600 @return Result of the function call
2601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002603WDI_ConfigBSSReq
2604(
2605 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2606 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2607 void* pUserData
2608)
2609{
2610 WDI_EventInfoType wdiEventData;
2611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2612
2613 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002614 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 ------------------------------------------------------------------------*/
2616 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2617 {
2618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2619 "WDI API call before module is initialized - Fail request");
2620
Jeff Johnsone7245742012-09-05 17:12:55 -07002621 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 }
2623
2624 /*------------------------------------------------------------------------
2625 Fill in Event data and post to the Main FSM
2626 ------------------------------------------------------------------------*/
2627 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002628 wdiEventData.pEventData = pwdiConfigBSSParams;
2629 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2630 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 wdiEventData.pUserData = pUserData;
2632
2633 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2634
2635}/*WDI_ConfigBSSReq*/
2636
2637/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 disassociating from the BSS and wishes to notify HW.
2640 Upon the call of this API the WLAN DAL will pack and
2641 send a HAL Del BSS request message to the lower RIVA
2642 sub-system if DAL is in state STARTED.
2643
2644 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002645 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002646
2647 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2648
Jeff Johnsone7245742012-09-05 17:12:55 -07002649 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 wdiDelBSSRspCb: callback for passing back the response
2653 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002656 callback
2657
2658 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 @return Result of the function call
2660*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002661WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002662WDI_DelBSSReq
2663(
2664 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2665 WDI_DelBSSRspCb wdiDelBSSRspCb,
2666 void* pUserData
2667)
2668{
2669 WDI_EventInfoType wdiEventData;
2670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2671
2672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 ------------------------------------------------------------------------*/
2675 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2676 {
2677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2678 "WDI API call before module is initialized - Fail request");
2679
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002681 }
2682
2683 /*------------------------------------------------------------------------
2684 Fill in Event data and post to the Main FSM
2685 ------------------------------------------------------------------------*/
2686 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 wdiEventData.pEventData = pwdiDelBSSParams;
2688 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2689 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 wdiEventData.pUserData = pUserData;
2691
2692 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2693
2694}/*WDI_DelBSSReq*/
2695
2696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 associated to a BSS and wishes to configure HW for
2699 associated state. Upon the call of this API the WLAN DAL
2700 will pack and send a HAL Post Assoc request message to
2701 the lower RIVA sub-system if DAL is in state STARTED.
2702
2703 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002705
2706 WDI_JoinReq must have been called.
2707
2708 @param wdiPostAssocReqParams: the assoc parameters as specified
2709 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002710
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 wdiPostAssocRspCb: callback for passing back the
2712 response of the post assoc operation received from the
2713 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002714
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002716 callback
2717
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 @see WDI_JoinReq
2719 @return Result of the function call
2720*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002721WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002722WDI_PostAssocReq
2723(
2724 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2725 WDI_PostAssocRspCb wdiPostAssocRspCb,
2726 void* pUserData
2727)
2728{
2729 WDI_EventInfoType wdiEventData;
2730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2731
2732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 ------------------------------------------------------------------------*/
2735 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2736 {
2737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2738 "WDI API call before module is initialized - Fail request");
2739
Jeff Johnsone7245742012-09-05 17:12:55 -07002740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 }
2742
2743 /*------------------------------------------------------------------------
2744 Fill in Event data and post to the Main FSM
2745 ------------------------------------------------------------------------*/
2746 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002747 wdiEventData.pEventData = pwdiPostAssocReqParams;
2748 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2749 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 wdiEventData.pUserData = pUserData;
2751
2752 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2753
2754}/*WDI_PostAssocReq*/
2755
2756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002757 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002758 association with another STA has ended and the station
2759 must be deleted from HW. Upon the call of this API the
2760 WLAN DAL will pack and send a HAL Del STA request
2761 message to the lower RIVA sub-system if DAL is in state
2762 STARTED.
2763
2764 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002765 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002766
2767 WDI_PostAssocReq must have been called.
2768
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002771
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 wdiDelSTARspCb: callback for passing back the response
2773 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002774
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 callback
2777
Jeff Johnson295189b2012-06-20 16:38:30 -07002778 @see WDI_PostAssocReq
2779 @return Result of the function call
2780*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002781WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002782WDI_DelSTAReq
2783(
2784 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2785 WDI_DelSTARspCb wdiDelSTARspCb,
2786 void* pUserData
2787)
2788{
2789 WDI_EventInfoType wdiEventData;
2790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2791
2792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002793 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002794 ------------------------------------------------------------------------*/
2795 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2796 {
2797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2798 "WDI API call before module is initialized - Fail request");
2799
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 }
2802
2803 /*------------------------------------------------------------------------
2804 Fill in Event data and post to the Main FSM
2805 ------------------------------------------------------------------------*/
2806 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002807 wdiEventData.pEventData = pwdiDelSTAParams;
2808 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2809 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002810 wdiEventData.pUserData = pUserData;
2811
2812 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2813
2814}/*WDI_DelSTAReq*/
2815
Jeff Johnsone7245742012-09-05 17:12:55 -07002816/*========================================================================
2817
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820==========================================================================*/
2821
2822/**
2823 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2824 install a BSS encryption key on the HW. Upon the call of this
2825 API the WLAN DAL will pack and send a Set BSS Key request
2826 message to the lower RIVA sub-system if DAL is in state
2827 STARTED.
2828
2829 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002830 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002831
2832 WDI_PostAssocReq must have been called.
2833
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002836
Jeff Johnson295189b2012-06-20 16:38:30 -07002837 wdiSetBSSKeyRspCb: callback for passing back the
2838 response of the set BSS Key operation received from the
2839 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002840
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 callback
2843
Jeff Johnson295189b2012-06-20 16:38:30 -07002844 @see WDI_PostAssocReq
2845 @return Result of the function call
2846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002848WDI_SetBSSKeyReq
2849(
2850 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2851 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2852 void* pUserData
2853)
2854{
2855 WDI_EventInfoType wdiEventData;
2856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2857
2858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 ------------------------------------------------------------------------*/
2861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2862 {
2863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2864 "WDI API call before module is initialized - Fail request");
2865
Jeff Johnsone7245742012-09-05 17:12:55 -07002866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 }
2868
2869 /*------------------------------------------------------------------------
2870 Fill in Event data and post to the Main FSM
2871 ------------------------------------------------------------------------*/
2872 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002873 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2874 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2875 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 wdiEventData.pUserData = pUserData;
2877
2878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2879
2880}/*WDI_SetBSSKeyReq*/
2881
2882/**
2883 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2884 uninstall a BSS key from HW. Upon the call of this API the
2885 WLAN DAL will pack and send a HAL Remove BSS Key request
2886 message to the lower RIVA sub-system if DAL is in state
2887 STARTED.
2888
2889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002891
2892 WDI_SetBSSKeyReq must have been called.
2893
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 wdiRemoveBSSKeyRspCb: callback for passing back the
2898 response of the remove BSS key operation received from
2899 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002900
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002902 callback
2903
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 @see WDI_SetBSSKeyReq
2905 @return Result of the function call
2906*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002907WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002908WDI_RemoveBSSKeyReq
2909(
2910 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2911 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2912 void* pUserData
2913)
2914{
2915 WDI_EventInfoType wdiEventData;
2916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2917
2918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 ------------------------------------------------------------------------*/
2921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2922 {
2923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2924 "WDI API call before module is initialized - Fail request");
2925
Jeff Johnsone7245742012-09-05 17:12:55 -07002926 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002927 }
2928
2929 /*------------------------------------------------------------------------
2930 Fill in Event data and post to the Main FSM
2931 ------------------------------------------------------------------------*/
2932 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002933 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2934 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2935 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002936 wdiEventData.pUserData = pUserData;
2937
2938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2939
2940}/*WDI_RemoveBSSKeyReq*/
2941
2942
2943/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002944 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 ready to install a STA(ast) encryption key in HW. Upon
2946 the call of this API the WLAN DAL will pack and send a
2947 HAL Set STA Key request message to the lower RIVA
2948 sub-system if DAL is in state STARTED.
2949
2950 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002951 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002952
2953 WDI_PostAssocReq must have been called.
2954
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002957
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 wdiSetSTAKeyRspCb: callback for passing back the
2959 response of the set STA key operation received from the
2960 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002961
Jeff Johnson295189b2012-06-20 16:38:30 -07002962 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002963 callback
2964
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 @see WDI_PostAssocReq
2966 @return Result of the function call
2967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002969WDI_SetSTAKeyReq
2970(
2971 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2972 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2973 void* pUserData
2974)
2975{
2976 WDI_EventInfoType wdiEventData;
2977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2978
2979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 ------------------------------------------------------------------------*/
2982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2983 {
2984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2985 "WDI API call before module is initialized - Fail request");
2986
Jeff Johnsone7245742012-09-05 17:12:55 -07002987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002988 }
2989
2990 /*------------------------------------------------------------------------
2991 Fill in Event data and post to the Main FSM
2992 ------------------------------------------------------------------------*/
2993 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002994 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2995 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2996 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002997 wdiEventData.pUserData = pUserData;
2998
2999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3000
3001}/*WDI_SetSTAKeyReq*/
3002
3003
3004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003005 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wants to uninstall a previously set STA key in HW. Upon
3007 the call of this API the WLAN DAL will pack and send a
3008 HAL Remove STA Key request message to the lower RIVA
3009 sub-system if DAL is in state STARTED.
3010
3011 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003012 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003013
3014 WDI_SetSTAKeyReq must have been called.
3015
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003018
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 wdiRemoveSTAKeyRspCb: callback for passing back the
3020 response of the remove STA key operation received from
3021 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003022
Jeff Johnson295189b2012-06-20 16:38:30 -07003023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 callback
3025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 @see WDI_SetSTAKeyReq
3027 @return Result of the function call
3028*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003030WDI_RemoveSTAKeyReq
3031(
3032 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3033 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3034 void* pUserData
3035)
3036{
3037 WDI_EventInfoType wdiEventData;
3038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3039
3040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003042 ------------------------------------------------------------------------*/
3043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3044 {
3045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3046 "WDI API call before module is initialized - Fail request");
3047
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003049 }
3050
3051 /*------------------------------------------------------------------------
3052 Fill in Event data and post to the Main FSM
3053 ------------------------------------------------------------------------*/
3054 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3056 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3057 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003058 wdiEventData.pUserData = pUserData;
3059
3060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3061
3062}/*WDI_RemoveSTAKeyReq*/
3063
3064
3065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 wants to install a STA Bcast encryption key on the HW.
3068 Upon the call of this API the WLAN DAL will pack and
3069 send a HAL Start request message to the lower RIVA
3070 sub-system if DAL is in state STARTED.
3071
3072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003074
3075 WDI_PostAssocReq must have been called.
3076
Jeff Johnsone7245742012-09-05 17:12:55 -07003077 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003079
Jeff Johnson295189b2012-06-20 16:38:30 -07003080 wdiSetSTABcastKeyRspCb: callback for passing back the
3081 response of the set BSS Key operation received from the
3082 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003083
Jeff Johnson295189b2012-06-20 16:38:30 -07003084 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 callback
3086
Jeff Johnson295189b2012-06-20 16:38:30 -07003087 @see WDI_PostAssocReq
3088 @return Result of the function call
3089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003091WDI_SetSTABcastKeyReq
3092(
3093 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3094 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3095 void* pUserData
3096)
3097
3098{
3099 WDI_EventInfoType wdiEventData;
3100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3101
3102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 ------------------------------------------------------------------------*/
3105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3106 {
3107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3108 "WDI API call before module is initialized - Fail request");
3109
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 }
3112
3113 /*------------------------------------------------------------------------
3114 Fill in Event data and post to the Main FSM
3115 ------------------------------------------------------------------------*/
3116 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3118 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3119 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 wdiEventData.pUserData = pUserData;
3121
3122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3123
3124}/*WDI_SetSTABcastKeyReq*/
3125
3126/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 MAC wants to uninstall a STA Bcast key from HW. Upon the
3129 call of this API the WLAN DAL will pack and send a HAL
3130 Remove STA Bcast Key request message to the lower RIVA
3131 sub-system if DAL is in state STARTED.
3132
3133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003135
3136 WDI_SetSTABcastKeyReq must have been called.
3137
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 parameters as specified by the Device
3140 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003141
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3143 response of the remove STA Bcast key operation received
3144 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003145
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 callback
3148
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 @see WDI_SetSTABcastKeyReq
3150 @return Result of the function call
3151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003153WDI_RemoveSTABcastKeyReq
3154(
3155 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3156 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3157 void* pUserData
3158)
3159{
3160 WDI_EventInfoType wdiEventData;
3161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3162
3163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 ------------------------------------------------------------------------*/
3166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3167 {
3168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3169 "WDI API call before module is initialized - Fail request");
3170
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 }
3173
3174 /*------------------------------------------------------------------------
3175 Fill in Event data and post to the Main FSM
3176 ------------------------------------------------------------------------*/
3177 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3179 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3180 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 wdiEventData.pUserData = pUserData;
3182
3183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3184
3185}/*WDI_RemoveSTABcastKeyReq*/
3186
3187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 MAC wants to set Max Tx Power to HW. Upon the
3190 call of this API the WLAN DAL will pack and send a HAL
3191 Remove STA Bcast Key request message to the lower RIVA
3192 sub-system if DAL is in state STARTED.
3193
3194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003196
3197 WDI_SetSTABcastKeyReq must have been called.
3198
Jeff Johnsone7245742012-09-05 17:12:55 -07003199 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003200 parameters as specified by the Device
3201 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003202
Jeff Johnson295189b2012-06-20 16:38:30 -07003203 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3204 response of the remove STA Bcast key operation received
3205 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003206
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 callback
3209
Jeff Johnson295189b2012-06-20 16:38:30 -07003210 @see WDI_SetMaxTxPowerReq
3211 @return Result of the function call
3212*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003213WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003214WDI_SetMaxTxPowerReq
3215(
3216 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3217 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3218 void* pUserData
3219)
3220{
3221 WDI_EventInfoType wdiEventData;
3222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3223
3224 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 ------------------------------------------------------------------------*/
3227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3228 {
3229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3230 "WDI API call before module is initialized - Fail request");
3231
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 }
3234
3235 /*------------------------------------------------------------------------
3236 Fill in Event data and post to the Main FSM
3237 ------------------------------------------------------------------------*/
3238 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3240 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3241 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 wdiEventData.pUserData = pUserData;
3243
3244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3245}
3246
schang86c22c42013-03-13 18:41:24 -07003247/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003248 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3249 MAC wants to set Max Tx Power to HW for specific band.
3250
3251 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3252
3253 wdiReqStatusCb: callback for passing back the
3254 response msg from the device
3255
3256 pUserData: user data will be passed back with the
3257 callback
3258
3259 @see WDI_SetMaxTxPowerPerBandReq
3260 @return Result of the function call
3261*/
3262WDI_Status
3263WDI_SetMaxTxPowerPerBandReq
3264(
3265 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3266 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3267 void* pUserData
3268)
3269{
3270 WDI_EventInfoType wdiEventData;
3271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3272
3273 /*------------------------------------------------------------------------
3274 Sanity Check
3275 ------------------------------------------------------------------------*/
3276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3277 {
3278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3279 "WDI API call before module is initialized - Fail request");
3280
3281 return WDI_STATUS_E_NOT_ALLOWED;
3282 }
3283
3284 /*------------------------------------------------------------------------
3285 Fill in Event data and post to the Main FSM
3286 ------------------------------------------------------------------------*/
3287 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3288 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3289 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3290 wdiEventData.pCBfnc = wdiReqStatusCb;
3291 wdiEventData.pUserData = pUserData;
3292
3293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3294}
3295
3296/**
schang86c22c42013-03-13 18:41:24 -07003297 @brief WDI_SetTxPowerReq will be called when the upper
3298 MAC wants to set Tx Power to HW.
3299 In state BUSY this request will be queued. Request won't
3300 be allowed in any other state.
3301
3302
3303 @param pwdiSetTxPowerParams: set TS Power parameters
3304 BSSID and target TX Power with dbm included
3305
3306 wdiReqStatusCb: callback for passing back the response
3307
3308 pUserData: user data will be passed back with the
3309 callback
3310
3311 @return Result of the function call
3312*/
3313WDI_Status
3314WDI_SetTxPowerReq
3315(
3316 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3317 WDA_SetTxPowerRspCb wdiReqStatusCb,
3318 void* pUserData
3319)
3320{
3321 WDI_EventInfoType wdiEventData;
3322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3323
3324 /*------------------------------------------------------------------------
3325 Sanity Check
3326 ------------------------------------------------------------------------*/
3327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3328 {
3329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3330 "WDI API call before module is initialized - Fail request");
3331
3332 return WDI_STATUS_E_NOT_ALLOWED;
3333 }
3334
3335 /*------------------------------------------------------------------------
3336 Fill in Event data and post to the Main FSM
3337 ------------------------------------------------------------------------*/
3338 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3339 wdiEventData.pEventData = pwdiSetTxPowerParams;
3340 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3341 wdiEventData.pCBfnc = wdiReqStatusCb;
3342 wdiEventData.pUserData = pUserData;
3343
3344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3345}
3346
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003347#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003348WDI_Status
3349WDI_TSMStatsReq
3350(
3351 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3352 WDI_TsmRspCb wdiReqStatusCb,
3353 void* pUserData
3354)
3355{
3356 WDI_EventInfoType wdiEventData;
3357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 /*------------------------------------------------------------------------
3359 Sanity Check
3360 ------------------------------------------------------------------------*/
3361 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3362 {
3363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3364 "WDI API call before module is initialized - Fail request");
3365
3366 return WDI_STATUS_E_NOT_ALLOWED;
3367 }
3368
3369 /*------------------------------------------------------------------------
3370 Fill in Event data and post to the Main FSM
3371 ------------------------------------------------------------------------*/
3372 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3373 wdiEventData.pEventData = pwdiTsmReqParams;
3374 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3375 wdiEventData.pCBfnc = wdiReqStatusCb;
3376 wdiEventData.pUserData = pUserData;
3377
3378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3379
3380}
3381#endif
3382
3383/*========================================================================
3384
3385 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003386
Jeff Johnson295189b2012-06-20 16:38:30 -07003387==========================================================================*/
3388
3389/**
3390 @brief WDI_AddTSReq will be called when the upper MAC to inform
3391 the device of a successful add TSpec negotiation. HW
3392 needs to receive the TSpec Info from the UMAC in order
3393 to configure properly the QoS data traffic. Upon the
3394 call of this API the WLAN DAL will pack and send a HAL
3395 Add TS request message to the lower RIVA sub-system if
3396 DAL is in state STARTED.
3397
3398 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003400
3401 WDI_PostAssocReq must have been called.
3402
3403 @param wdiAddTsReqParams: the add TS parameters as specified by
3404 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003405
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 wdiAddTsRspCb: callback for passing back the response of
3407 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 callback
3411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 @see WDI_PostAssocReq
3413 @return Result of the function call
3414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003416WDI_AddTSReq
3417(
3418 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3419 WDI_AddTsRspCb wdiAddTsRspCb,
3420 void* pUserData
3421)
3422{
3423 WDI_EventInfoType wdiEventData;
3424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3425
3426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 ------------------------------------------------------------------------*/
3429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3430 {
3431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3432 "WDI API call before module is initialized - Fail request");
3433
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 }
3436
3437 /*------------------------------------------------------------------------
3438 Fill in Event data and post to the Main FSM
3439 ------------------------------------------------------------------------*/
3440 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 wdiEventData.pEventData = pwdiAddTsReqParams;
3442 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3443 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 wdiEventData.pUserData = pUserData;
3445
3446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3447
3448}/*WDI_AddTSReq*/
3449
3450
3451
3452/**
3453 @brief WDI_DelTSReq will be called when the upper MAC has ended
3454 admission on a specific AC. This is to inform HW that
3455 QoS traffic parameters must be rest. Upon the call of
3456 this API the WLAN DAL will pack and send a HAL Del TS
3457 request message to the lower RIVA sub-system if DAL is
3458 in state STARTED.
3459
3460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003462
3463 WDI_AddTSReq must have been called.
3464
3465 @param wdiDelTsReqParams: the del TS parameters as specified by
3466 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 wdiDelTsRspCb: callback for passing back the response of
3469 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 callback
3473
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 @see WDI_AddTSReq
3475 @return Result of the function call
3476*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003477WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003478WDI_DelTSReq
3479(
3480 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3481 WDI_DelTsRspCb wdiDelTsRspCb,
3482 void* pUserData
3483)
3484{
3485 WDI_EventInfoType wdiEventData;
3486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3487
3488 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 ------------------------------------------------------------------------*/
3491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3492 {
3493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3494 "WDI API call before module is initialized - Fail request");
3495
Jeff Johnsone7245742012-09-05 17:12:55 -07003496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 }
3498
3499 /*------------------------------------------------------------------------
3500 Fill in Event data and post to the Main FSM
3501 ------------------------------------------------------------------------*/
3502 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003503 wdiEventData.pEventData = pwdiDelTsReqParams;
3504 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3505 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 wdiEventData.pUserData = pUserData;
3507
3508 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3509
3510}/*WDI_DelTSReq*/
3511
3512
3513
3514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 wishes to update the EDCA parameters used by HW for QoS
3517 data traffic. Upon the call of this API the WLAN DAL
3518 will pack and send a HAL Update EDCA Params request
3519 message to the lower RIVA sub-system if DAL is in state
3520 STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
3525 WDI_PostAssocReq must have been called.
3526
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 wdiUpdateEDCAParamsRspCb: callback for passing back the
3531 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 callback
3535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 @see WDI_PostAssocReq
3537 @return Result of the function call
3538*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003540WDI_UpdateEDCAParams
3541(
3542 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3543 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3544 void* pUserData
3545)
3546{
3547 WDI_EventInfoType wdiEventData;
3548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3549
3550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 ------------------------------------------------------------------------*/
3553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3554 {
3555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3556 "WDI API call before module is initialized - Fail request");
3557
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 }
3560
3561 /*------------------------------------------------------------------------
3562 Fill in Event data and post to the Main FSM
3563 ------------------------------------------------------------------------*/
3564 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3566 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3567 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 wdiEventData.pUserData = pUserData;
3569
3570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3571
3572}/*WDI_UpdateEDCAParams*/
3573
3574
3575/**
3576 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3577 successfully a BA session and needs to notify the HW for
3578 the appropriate settings to take place. Upon the call of
3579 this API the WLAN DAL will pack and send a HAL Add BA
3580 request message to the lower RIVA sub-system if DAL is
3581 in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_PostAssocReq must have been called.
3587
3588 @param wdiAddBAReqParams: the add BA parameters as specified by
3589 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 wdiAddBARspCb: callback for passing back the response of
3592 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003593
Jeff Johnson295189b2012-06-20 16:38:30 -07003594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003595 callback
3596
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 @see WDI_PostAssocReq
3598 @return Result of the function call
3599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003601WDI_AddBASessionReq
3602(
3603 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3604 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3605 void* pUserData
3606)
3607{
3608 WDI_EventInfoType wdiEventData;
3609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3610
3611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 ------------------------------------------------------------------------*/
3614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3615 {
3616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3617 "WDI API call before module is initialized - Fail request");
3618
Jeff Johnsone7245742012-09-05 17:12:55 -07003619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003620 }
3621
3622 /*------------------------------------------------------------------------
3623 Fill in Event data and post to the Main FSM
3624 ------------------------------------------------------------------------*/
3625 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3627 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3628 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 wdiEventData.pUserData = pUserData;
3630
3631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3632
3633}/*WDI_AddBASessionReq*/
3634
3635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 inform HW that it has deleted a previously created BA
3638 session. Upon the call of this API the WLAN DAL will
3639 pack and send a HAL Del BA request message to the lower
3640 RIVA sub-system if DAL is in state STARTED.
3641
3642 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003644
3645 WDI_AddBAReq must have been called.
3646
3647 @param wdiDelBAReqParams: the del BA parameters as specified by
3648 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003649
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 wdiDelBARspCb: callback for passing back the response of
3651 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003652
Jeff Johnson295189b2012-06-20 16:38:30 -07003653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003654 callback
3655
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 @see WDI_AddBAReq
3657 @return Result of the function call
3658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003660WDI_DelBAReq
3661(
3662 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3663 WDI_DelBARspCb wdiDelBARspCb,
3664 void* pUserData
3665)
3666{
3667 WDI_EventInfoType wdiEventData;
3668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3669
3670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003672 ------------------------------------------------------------------------*/
3673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3674 {
3675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3676 "WDI API call before module is initialized - Fail request");
3677
Jeff Johnsone7245742012-09-05 17:12:55 -07003678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003679 }
3680
3681 /*------------------------------------------------------------------------
3682 Fill in Event data and post to the Main FSM
3683 ------------------------------------------------------------------------*/
3684 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 wdiEventData.pEventData = pwdiDelBAReqParams;
3686 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3687 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 wdiEventData.pUserData = pUserData;
3689
3690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3691
3692}/*WDI_DelBAReq*/
3693
Jeff Johnsone7245742012-09-05 17:12:55 -07003694/*========================================================================
3695
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698==========================================================================*/
3699
3700/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wants to set the power save related configurations of
3703 the WLAN Device. Upon the call of this API the WLAN DAL
3704 will pack and send a HAL Update CFG request message to
3705 the lower RIVA sub-system if DAL is in state STARTED.
3706
3707 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003708 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003709
3710 WDI_Start must have been called.
3711
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003714
Jeff Johnson295189b2012-06-20 16:38:30 -07003715 wdiSetPwrSaveCfgCb: callback for passing back the
3716 response of the set power save cfg operation received
3717 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003718
Jeff Johnson295189b2012-06-20 16:38:30 -07003719 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003720 callback
3721
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003723 @return Result of the function call
3724*/
3725WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003726WDI_SetPwrSaveCfgReq
3727(
3728 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3729 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3730 void* pUserData
3731)
3732{
3733 WDI_EventInfoType wdiEventData;
3734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3735
3736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 ------------------------------------------------------------------------*/
3739 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3740 {
3741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3742 "WDI API call before module is initialized - Fail request");
3743
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003745 }
3746
3747 /*------------------------------------------------------------------------
3748 Fill in Event data and post to the Main FSM
3749 ------------------------------------------------------------------------*/
3750 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003751 wdiEventData.pEventData = pwdiPowerSaveCfg;
3752 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3753 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003754 wdiEventData.pUserData = pUserData;
3755
3756 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3757
3758}/*WDI_SetPwrSaveCfgReq*/
3759
3760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 request the device to get into IMPS power state. Upon
3763 the call of this API the WLAN DAL will send a HAL Enter
3764 IMPS request message to the lower RIVA sub-system if DAL
3765 is in state STARTED.
3766
3767 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003769
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
3771 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 response of the Enter IMPS operation received from the
3773 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 callback
3777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 @see WDI_Start
3779 @return Result of the function call
3780*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003781WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003782WDI_EnterImpsReq
3783(
Mihir Shetea4306052014-03-25 00:02:54 +05303784 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3786 void* pUserData
3787)
3788{
3789 WDI_EventInfoType wdiEventData;
3790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3791
3792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 ------------------------------------------------------------------------*/
3795 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3796 {
3797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3798 "WDI API call before module is initialized - Fail request");
3799
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 }
3802
3803 /*------------------------------------------------------------------------
3804 Fill in Event data and post to the Main FSM
3805 ------------------------------------------------------------------------*/
3806 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303807 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3808 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 wdiEventData.pUserData = pUserData;
3811
3812 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3813
3814}/*WDI_EnterImpsReq*/
3815
3816/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003818 request the device to get out of IMPS power state. Upon
3819 the call of this API the WLAN DAL will send a HAL Exit
3820 IMPS request message to the lower RIVA sub-system if DAL
3821 is in state STARTED.
3822
3823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826
Jeff Johnsone7245742012-09-05 17:12:55 -07003827
3828 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003830
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 callback
3833
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 @see WDI_Start
3835 @return Result of the function call
3836*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003837WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003838WDI_ExitImpsReq
3839(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303840 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3842 void* pUserData
3843)
3844{
3845 WDI_EventInfoType wdiEventData;
3846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3847
3848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003849 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003850 ------------------------------------------------------------------------*/
3851 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3852 {
3853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3854 "WDI API call before module is initialized - Fail request");
3855
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 }
3858
3859 /*------------------------------------------------------------------------
3860 Fill in Event data and post to the Main FSM
3861 ------------------------------------------------------------------------*/
3862 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303863 wdiEventData.pEventData = pwdiExitImpsReqParams;
3864 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003865 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003866 wdiEventData.pUserData = pUserData;
3867
3868 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3869
3870}/*WDI_ExitImpsReq*/
3871
3872/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 request the device to get into BMPS power state. Upon
3875 the call of this API the WLAN DAL will pack and send a
3876 HAL Enter BMPS request message to the lower RIVA
3877 sub-system if DAL is in state STARTED.
3878
3879 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003880 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003881
3882 WDI_PostAssocReq must have been called.
3883
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003886
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 wdiEnterBmpsRspCb: callback for passing back the
3888 response of the Enter BMPS operation received from the
3889 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003890
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003892 callback
3893
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 @see WDI_PostAssocReq
3895 @return Result of the function call
3896*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003897WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003898WDI_EnterBmpsReq
3899(
3900 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3901 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3902 void* pUserData
3903)
3904{
3905 WDI_EventInfoType wdiEventData;
3906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3907
3908 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003909 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 ------------------------------------------------------------------------*/
3911 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3912 {
3913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3914 "WDI API call before module is initialized - Fail request");
3915
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 }
3918
3919 /*------------------------------------------------------------------------
3920 Fill in Event data and post to the Main FSM
3921 ------------------------------------------------------------------------*/
3922 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3924 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3925 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003926 wdiEventData.pUserData = pUserData;
3927
3928 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3929
3930}/*WDI_EnterBmpsReq*/
3931
3932/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 request the device to get out of BMPS power state. Upon
3935 the call of this API the WLAN DAL will pack and send a
3936 HAL Exit BMPS request message to the lower RIVA
3937 sub-system if DAL is in state STARTED.
3938
3939 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003941
3942 WDI_PostAssocReq must have been called.
3943
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003946
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 wdiExitBmpsRspCb: callback for passing back the response
3948 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 callback
3952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 @see WDI_PostAssocReq
3954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_ExitBmpsReq
3958(
3959 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3960 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI API call before module is initialized - Fail request");
3974
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003976 }
3977
3978 /*------------------------------------------------------------------------
3979 Fill in Event data and post to the Main FSM
3980 ------------------------------------------------------------------------*/
3981 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3983 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3984 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiEventData.pUserData = pUserData;
3986
3987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3988
3989}/*WDI_ExitBmpsReq*/
3990
3991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 request the device to get into UAPSD power state. Upon
3994 the call of this API the WLAN DAL will pack and send a
3995 HAL Enter UAPSD request message to the lower RIVA
3996 sub-system if DAL is in state STARTED.
3997
3998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004000
4001 WDI_PostAssocReq must have been called.
4002 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004003
4004 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 wdiEnterUapsdRspCb: callback for passing back the
4008 response of the Enter UAPSD operation received from the
4009 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004010
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 callback
4013
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4015 @return Result of the function call
4016*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004018WDI_EnterUapsdReq
4019(
4020 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4021 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4022 void* pUserData
4023)
4024{
4025 WDI_EventInfoType wdiEventData;
4026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4027
4028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 ------------------------------------------------------------------------*/
4031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4032 {
4033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4034 "WDI API call before module is initialized - Fail request");
4035
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 }
4038
4039 /*------------------------------------------------------------------------
4040 Fill in Event data and post to the Main FSM
4041 ------------------------------------------------------------------------*/
4042 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4044 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4045 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 wdiEventData.pUserData = pUserData;
4047
4048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4049
4050}/*WDI_EnterUapsdReq*/
4051
4052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 request the device to get out of UAPSD power state. Upon
4055 the call of this API the WLAN DAL will send a HAL Exit
4056 UAPSD request message to the lower RIVA sub-system if
4057 DAL is in state STARTED.
4058
4059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004061
4062 WDI_PostAssocReq must have been called.
4063
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004065 response of the Exit UAPSD operation received from the
4066 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 callback
4070
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 @see WDI_PostAssocReq
4072 @return Result of the function call
4073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004075WDI_ExitUapsdReq
4076(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004077 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4079 void* pUserData
4080)
4081{
4082 WDI_EventInfoType wdiEventData;
4083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4084
4085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 ------------------------------------------------------------------------*/
4088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4089 {
4090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4091 "WDI API call before module is initialized - Fail request");
4092
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 }
4095
4096 /*------------------------------------------------------------------------
4097 Fill in Event data and post to the Main FSM
4098 ------------------------------------------------------------------------*/
4099 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004100 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4101 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wdiEventData.pUserData = pUserData;
4104
4105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4106
4107}/*WDI_ExitUapsdReq*/
4108
4109/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 MAC wants to set the UAPSD related configurations
4112 of an associated STA (while acting as an AP) to the WLAN
4113 Device. Upon the call of this API the WLAN DAL will pack
4114 and send a HAL Update UAPSD params request message to
4115 the lower RIVA sub-system if DAL is in state STARTED.
4116
4117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004119
4120 WDI_ConfigBSSReq must have been called.
4121
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 wdiUpdateUapsdParamsCb: callback for passing back the
4126 response of the update UAPSD params operation received
4127 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004128
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 callback
4131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 @see WDI_ConfigBSSReq
4133 @return Result of the function call
4134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004136WDI_UpdateUapsdParamsReq
4137(
4138 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4139 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4140 void* pUserData
4141)
4142{
4143 WDI_EventInfoType wdiEventData;
4144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4145
4146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 ------------------------------------------------------------------------*/
4149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4150 {
4151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4152 "WDI API call before module is initialized - Fail request");
4153
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 }
4156
4157 /*------------------------------------------------------------------------
4158 Fill in Event data and post to the Main FSM
4159 ------------------------------------------------------------------------*/
4160 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004162 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 wdiEventData.pUserData = pUserData;
4165
4166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4167
4168}/*WDI_UpdateUapsdParamsReq*/
4169
4170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 MAC wants to set the UAPSD related configurations before
4173 requesting for enter UAPSD power state to the WLAN
4174 Device. Upon the call of this API the WLAN DAL will pack
4175 and send a HAL Set UAPSD params request message to
4176 the lower RIVA sub-system if DAL is in state STARTED.
4177
4178 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004180
4181 WDI_PostAssocReq must have been called.
4182
4183 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4184 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004185
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 wdiSetUapsdAcParamsCb: callback for passing back the
4187 response of the set UAPSD params operation received from
4188 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004189
Jeff Johnson295189b2012-06-20 16:38:30 -07004190 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 callback
4192
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 @see WDI_PostAssocReq
4194 @return Result of the function call
4195*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004196WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004197WDI_SetUapsdAcParamsReq
4198(
4199 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4200 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4201 void* pUserData
4202)
4203{
4204 WDI_EventInfoType wdiEventData;
4205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4206
4207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 ------------------------------------------------------------------------*/
4210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4211 {
4212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4213 "WDI API call before module is initialized - Fail request");
4214
Jeff Johnsone7245742012-09-05 17:12:55 -07004215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 }
4217
4218 /*------------------------------------------------------------------------
4219 Fill in Event data and post to the Main FSM
4220 ------------------------------------------------------------------------*/
4221 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 wdiEventData.pEventData = pwdiUapsdInfo;
4223 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4224 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004225 wdiEventData.pUserData = pUserData;
4226
4227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4228
4229}/*WDI_SetUapsdAcParamsReq*/
4230
4231/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304232 @brief WDI_FWLoggingDXEdoneInd
4233
4234 FW Logging DXE done Indication from the upper layer will be sent
4235 down to HAL
4236
4237 @param WDI_FWLoggingDXEdoneIndInfoType
4238
4239 @see
4240
4241 @return Status of the request
4242*/
4243WDI_Status
4244WDI_FWLoggingDXEdoneInd
4245(
4246 WDI_FWLoggingDXEdoneIndInfoType* pwdiFWLoggingDXEdoneInd
4247)
4248{
4249
4250 WDI_EventInfoType wdiEventData;
4251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4252
4253 /*------------------------------------------------------------------------
4254 Sanity Check
4255 ------------------------------------------------------------------------*/
4256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4257 {
4258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4259 "WDI API call before module is initialized - Fail request");
4260
4261 return WDI_STATUS_E_NOT_ALLOWED;
4262 }
4263
4264 /*------------------------------------------------------------------------
4265 Fill in Event data and post to the Main FSM
4266 ------------------------------------------------------------------------*/
4267 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
4268 wdiEventData.pEventData = pwdiFWLoggingDXEdoneInd;
4269 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingDXEdoneInd);
4270 wdiEventData.pCBfnc = NULL;
4271 wdiEventData.pUserData = NULL;
4272
4273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4274
4275}/*WDI_FWLoggingDXEdoneInd*/
4276
4277/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304278 @brief WDI_GetFrameLogReq will be called when the upper
4279 MAC wants to initialize frame logging. Upon the call of
4280 this API the WLAN DAL will pack and send a HAL
4281 Frame logging init request message to
4282 the lower RIVA sub-system.
4283
4284 In state BUSY this request will be queued. Request won't
4285 be allowed in any other state.
4286
4287
4288 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4289 as specified by the Device Interface
4290
4291 wdiGetFrameLogRspCb: callback for passing back the
4292 response of the frame logging init operation received
4293 from the device
4294
4295 pUserData: user data will be passed back with the
4296 callback
4297
4298 @return Result of the function call
4299*/
4300WDI_Status
4301WDI_GetFrameLogReq
4302(
4303 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4304 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4305 void* pUserData
4306)
4307{
4308 WDI_EventInfoType wdiEventData;
4309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4310
4311 /*------------------------------------------------------------------------
4312 Sanity Check
4313 ------------------------------------------------------------------------*/
4314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4315 {
4316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4317 "WDI API call before module is initialized - Fail request");
4318
4319 return WDI_STATUS_E_NOT_ALLOWED;
4320 }
4321
4322 /*------------------------------------------------------------------------
4323 Fill in Event data and post to the Main FSM
4324 ------------------------------------------------------------------------*/
4325 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4326 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4327 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4328 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4329 wdiEventData.pUserData = pUserData;
4330
4331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4332}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304333
4334
4335/**
4336 @brief WDI_FatalEventLogsReq will be called when the upper
4337 MAC wants to send the flush command. Upon the call of
4338 this API the WLAN DAL will pack and send a HAL
4339 Fatal Event Req message to the lower RIVA sub-system.
4340
4341 In state BUSY this request will be queued. Request won't
4342 be allowed in any other state.
4343
4344
4345 @param pwdiFlushLogsReqInfo: the Flush Logs params
4346 as specified by the Device Interface
4347
4348 wdiFlushLogsRspCb: callback for passing back the
4349 response of the Flush Logs operation received
4350 from the device
4351
4352 pUserData: user data will be passed back with the
4353 callback
4354
4355 @return Result of the function call
4356*/
4357
4358WDI_Status
4359WDI_FatalEventLogsReq
4360(
4361 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4362 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4363 void* pUserData
4364)
4365{
4366 WDI_EventInfoType wdiEventData;
4367
4368 /*------------------------------------------------------------------------
4369 Sanity Check
4370 ------------------------------------------------------------------------*/
4371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4372 {
4373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4374 "WDI API call before module is initialized - Fail request");
4375
4376 return WDI_STATUS_E_NOT_ALLOWED;
4377 }
4378
4379 /*------------------------------------------------------------------------
4380 Fill in Event data and post to the Main FSM
4381 ------------------------------------------------------------------------*/
4382 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4383 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4384 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4385 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4386 wdiEventData.pUserData = pUserData;
4387
4388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4389
4390}
4391
4392
Siddharth Bhal64246172015-02-27 01:04:37 +05304393/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304394 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304395 MAC wants to initialize frame logging. Upon the call of
4396 this API the WLAN DAL will pack and send a HAL
4397 Frame logging init request message to
4398 the lower RIVA sub-system.
4399
4400 In state BUSY this request will be queued. Request won't
4401 be allowed in any other state.
4402
4403
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304404 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304405 as specified by the Device Interface
4406
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304407 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304408 response of the frame logging init operation received
4409 from the device
4410
4411 pUserData: user data will be passed back with the
4412 callback
4413
4414 @return Result of the function call
4415*/
4416WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304417WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304418(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304419 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4420 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304421 void* pUserData
4422)
4423{
4424 WDI_EventInfoType wdiEventData;
4425
4426 /*------------------------------------------------------------------------
4427 Sanity Check
4428 ------------------------------------------------------------------------*/
4429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4430 {
4431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4432 "WDI API call before module is initialized - Fail request");
4433
4434 return WDI_STATUS_E_NOT_ALLOWED;
4435 }
4436
4437 /*------------------------------------------------------------------------
4438 Fill in Event data and post to the Main FSM
4439 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304440 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4441 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4442 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4443 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304444 wdiEventData.pUserData = pUserData;
4445
4446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4447}
4448
4449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004450 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004451 MAC wants to set/reset the RXP filters for received pkts
4452 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4453 and send a HAL configure RXP filter request message to
4454 the lower RIVA sub-system.
4455
4456 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004457 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004458
Jeff Johnsone7245742012-09-05 17:12:55 -07004459
4460 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 filter as specified by the Device
4462 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004463
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 wdiConfigureRxpFilterCb: callback for passing back the
4465 response of the configure RXP filter operation received
4466 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004467
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004469 callback
4470
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 @return Result of the function call
4472*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004474WDI_ConfigureRxpFilterReq
4475(
4476 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4477 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4478 void* pUserData
4479)
4480{
4481 WDI_EventInfoType wdiEventData;
4482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4483
4484 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 ------------------------------------------------------------------------*/
4487 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4488 {
4489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4490 "WDI API call before module is initialized - Fail request");
4491
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 }
4494
4495 /*------------------------------------------------------------------------
4496 Fill in Event data and post to the Main FSM
4497 ------------------------------------------------------------------------*/
4498 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4500 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4501 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004502 wdiEventData.pUserData = pUserData;
4503
4504 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4505}/*WDI_ConfigureRxpFilterReq*/
4506
4507/**
4508 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4509 wants to set the beacon filters while in power save.
4510 Upon the call of this API the WLAN DAL will pack and
4511 send a Beacon filter request message to the
4512 lower RIVA sub-system.
4513
4514 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004516
Jeff Johnsone7245742012-09-05 17:12:55 -07004517
4518 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 filter as specified by the Device
4520 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004521
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 wdiBeaconFilterCb: callback for passing back the
4523 response of the set beacon filter operation received
4524 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004525
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 callback
4528
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 @return Result of the function call
4530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004532WDI_SetBeaconFilterReq
4533(
4534 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4535 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4536 void* pUserData
4537)
4538{
4539 WDI_EventInfoType wdiEventData;
4540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4541
4542 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 ------------------------------------------------------------------------*/
4545 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4546 {
4547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4548 "WDI API call before module is initialized - Fail request");
4549
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 }
4552
4553 /*------------------------------------------------------------------------
4554 Fill in Event data and post to the Main FSM
4555 ------------------------------------------------------------------------*/
4556 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004557 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004558 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004559 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 wdiEventData.pUserData = pUserData;
4561
4562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4563}/*WDI_SetBeaconFilterReq*/
4564
4565/**
4566 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4567 wants to remove the beacon filter for particular IE
4568 while in power save. Upon the call of this API the WLAN
4569 DAL will pack and send a remove Beacon filter request
4570 message to the lower RIVA sub-system.
4571
4572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004574
Jeff Johnsone7245742012-09-05 17:12:55 -07004575
4576 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004577 filter as specified by the Device
4578 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004579
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 wdiBeaconFilterCb: callback for passing back the
4581 response of the remove beacon filter operation received
4582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004583
Jeff Johnson295189b2012-06-20 16:38:30 -07004584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 callback
4586
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 @return Result of the function call
4588*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004589WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004590WDI_RemBeaconFilterReq
4591(
4592 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4593 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4594 void* pUserData
4595)
4596{
4597 WDI_EventInfoType wdiEventData;
4598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4599
4600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 ------------------------------------------------------------------------*/
4603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4604 {
4605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4606 "WDI API call before module is initialized - Fail request");
4607
Jeff Johnsone7245742012-09-05 17:12:55 -07004608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 }
4610
4611 /*------------------------------------------------------------------------
4612 Fill in Event data and post to the Main FSM
4613 ------------------------------------------------------------------------*/
4614 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004615 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004616 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004618 wdiEventData.pUserData = pUserData;
4619
4620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4621}/*WDI_RemBeaconFilterReq*/
4622
4623/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004624 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004625 MAC wants to set the RSSI thresholds related
4626 configurations while in power save. Upon the call of
4627 this API the WLAN DAL will pack and send a HAL Set RSSI
4628 thresholds request message to the lower RIVA
4629 sub-system if DAL is in state STARTED.
4630
4631 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004632 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004633
4634 WDI_PostAssocReq must have been called.
4635
4636 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4637 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004638
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 wdiSetUapsdAcParamsCb: callback for passing back the
4640 response of the set UAPSD params operation received from
4641 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004642
Jeff Johnson295189b2012-06-20 16:38:30 -07004643 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 callback
4645
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 @see WDI_PostAssocReq
4647 @return Result of the function call
4648*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004649WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004650WDI_SetRSSIThresholdsReq
4651(
4652 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4653 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4654 void* pUserData
4655)
4656{
4657 WDI_EventInfoType wdiEventData;
4658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4659
4660 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 ------------------------------------------------------------------------*/
4663 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4664 {
4665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4666 "WDI API call before module is initialized - Fail request");
4667
Jeff Johnsone7245742012-09-05 17:12:55 -07004668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 }
4670
4671 /*------------------------------------------------------------------------
4672 Fill in Event data and post to the Main FSM
4673 ------------------------------------------------------------------------*/
4674 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004675 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004676 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004678 wdiEventData.pUserData = pUserData;
4679
4680 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4681}/* WDI_SetRSSIThresholdsReq*/
4682
4683/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004684 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004685 wants to set the filter to minimize unnecessary host
4686 wakeup due to broadcast traffic while in power save.
4687 Upon the call of this API the WLAN DAL will pack and
4688 send a HAL host offload request message to the
4689 lower RIVA sub-system if DAL is in state STARTED.
4690
4691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004693
4694 WDI_PostAssocReq must have been called.
4695
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004698
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 wdiHostOffloadCb: callback for passing back the response
4700 of the host offload operation received from the
4701 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 callback
4705
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 @see WDI_PostAssocReq
4707 @return Result of the function call
4708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004710WDI_HostOffloadReq
4711(
4712 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4713 WDI_HostOffloadCb wdiHostOffloadCb,
4714 void* pUserData
4715)
4716{
4717 WDI_EventInfoType wdiEventData;
4718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4719
4720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 ------------------------------------------------------------------------*/
4723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4724 {
4725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4726 "WDI API call before module is initialized - Fail request");
4727
Jeff Johnsone7245742012-09-05 17:12:55 -07004728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004729 }
4730
4731 /*------------------------------------------------------------------------
4732 Fill in Event data and post to the Main FSM
4733 ------------------------------------------------------------------------*/
4734 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004736 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004737 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004738 wdiEventData.pUserData = pUserData;
4739
4740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4741}/*WDI_HostOffloadReq*/
4742
4743/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004744 @brief WDI_KeepAliveReq will be called when the upper MAC
4745 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004746 and minimize unnecessary host wakeups due to while in power save.
4747 Upon the call of this API the WLAN DAL will pack and
4748 send a HAL Keep Alive request message to the
4749 lower RIVA sub-system if DAL is in state STARTED.
4750
4751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004753
4754 WDI_PostAssocReq must have been called.
4755
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004758
Jeff Johnson295189b2012-06-20 16:38:30 -07004759 wdiKeepAliveCb: callback for passing back the response
4760 of the Keep Alive operation received from the
4761 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004762
Jeff Johnson295189b2012-06-20 16:38:30 -07004763 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 callback
4765
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 @see WDI_PostAssocReq
4767 @return Result of the function call
4768*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004769WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004770WDI_KeepAliveReq
4771(
4772 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4773 WDI_KeepAliveCb wdiKeepAliveCb,
4774 void* pUserData
4775)
4776{
4777 WDI_EventInfoType wdiEventData;
4778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4779
4780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004781 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 ------------------------------------------------------------------------*/
4783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4784 {
4785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4786 "WDI_KeepAliveReq: WDI API call before module "
4787 "is initialized - Fail request");
4788
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004790 }
4791
4792 /*------------------------------------------------------------------------
4793 Fill in Event data and post to the Main FSM
4794 ------------------------------------------------------------------------*/
4795 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 wdiEventData.pEventData = pwdiKeepAliveParams;
4797 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4798 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 wdiEventData.pUserData = pUserData;
4800
4801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4802}/*WDI_KeepAliveReq*/
4803
4804/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004805 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 wants to set the Wowl Bcast ptrn to minimize unnecessary
4807 host wakeup due to broadcast traffic while in power
4808 save. Upon the call of this API the WLAN DAL will pack
4809 and send a HAL Wowl Bcast ptrn request message to the
4810 lower RIVA sub-system if DAL is in state STARTED.
4811
4812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004814
4815 WDI_PostAssocReq must have been called.
4816
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004819
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 wdiWowlAddBcPtrnCb: callback for passing back the
4821 response of the add Wowl bcast ptrn operation received
4822 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004823
Jeff Johnson295189b2012-06-20 16:38:30 -07004824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 callback
4826
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 @see WDI_PostAssocReq
4828 @return Result of the function call
4829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004831WDI_WowlAddBcPtrnReq
4832(
4833 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4834 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4835 void* pUserData
4836)
4837{
4838 WDI_EventInfoType wdiEventData;
4839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4840
4841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 ------------------------------------------------------------------------*/
4844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4845 {
4846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4847 "WDI API call before module is initialized - Fail request");
4848
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004850 }
4851
4852 /*------------------------------------------------------------------------
4853 Fill in Event data and post to the Main FSM
4854 ------------------------------------------------------------------------*/
4855 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004857 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004858 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 wdiEventData.pUserData = pUserData;
4860
4861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4862}/*WDI_WowlAddBcPtrnReq*/
4863
4864/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004865 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 wants to clear the Wowl Bcast ptrn. Upon the call of
4867 this API the WLAN DAL will pack and send a HAL delete
4868 Wowl Bcast ptrn request message to the lower RIVA
4869 sub-system if DAL is in state STARTED.
4870
4871 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004872 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004873
4874 WDI_WowlAddBcPtrnReq must have been called.
4875
Jeff Johnsone7245742012-09-05 17:12:55 -07004876 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004877 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004878
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 wdiWowlDelBcPtrnCb: callback for passing back the
4880 response of the del Wowl bcast ptrn operation received
4881 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004882
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 callback
4885
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 @see WDI_WowlAddBcPtrnReq
4887 @return Result of the function call
4888*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004889WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004890WDI_WowlDelBcPtrnReq
4891(
4892 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4893 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4894 void* pUserData
4895)
4896{
4897 WDI_EventInfoType wdiEventData;
4898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4899
4900 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004901 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 ------------------------------------------------------------------------*/
4903 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4904 {
4905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4906 "WDI API call before module is initialized - Fail request");
4907
Jeff Johnsone7245742012-09-05 17:12:55 -07004908 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004909 }
4910
4911 /*------------------------------------------------------------------------
4912 Fill in Event data and post to the Main FSM
4913 ------------------------------------------------------------------------*/
4914 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004916 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 wdiEventData.pUserData = pUserData;
4919
4920 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4921}/*WDI_WowlDelBcPtrnReq*/
4922
4923/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004924 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004925 wants to enter the Wowl state to minimize unnecessary
4926 host wakeup while in power save. Upon the call of this
4927 API the WLAN DAL will pack and send a HAL Wowl enter
4928 request message to the lower RIVA sub-system if DAL is
4929 in state STARTED.
4930
4931 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004932 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004933
4934 WDI_PostAssocReq must have been called.
4935
Jeff Johnsone7245742012-09-05 17:12:55 -07004936 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004937 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004938
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 wdiWowlEnterReqCb: callback for passing back the
4940 response of the enter Wowl operation received from the
4941 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004942
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 callback
4945
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 @see WDI_PostAssocReq
4947 @return Result of the function call
4948*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004950WDI_WowlEnterReq
4951(
4952 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4953 WDI_WowlEnterReqCb wdiWowlEnterCb,
4954 void* pUserData
4955)
4956{
4957 WDI_EventInfoType wdiEventData;
4958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4959
4960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004962 ------------------------------------------------------------------------*/
4963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4964 {
4965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4966 "WDI API call before module is initialized - Fail request");
4967
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 }
4970
4971 /*------------------------------------------------------------------------
4972 Fill in Event data and post to the Main FSM
4973 ------------------------------------------------------------------------*/
4974 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004976 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 wdiEventData.pUserData = pUserData;
4979
4980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4981}/*WDI_WowlEnterReq*/
4982
4983/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 wants to exit the Wowl state. Upon the call of this API
4986 the WLAN DAL will pack and send a HAL Wowl exit request
4987 message to the lower RIVA sub-system if DAL is in state
4988 STARTED.
4989
4990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004992
4993 WDI_WowlEnterReq must have been called.
4994
Jeff Johnsone7245742012-09-05 17:12:55 -07004995 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004996 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004997
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 wdiWowlExitReqCb: callback for passing back the response
4999 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005000
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 callback
5003
Jeff Johnson295189b2012-06-20 16:38:30 -07005004 @see WDI_WowlEnterReq
5005 @return Result of the function call
5006*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005008WDI_WowlExitReq
5009(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005010 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005011 WDI_WowlExitReqCb wdiWowlExitCb,
5012 void* pUserData
5013)
5014{
5015 WDI_EventInfoType wdiEventData;
5016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5017
5018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 ------------------------------------------------------------------------*/
5021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5022 {
5023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5024 "WDI API call before module is initialized - Fail request");
5025
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 }
5028
5029 /*------------------------------------------------------------------------
5030 Fill in Event data and post to the Main FSM
5031 ------------------------------------------------------------------------*/
5032 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005033 wdiEventData.pEventData = pwdiWowlExitParams;
5034 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005036 wdiEventData.pUserData = pUserData;
5037
5038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5039}/*WDI_WowlExitReq*/
5040
5041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 the upper MAC wants to dynamically adjusts the listen
5044 interval based on the WLAN/MSM activity. Upon the call
5045 of this API the WLAN DAL will pack and send a HAL
5046 configure Apps Cpu Wakeup State request message to the
5047 lower RIVA sub-system.
5048
5049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005051
Jeff Johnsone7245742012-09-05 17:12:55 -07005052
5053 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 Apps Cpu Wakeup State as specified by the
5055 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005056
Jeff Johnson295189b2012-06-20 16:38:30 -07005057 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5058 back the response of the configure Apps Cpu Wakeup State
5059 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005060
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 callback
5063
Jeff Johnson295189b2012-06-20 16:38:30 -07005064 @return Result of the function call
5065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005067WDI_ConfigureAppsCpuWakeupStateReq
5068(
5069 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5070 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5071 void* pUserData
5072)
5073{
5074 WDI_EventInfoType wdiEventData;
5075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5076
5077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 ------------------------------------------------------------------------*/
5080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5081 {
5082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5083 "WDI API call before module is initialized - Fail request");
5084
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 }
5087
5088 /*------------------------------------------------------------------------
5089 Fill in Event data and post to the Main FSM
5090 ------------------------------------------------------------------------*/
5091 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005092 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5093 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5094 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 wdiEventData.pUserData = pUserData;
5096
5097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5098}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5099/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 to to perform a flush operation on a given AC. Upon the
5102 call of this API the WLAN DAL will pack and send a HAL
5103 Flush AC request message to the lower RIVA sub-system if
5104 DAL is in state STARTED.
5105
5106 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005107 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005108
5109 WDI_AddBAReq must have been called.
5110
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005113
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 wdiFlushAcRspCb: callback for passing back the response
5115 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005116
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 callback
5119
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 @see WDI_AddBAReq
5121 @return Result of the function call
5122*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005123WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005124WDI_FlushAcReq
5125(
5126 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5127 WDI_FlushAcRspCb wdiFlushAcRspCb,
5128 void* pUserData
5129)
5130{
5131 WDI_EventInfoType wdiEventData;
5132 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5133
5134 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 ------------------------------------------------------------------------*/
5137 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5138 {
5139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5140 "WDI API call before module is initialized - Fail request");
5141
Jeff Johnsone7245742012-09-05 17:12:55 -07005142 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 }
5144
5145 /*------------------------------------------------------------------------
5146 Fill in Event data and post to the Main FSM
5147 ------------------------------------------------------------------------*/
5148 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 wdiEventData.pEventData = pwdiFlushAcReqParams;
5150 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5151 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 wdiEventData.pUserData = pUserData;
5153
5154 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5155
5156}/*WDI_FlushAcReq*/
5157
5158/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 wants to notify the lower mac on a BT AMP event. This is
5161 to inform BTC-SLM that some BT AMP event occurred. Upon
5162 the call of this API the WLAN DAL will pack and send a
5163 HAL BT AMP event request message to the lower RIVA
5164 sub-system if DAL is in state STARTED.
5165
5166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005168
Jeff Johnsone7245742012-09-05 17:12:55 -07005169
5170 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005171 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005172
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 wdiBtAmpEventRspCb: callback for passing back the
5174 response of the BT AMP event operation received from the
5175 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005176
Jeff Johnson295189b2012-06-20 16:38:30 -07005177 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005178 callback
5179
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 @return Result of the function call
5181*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005183WDI_BtAmpEventReq
5184(
5185 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5186 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5187 void* pUserData
5188)
5189{
5190 WDI_EventInfoType wdiEventData;
5191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5192
5193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005195 ------------------------------------------------------------------------*/
5196 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5197 {
5198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5199 "WDI API call before module is initialized - Fail request");
5200
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005202 }
5203
5204 /*------------------------------------------------------------------------
5205 Fill in Event data and post to the Main FSM
5206 ------------------------------------------------------------------------*/
5207 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5209 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5210 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 wdiEventData.pUserData = pUserData;
5212
5213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5214
5215}/*WDI_BtAmpEventReq*/
5216
Jeff Johnsone7245742012-09-05 17:12:55 -07005217#ifdef FEATURE_OEM_DATA_SUPPORT
5218/**
5219 @brief WDI_Start Oem Data Req will be called when the upper MAC
5220 wants to notify the lower mac on a oem data Req event.Upon
5221 the call of this API the WLAN DAL will pack and send a
5222 HAL OEM Data Req event request message to the lower RIVA
5223 sub-system if DAL is in state STARTED.
5224
5225 In state BUSY this request will be queued. Request won't
5226 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005227
5228
Jeff Johnsone7245742012-09-05 17:12:55 -07005229
5230 @param pwdiOemDataReqParams: the Oem Data Req as
5231 specified by the Device Interface
5232
5233 wdiStartOemDataRspCb: callback for passing back the
5234 response of the Oem Data Req received from the
5235 device
5236
5237 pUserData: user data will be passed back with the
5238 callback
5239
5240 @return Result of the function call
5241*/
5242WDI_Status
5243WDI_StartOemDataReq
5244(
5245 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5246 WDI_oemDataRspCb wdiOemDataRspCb,
5247 void* pUserData
5248)
5249{
5250 WDI_EventInfoType wdiEventData;
5251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5252
5253 /*------------------------------------------------------------------------
5254 Sanity Check
5255 ------------------------------------------------------------------------*/
5256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5257 {
5258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5259 "WDI API call before module is initialized - Fail request");
5260
5261 return WDI_STATUS_E_NOT_ALLOWED;
5262 }
5263
5264 /*------------------------------------------------------------------------
5265 Fill in Event data and post to the Main FSM
5266 ------------------------------------------------------------------------*/
5267 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5268 wdiEventData.pEventData = pwdiOemDataReqParams;
5269 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5270 wdiEventData.pCBfnc = wdiOemDataRspCb;
5271 wdiEventData.pUserData = pUserData;
5272
5273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5274
5275
5276}
5277
5278#endif
5279
5280
5281/*========================================================================
5282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285==========================================================================*/
5286/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005287 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 the WLAN HW to change the current channel of operation.
5289 Upon the call of this API the WLAN DAL will pack and
5290 send a HAL Start request message to the lower RIVA
5291 sub-system if DAL is in state STARTED.
5292
5293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005295
5296 WDI_Start must have been called.
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005300
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 wdiSwitchChRspCb: callback for passing back the response
5302 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005303
Jeff Johnson295189b2012-06-20 16:38:30 -07005304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005305 callback
5306
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 @see WDI_Start
5308 @return Result of the function call
5309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005311WDI_SwitchChReq
5312(
5313 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5314 WDI_SwitchChRspCb wdiSwitchChRspCb,
5315 void* pUserData
5316)
5317{
5318 WDI_EventInfoType wdiEventData;
5319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5320
5321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 ------------------------------------------------------------------------*/
5324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5325 {
5326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5327 "WDI API call before module is initialized - Fail request");
5328
Jeff Johnsone7245742012-09-05 17:12:55 -07005329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 }
5331
5332 /*------------------------------------------------------------------------
5333 Fill in Event data and post to the Main FSM
5334 ------------------------------------------------------------------------*/
5335 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005336 wdiEventData.pEventData = pwdiSwitchChReqParams;
5337 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5338 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 wdiEventData.pUserData = pUserData;
5340
5341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5342
5343}/*WDI_SwitchChReq*/
5344
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005345/**
5346 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5347 the WLAN HW to change the current channel of operation.
5348 Upon the call of this API the WLAN DAL will pack and
5349 send a HAL Start request message to the lower RIVA
5350 sub-system if DAL is in state STARTED.
5351 This request message also includes source of channel switch,
5352 like CSA,
5353
5354 In state BUSY this request will be queued. Request won't
5355 be allowed in any other state.
5356
5357 WDI_Start must have been called.
5358
5359 @param wdiSwitchChReqParams: the switch ch parameters as
5360 specified by the Device Interface
5361
5362 wdiSwitchChRspCb: callback for passing back the response
5363 of the switch ch operation received from the device
5364
5365 pUserData: user data will be passed back with the
5366 callback
5367
5368 @see WDI_Start
5369 @return Result of the function call
5370*/
5371WDI_Status
5372WDI_SwitchChReq_V1
5373(
5374 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5375 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5376 void* pUserData
5377)
5378{
5379 WDI_EventInfoType wdiEventData;
5380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5382 "WDI API call WDI_SwitchChReq_V1");
5383 /*------------------------------------------------------------------------
5384 Sanity Check
5385 ------------------------------------------------------------------------*/
5386 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5387 {
5388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5389 "WDI API call before module is initialized - Fail request");
5390
5391 return WDI_STATUS_E_NOT_ALLOWED;
5392 }
5393
5394 /*------------------------------------------------------------------------
5395 Fill in Event data and post to the Main FSM
5396 ------------------------------------------------------------------------*/
5397 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5398 wdiEventData.pEventData = pwdiSwitchChReqParams;
5399 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5400 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5401 wdiEventData.pUserData = pUserData;
5402
5403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5404
5405}/*WDI_SwitchChReq_V1*/
5406
Jeff Johnson295189b2012-06-20 16:38:30 -07005407
5408/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 wishes to add or update a STA in HW. Upon the call of
5411 this API the WLAN DAL will pack and send a HAL Start
5412 message request message to the lower RIVA sub-system if
5413 DAL is in state STARTED.
5414
5415 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005417
5418 WDI_Start must have been called.
5419
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005422
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 wdiConfigSTARspCb: callback for passing back the
5424 response of the config STA operation received from the
5425 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 callback
5429
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 @see WDI_Start
5431 @return Result of the function call
5432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005434WDI_ConfigSTAReq
5435(
5436 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5437 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5438 void* pUserData
5439)
5440{
5441 WDI_EventInfoType wdiEventData;
5442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5443
5444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 ------------------------------------------------------------------------*/
5447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5448 {
5449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5450 "WDI API call before module is initialized - Fail request");
5451
Jeff Johnsone7245742012-09-05 17:12:55 -07005452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005453 }
5454
5455 /*------------------------------------------------------------------------
5456 Fill in Event data and post to the Main FSM
5457 ------------------------------------------------------------------------*/
5458 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5460 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5461 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 wdiEventData.pUserData = pUserData;
5463
5464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5465
5466}/*WDI_ConfigSTAReq*/
5467
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005468 /**
5469 @brief WDI_UpdateChannelReq will be called when the upper MAC
5470 wants to update the channel list on change in country code.
5471
5472 In state BUSY this request will be queued. Request won't
5473 be allowed in any other state.
5474
5475 WDI_UpdateChannelReq must have been called.
5476
5477 @param wdiUpdateChannelReqParams: the updated channel parameters
5478 as specified by the Device Interface
5479
5480 wdiUpdateChannelRspCb: callback for passing back the
5481 response of the update channel operation received from
5482 the device
5483
5484 pUserData: user data will be passed back with the
5485 callback
5486
5487 @return Result of the function call
5488*/
5489WDI_Status
5490WDI_UpdateChannelReq
5491(
5492 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5493 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5494 void* pUserData
5495)
5496{
5497 WDI_EventInfoType wdiEventData = {{0}};
5498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5499
5500 /*------------------------------------------------------------------------
5501 Sanity Check
5502 ------------------------------------------------------------------------*/
5503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5504 {
5505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5506 "WDI API call before module is initialized - Fail request");
5507
5508 return WDI_STATUS_E_NOT_ALLOWED;
5509 }
5510
5511 /*------------------------------------------------------------------------
5512 Fill in Event data and post to the Main FSM
5513 ------------------------------------------------------------------------*/
5514 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5515 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5516 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5517 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5518 wdiEventData.pUserData = pUserData;
5519
5520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5521
5522}/*WDI_UpdateChannelReq*/
5523
Jeff Johnson295189b2012-06-20 16:38:30 -07005524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 wants to change the state of an ongoing link. Upon the
5527 call of this API the WLAN DAL will pack and send a HAL
5528 Start message request message to the lower RIVA
5529 sub-system if DAL is in state STARTED.
5530
5531 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005533
5534 WDI_JoinStartReq must have been called.
5535
Jeff Johnsone7245742012-09-05 17:12:55 -07005536 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005537 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005538
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 wdiSetLinkStateRspCb: callback for passing back the
5540 response of the set link state operation received from
5541 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005542
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005544 callback
5545
Jeff Johnson295189b2012-06-20 16:38:30 -07005546 @see WDI_JoinStartReq
5547 @return Result of the function call
5548*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005549WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005550WDI_SetLinkStateReq
5551(
5552 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5553 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5554 void* pUserData
5555)
5556{
5557 WDI_EventInfoType wdiEventData;
5558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5559
5560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005562 ------------------------------------------------------------------------*/
5563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5564 {
5565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5566 "WDI API call before module is initialized - Fail request");
5567
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 }
5570
5571 /*------------------------------------------------------------------------
5572 Fill in Event data and post to the Main FSM
5573 ------------------------------------------------------------------------*/
5574 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5576 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5577 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 wdiEventData.pUserData = pUserData;
5579
5580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5581
5582}/*WDI_SetLinkStateReq*/
5583
5584
5585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005586 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 to get statistics (MIB counters) from the device. Upon
5588 the call of this API the WLAN DAL will pack and send a
5589 HAL Start request message to the lower RIVA sub-system
5590 if DAL is in state STARTED.
5591
5592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005594
5595 WDI_Start must have been called.
5596
Jeff Johnsone7245742012-09-05 17:12:55 -07005597 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005599
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 wdiGetStatsRspCb: callback for passing back the response
5601 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005602
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 callback
5605
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 @see WDI_Start
5607 @return Result of the function call
5608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005610WDI_GetStatsReq
5611(
5612 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5613 WDI_GetStatsRspCb wdiGetStatsRspCb,
5614 void* pUserData
5615)
5616{
5617 WDI_EventInfoType wdiEventData;
5618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5619
5620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 ------------------------------------------------------------------------*/
5623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5624 {
5625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5626 "WDI API call before module is initialized - Fail request");
5627
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 }
5630
5631 /*------------------------------------------------------------------------
5632 Fill in Event data and post to the Main FSM
5633 ------------------------------------------------------------------------*/
5634 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005635 wdiEventData.pEventData = pwdiGetStatsReqParams;
5636 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5637 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 wdiEventData.pUserData = pUserData;
5639
5640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5641
5642}/*WDI_GetStatsReq*/
5643
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005644#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005645/**
5646 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5647 to get roam rssi from the device. Upon
5648 the call of this API the WLAN DAL will pack and send a
5649 HAL Start request message to the lower RIVA sub-system
5650 if DAL is in state STARTED.
5651
5652 In state BUSY this request will be queued. Request won't
5653 be allowed in any other state.
5654
5655 WDI_Start must have been called.
5656
5657 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5658 specified by the Device Interface
5659
5660 wdiGetRoamRssiRspCb: callback for passing back the response
5661 of the get stats operation received from the device
5662
5663 pUserData: user data will be passed back with the
5664 callback
5665
5666 @see WDI_Start
5667 @return Result of the function call
5668*/
5669WDI_Status
5670WDI_GetRoamRssiReq
5671(
5672 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5673 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5674 void* pUserData
5675)
5676{
5677 WDI_EventInfoType wdiEventData;
5678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5679
5680 /*------------------------------------------------------------------------
5681 Sanity Check
5682 ------------------------------------------------------------------------*/
5683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5684 {
5685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5686 "WDI API call before module is initialized - Fail request");
5687
5688 return WDI_STATUS_E_NOT_ALLOWED;
5689 }
5690 /*------------------------------------------------------------------------
5691 Fill in Event data and post to the Main FSM
5692 ------------------------------------------------------------------------*/
5693 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5694 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5695 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5696 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5697 wdiEventData.pUserData = pUserData;
5698
5699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5700
5701}/*WDI_GetRoamRssiReq*/
5702#endif
5703
Jeff Johnson295189b2012-06-20 16:38:30 -07005704
5705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 it wishes to change the configuration of the WLAN
5708 Device. Upon the call of this API the WLAN DAL will pack
5709 and send a HAL Update CFG request message to the lower
5710 RIVA sub-system if DAL is in state STARTED.
5711
5712 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005713 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005714
5715 WDI_Start must have been called.
5716
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005719
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 wdiUpdateCfgsRspCb: callback for passing back the
5721 response of the update cfg operation received from the
5722 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005725 callback
5726
Jeff Johnson295189b2012-06-20 16:38:30 -07005727 @see WDI_Start
5728 @return Result of the function call
5729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005731WDI_UpdateCfgReq
5732(
5733 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5734 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5735 void* pUserData
5736)
5737{
5738 WDI_EventInfoType wdiEventData;
5739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5740
5741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005743 ------------------------------------------------------------------------*/
5744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5745 {
5746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5747 "WDI API call before module is initialized - Fail request");
5748
Jeff Johnsone7245742012-09-05 17:12:55 -07005749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005750 }
5751
5752 /*------------------------------------------------------------------------
5753 Fill in Event data and post to the Main FSM
5754 ------------------------------------------------------------------------*/
5755 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5757 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5758 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 wdiEventData.pUserData = pUserData;
5760
5761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5762
5763}/*WDI_UpdateCfgReq*/
5764
5765
5766
5767/**
5768 @brief WDI_AddBAReq will be called when the upper MAC has setup
5769 successfully a BA session and needs to notify the HW for
5770 the appropriate settings to take place. Upon the call of
5771 this API the WLAN DAL will pack and send a HAL Add BA
5772 request message to the lower RIVA sub-system if DAL is
5773 in state STARTED.
5774
5775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005777
5778 WDI_PostAssocReq must have been called.
5779
5780 @param wdiAddBAReqParams: the add BA parameters as specified by
5781 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005782
Jeff Johnson295189b2012-06-20 16:38:30 -07005783 wdiAddBARspCb: callback for passing back the response of
5784 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005785
Jeff Johnson295189b2012-06-20 16:38:30 -07005786 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005787 callback
5788
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 @see WDI_PostAssocReq
5790 @return Result of the function call
5791*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005792WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005793WDI_AddBAReq
5794(
5795 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5796 WDI_AddBARspCb wdiAddBARspCb,
5797 void* pUserData
5798)
5799{
5800 WDI_EventInfoType wdiEventData;
5801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5802
5803 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 ------------------------------------------------------------------------*/
5806 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5807 {
5808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5809 "WDI API call before module is initialized - Fail request");
5810
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 }
5813
5814 /*------------------------------------------------------------------------
5815 Fill in Event data and post to the Main FSM
5816 ------------------------------------------------------------------------*/
5817 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005818 wdiEventData.pEventData = pwdiAddBAReqParams;
5819 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5820 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005821 wdiEventData.pUserData = pUserData;
5822
5823 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5824
5825}/*WDI_AddBAReq*/
5826
5827
5828/**
5829 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5830 successfully a BA session and needs to notify the HW for
5831 the appropriate settings to take place. Upon the call of
5832 this API the WLAN DAL will pack and send a HAL Add BA
5833 request message to the lower RIVA sub-system if DAL is
5834 in state STARTED.
5835
5836 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005837 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005838
5839 WDI_PostAssocReq must have been called.
5840
5841 @param wdiAddBAReqParams: the add BA parameters as specified by
5842 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 wdiAddBARspCb: callback for passing back the response of
5845 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005846
Jeff Johnson295189b2012-06-20 16:38:30 -07005847 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005848 callback
5849
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 @see WDI_PostAssocReq
5851 @return Result of the function call
5852*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005853WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005854WDI_TriggerBAReq
5855(
5856 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5857 WDI_TriggerBARspCb wdiTriggerBARspCb,
5858 void* pUserData
5859)
5860{
5861 WDI_EventInfoType wdiEventData;
5862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5863
5864 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005865 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005866 ------------------------------------------------------------------------*/
5867 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5868 {
5869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5870 "WDI API call before module is initialized - Fail request");
5871
Jeff Johnsone7245742012-09-05 17:12:55 -07005872 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 }
5874
5875 /*------------------------------------------------------------------------
5876 Fill in Event data and post to the Main FSM
5877 ------------------------------------------------------------------------*/
5878 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005879 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5880 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5881 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 wdiEventData.pUserData = pUserData;
5883
5884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5885
5886}/*WDI_AddBAReq*/
5887
5888/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 wishes to update any of the Beacon parameters used by HW.
5891 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5892 message to the lower RIVA sub-system if DAL is in state
5893 STARTED.
5894
5895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005897
5898 WDI_PostAssocReq must have been called.
5899
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 wdiUpdateBeaconParamsRspCb: callback for passing back the
5904 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005905
Jeff Johnson295189b2012-06-20 16:38:30 -07005906 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 callback
5908
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 @see WDI_PostAssocReq
5910 @return Result of the function call
5911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005913WDI_UpdateBeaconParamsReq
5914(
5915 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5916 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5917 void* pUserData
5918)
5919{
5920 WDI_EventInfoType wdiEventData;
5921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5922
5923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005925 ------------------------------------------------------------------------*/
5926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5927 {
5928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5929 "WDI API call before module is initialized - Fail request");
5930
Jeff Johnsone7245742012-09-05 17:12:55 -07005931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005932 }
5933
5934 /*------------------------------------------------------------------------
5935 Fill in Event data and post to the Main FSM
5936 ------------------------------------------------------------------------*/
5937 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005938 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5939 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5940 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005941 wdiEventData.pUserData = pUserData;
5942
5943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5944
5945}/*WDI_UpdateBeaconParamsReq*/
5946
5947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005948 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005949 wishes to update the Beacon template used by HW.
5950 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5951 message to the lower RIVA sub-system if DAL is in state
5952 STARTED.
5953
5954 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005955 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005956
5957 WDI_PostAssocReq must have been called.
5958
Jeff Johnsone7245742012-09-05 17:12:55 -07005959 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005960 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005961
Jeff Johnson295189b2012-06-20 16:38:30 -07005962 wdiSendBeaconParamsRspCb: callback for passing back the
5963 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005964
Jeff Johnson295189b2012-06-20 16:38:30 -07005965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005966 callback
5967
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 @see WDI_PostAssocReq
5969 @return Result of the function call
5970*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005971WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005972WDI_SendBeaconParamsReq
5973(
5974 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5975 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5976 void* pUserData
5977)
5978{
5979 WDI_EventInfoType wdiEventData;
5980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5981
5982 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005984 ------------------------------------------------------------------------*/
5985 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5986 {
5987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5988 "WDI API call before module is initialized - Fail request");
5989
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 }
5992
5993 /*------------------------------------------------------------------------
5994 Fill in Event data and post to the Main FSM
5995 ------------------------------------------------------------------------*/
5996 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 wdiEventData.pEventData = pwdiSendBeaconParams;
5998 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5999 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006000 wdiEventData.pUserData = pUserData;
6001
6002 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6003
6004}/*WDI_SendBeaconParamsReq*/
6005
6006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006007 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 upper MAC wants to update the probe response template to
6009 be transmitted as Soft AP
6010 Upon the call of this API the WLAN DAL will
6011 pack and send the probe rsp template message to the
6012 lower RIVA sub-system if DAL is in state STARTED.
6013
6014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006016
6017
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 wdiSendBeaconParamsRspCb: callback for passing back the
6022 response of the Send Beacon Params operation received
6023 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006024
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 callback
6027
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 @see WDI_AddBAReq
6029 @return Result of the function call
6030*/
6031
Jeff Johnsone7245742012-09-05 17:12:55 -07006032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006033WDI_UpdateProbeRspTemplateReq
6034(
6035 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6036 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6037 void* pUserData
6038)
6039{
6040 WDI_EventInfoType wdiEventData;
6041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6042
6043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006045 ------------------------------------------------------------------------*/
6046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6047 {
6048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6049 "WDI API call before module is initialized - Fail request");
6050
Jeff Johnsone7245742012-09-05 17:12:55 -07006051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 }
6053
6054 /*------------------------------------------------------------------------
6055 Fill in Event data and post to the Main FSM
6056 ------------------------------------------------------------------------*/
6057 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6059 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6060 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006061 wdiEventData.pUserData = pUserData;
6062
6063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6064
6065}/*WDI_UpdateProbeRspTemplateReq*/
6066
6067/**
6068 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6069 to the NV memory.
6070
6071
6072 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6073 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006074
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 wdiNvDownloadRspCb: callback for passing back the response of
6076 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006077
Jeff Johnson295189b2012-06-20 16:38:30 -07006078 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006079 callback
6080
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 @see WDI_PostAssocReq
6082 @return Result of the function call
6083*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006084WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006085WDI_NvDownloadReq
6086(
6087 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6088 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6089 void* pUserData
6090)
6091{
6092 WDI_EventInfoType wdiEventData;
6093
6094 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006095 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 ------------------------------------------------------------------------*/
6097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6098 {
6099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6100 "WDI API call before module is initialized - Fail request");
6101
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 }
6104
6105 /*------------------------------------------------------------------------
6106 Fill in Event data and post to the Main FSM
6107 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006108 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6109 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6110 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6111 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 wdiEventData.pUserData = pUserData;
6113
6114 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6115
6116}/*WDI_NVDownloadReq*/
6117
Jeff Johnson295189b2012-06-20 16:38:30 -07006118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006119 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006120 upper MAC wants to send Notice of Absence
6121 Upon the call of this API the WLAN DAL will
6122 pack and send the probe rsp template message to the
6123 lower RIVA sub-system if DAL is in state STARTED.
6124
6125 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006127
6128
Jeff Johnsone7245742012-09-05 17:12:55 -07006129 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006130 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 wdiSendBeaconParamsRspCb: callback for passing back the
6133 response of the Send Beacon Params operation received
6134 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 callback
6138
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 @see WDI_AddBAReq
6140 @return Result of the function call
6141*/
6142WDI_Status
6143WDI_SetP2PGONOAReq
6144(
6145 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6146 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6147 void* pUserData
6148)
6149{
6150 WDI_EventInfoType wdiEventData;
6151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6152
6153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006154 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006155 ------------------------------------------------------------------------*/
6156 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6157 {
6158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6159 "WDI API call before module is initialized - Fail request");
6160
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 }
6163
6164 /*------------------------------------------------------------------------
6165 Fill in Event data and post to the Main FSM
6166 ------------------------------------------------------------------------*/
6167 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6169 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6170 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 wdiEventData.pUserData = pUserData;
6172
6173 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6174
6175}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006176
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306177#ifdef FEATURE_WLAN_TDLS
6178/**
6179 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6180 upper MAC wants to send TDLS Link Establish Request Parameters
6181 Upon the call of this API the WLAN DAL will
6182 pack and send the TDLS Link Establish Request message to the
6183 lower RIVA sub-system if DAL is in state STARTED.
6184
6185 In state BUSY this request will be queued. Request won't
6186 be allowed in any other state.
6187
6188
6189 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6190 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6191
6192 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6193 response of the TDLS Link Establish request received
6194 from the device
6195
6196 pUserData: user data will be passed back with the
6197 callback
6198
6199 @see
6200 @return Result of the function call
6201*/
6202WDI_Status
6203WDI_SetTDLSLinkEstablishReq
6204(
6205 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6206 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6207 void* pUserData
6208)
6209{
6210 WDI_EventInfoType wdiEventData;
6211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6212
6213 /*------------------------------------------------------------------------
6214 Sanity Check
6215 ------------------------------------------------------------------------*/
6216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6217 {
6218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6219 "WDI API call before module is initialized - Fail request");
6220
6221 return WDI_STATUS_E_NOT_ALLOWED;
6222 }
6223
6224 /*------------------------------------------------------------------------
6225 Fill in Event data and post to the Main FSM
6226 ------------------------------------------------------------------------*/
6227 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6228 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6229 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6230 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6231 wdiEventData.pUserData = pUserData;
6232
6233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6234
6235}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306236
6237//tdlsoffchan
6238/**
6239 @brief WDI_SetTDLSChanSwitchReq will be called when the
6240 upper MAC wants to send TDLS Chan Switch Request Parameters
6241 Upon the call of this API the WLAN DAL will
6242 pack and send the TDLS Link Establish Request message to the
6243 lower RIVA sub-system if DAL is in state STARTED.
6244
6245 In state BUSY this request will be queued. Request won't
6246 be allowed in any other state.
6247
6248
6249 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6250 for Link Establishment (Used for TDLS Off Channel ...)
6251
6252 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6253 response of the TDLS Chan Switch request received
6254 from the device
6255
6256 pUserData: user data will be passed back with the
6257 callback
6258
6259 @see
6260 @return Result of the function call
6261*/
6262WDI_Status
6263WDI_SetTDLSChanSwitchReq
6264(
6265 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6266 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6267 void* pUserData
6268)
6269{
6270 WDI_EventInfoType wdiEventData;
6271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6272
6273 /*------------------------------------------------------------------------
6274 Sanity Check
6275 ------------------------------------------------------------------------*/
6276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6277 {
6278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6279 "WDI API call before module is initialized - Fail request");
6280
6281 return WDI_STATUS_E_NOT_ALLOWED;
6282 }
6283
6284 /*------------------------------------------------------------------------
6285 Fill in Event data and post to the Main FSM
6286 ------------------------------------------------------------------------*/
6287 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6288 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6289 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6290 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6291 wdiEventData.pUserData = pUserData;
6292
6293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6294
6295}/*WDI_SetTDLSChanSwitchReq*/
6296
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306297#endif
6298
Jeff Johnson295189b2012-06-20 16:38:30 -07006299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 UMAC wanted to add STA self while opening any new session
6302 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006304
6305
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 callback
6311
6312 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 @return Result of the function call
6314*/
6315WDI_Status
6316WDI_AddSTASelfReq
6317(
6318 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6319 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6320 void* pUserData
6321)
6322{
6323 WDI_EventInfoType wdiEventData;
6324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6325
6326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 ------------------------------------------------------------------------*/
6329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6330 {
6331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6332 "WDI API call before module is initialized - Fail request");
6333
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 }
6336
6337 /*------------------------------------------------------------------------
6338 Fill in Event data and post to the Main FSM
6339 ------------------------------------------------------------------------*/
6340 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6342 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6343 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006344 wdiEventData.pUserData = pUserData;
6345
6346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6347
6348}/*WDI_AddSTASelfReq*/
6349
6350
Jeff Johnsone7245742012-09-05 17:12:55 -07006351#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006352/**
6353 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6354 the device of a successful add TSpec negotiation. HW
6355 needs to receive the TSpec Info from the UMAC in order
6356 to configure properly the QoS data traffic. Upon the
6357 call of this API the WLAN DAL will pack and send a HAL
6358 Add TS request message to the lower RIVA sub-system if
6359 DAL is in state STARTED.
6360
6361 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006362 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006363
6364 WDI_PostAssocReq must have been called.
6365
6366 @param wdiAddTsReqParams: the add TS parameters as specified by
6367 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006368
Jeff Johnson295189b2012-06-20 16:38:30 -07006369 wdiAddTsRspCb: callback for passing back the response of
6370 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006371
Jeff Johnson295189b2012-06-20 16:38:30 -07006372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006373 callback
6374
Jeff Johnson295189b2012-06-20 16:38:30 -07006375 @see WDI_PostAssocReq
6376 @return Result of the function call
6377*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006378WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006379WDI_AggrAddTSReq
6380(
6381 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6382 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6383 void* pUserData
6384)
6385{
6386 WDI_EventInfoType wdiEventData;
6387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6388
6389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 ------------------------------------------------------------------------*/
6392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6393 {
6394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6395 "WDI API call before module is initialized - Fail request");
6396
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 }
6399
6400 /*------------------------------------------------------------------------
6401 Fill in Event data and post to the Main FSM
6402 ------------------------------------------------------------------------*/
6403 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006404 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6405 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6406 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 wdiEventData.pUserData = pUserData;
6408
6409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6410
6411}/*WDI_AggrAddTSReq*/
6412
6413#endif /* WLAN_FEATURE_VOWIFI_11R */
6414
Jeff Johnson295189b2012-06-20 16:38:30 -07006415/**
6416 @brief WDI_FTMCommandReq
6417 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006418
6419 @param ftmCommandReq: FTM Command Body
6420 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006421 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006422
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 @see
6424 @return Result of the function call
6425*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006426WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006427WDI_FTMCommandReq
6428(
6429 WDI_FTMCommandReqType *ftmCommandReq,
6430 WDI_FTMCommandRspCb ftmCommandRspCb,
6431 void *pUserData
6432)
6433{
6434 WDI_EventInfoType wdiEventData;
6435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6436
6437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 ------------------------------------------------------------------------*/
6440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6441 {
6442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6443 "WDI API call before module is initialized - Fail request");
6444
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 }
6447
6448 /*------------------------------------------------------------------------
6449 Fill in Event data and post to the Main FSM
6450 ------------------------------------------------------------------------*/
6451 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6452 wdiEventData.pEventData = (void *)ftmCommandReq;
6453 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6454 wdiEventData.pCBfnc = ftmCommandRspCb;
6455 wdiEventData.pUserData = pUserData;
6456
6457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6458}
Jeff Johnson295189b2012-06-20 16:38:30 -07006459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006460 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006461
6462 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006464
6465
6466 @param pwdiResumeReqParams: as specified by
6467 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006468
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 wdiResumeReqRspCb: callback for passing back the response of
6470 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006471
Jeff Johnson295189b2012-06-20 16:38:30 -07006472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 callback
6474
6475 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 @return Result of the function call
6477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006479WDI_HostResumeReq
6480(
6481 WDI_ResumeParamsType* pwdiResumeReqParams,
6482 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6483 void* pUserData
6484)
6485{
6486 WDI_EventInfoType wdiEventData;
6487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6488
6489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 ------------------------------------------------------------------------*/
6492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6493 {
6494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6495 "WDI API call before module is initialized - Fail request");
6496
Jeff Johnsone7245742012-09-05 17:12:55 -07006497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006498 }
6499
6500 /*------------------------------------------------------------------------
6501 Fill in Event data and post to the Main FSM
6502 ------------------------------------------------------------------------*/
6503 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 wdiEventData.pEventData = pwdiResumeReqParams;
6505 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6506 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 wdiEventData.pUserData = pUserData;
6508
6509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6510
6511}/*WDI_HostResumeReq*/
6512
6513/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006514 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006515
6516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006518
6519
6520 @param pwdiDelStaSelfReqParams: as specified by
6521 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006522
Jeff Johnson295189b2012-06-20 16:38:30 -07006523 wdiDelStaSelfRspCb: callback for passing back the response of
6524 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006525
Jeff Johnson295189b2012-06-20 16:38:30 -07006526 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 callback
6528
Jeff Johnson295189b2012-06-20 16:38:30 -07006529 @see WDI_PostAssocReq
6530 @return Result of the function call
6531*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006532WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006533WDI_DelSTASelfReq
6534(
6535 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6536 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6537 void* pUserData
6538)
6539{
6540 WDI_EventInfoType wdiEventData;
6541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6542
6543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006544 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006545 ------------------------------------------------------------------------*/
6546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6547 {
6548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6549 "WDI API call before module is initialized - Fail request");
6550
Jeff Johnsone7245742012-09-05 17:12:55 -07006551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006552 }
6553
6554 /*------------------------------------------------------------------------
6555 Fill in Event data and post to the Main FSM
6556 ------------------------------------------------------------------------*/
6557 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006558 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6559 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6560 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 wdiEventData.pUserData = pUserData;
6562
6563 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6564
6565}/*WDI_AggrAddTSReq*/
6566
6567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6569 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 Upon the call of this API the WLAN DAL will pack
6571 and send a HAL Set Tx Per Tracking request message to the
6572 lower RIVA sub-system if DAL is in state STARTED.
6573
6574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006576
Jeff Johnsone7245742012-09-05 17:12:55 -07006577 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006579
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 pwdiSetTxPerTrackingRspCb: callback for passing back the
6581 response of the set Tx PER Tracking configurations operation received
6582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006583
Jeff Johnson295189b2012-06-20 16:38:30 -07006584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 callback
6586
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 @return Result of the function call
6588*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006589WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006590WDI_SetTxPerTrackingReq
6591(
6592 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6593 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6594 void* pUserData
6595)
6596{
6597 WDI_EventInfoType wdiEventData;
6598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6599
6600 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006601 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006602 ------------------------------------------------------------------------*/
6603 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6604 {
6605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6606 "WDI API call before module is initialized - Fail request");
6607
Jeff Johnsone7245742012-09-05 17:12:55 -07006608 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 }
6610
6611 /*------------------------------------------------------------------------
6612 Fill in Event data and post to the Main FSM
6613 ------------------------------------------------------------------------*/
6614 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006615 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 wdiEventData.pUserData = pUserData;
6619
6620 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6621
6622}/*WDI_SetTxPerTrackingReq*/
6623
6624/**
6625 @brief WDI_SetTmLevelReq
6626 If HW Thermal condition changed, driver should react based on new
6627 HW thermal condition.
6628
6629 @param pwdiSetTmLevelReq: New thermal condition information
6630
6631 pwdiSetTmLevelRspCb: callback
6632
6633 usrData: user data will be passed back with the
6634 callback
6635
6636 @return Result of the function call
6637*/
6638WDI_Status
6639WDI_SetTmLevelReq
6640(
6641 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6642 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6643 void *usrData
6644)
6645{
6646 WDI_EventInfoType wdiEventData;
6647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6648
6649 /*------------------------------------------------------------------------
6650 Sanity Check
6651 ------------------------------------------------------------------------*/
6652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6653 {
6654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6655 "WDI API call before module is initialized - Fail request");
6656
6657 return WDI_STATUS_E_NOT_ALLOWED;
6658 }
6659
6660 /*------------------------------------------------------------------------
6661 Fill in Event data and post to the Main FSM
6662 ------------------------------------------------------------------------*/
6663 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6664 wdiEventData.pEventData = pwdiSetTmLevelReq;
6665 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6666 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6667 wdiEventData.pUserData = usrData;
6668
6669 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6670}
6671
6672/**
6673 @brief WDI_HostSuspendInd
6674
6675 Suspend Indication from the upper layer will be sent
6676 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006677
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006679
6680 @see
6681
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 @return Status of the request
6683*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006684WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006685WDI_HostSuspendInd
6686(
6687 WDI_SuspendParamsType* pwdiSuspendIndParams
6688)
6689{
6690
6691 WDI_EventInfoType wdiEventData;
6692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6693
6694 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006696 ------------------------------------------------------------------------*/
6697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6698 {
6699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6700 "WDI API call before module is initialized - Fail request");
6701
Jeff Johnsone7245742012-09-05 17:12:55 -07006702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006703 }
6704
6705 /*------------------------------------------------------------------------
6706 Fill in Event data and post to the Main FSM
6707 ------------------------------------------------------------------------*/
6708 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006709 wdiEventData.pEventData = pwdiSuspendIndParams;
6710 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6711 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006712 wdiEventData.pUserData = NULL;
6713
6714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6715
6716}/*WDI_HostSuspendInd*/
6717
6718/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006719 @brief WDI_TrafficStatsInd
6720 Traffic Stats from the upper layer will be sent
6721 down to HAL
6722
6723 @param WDI_TrafficStatsIndType
6724
6725 @see
6726
6727 @return Status of the request
6728*/
6729WDI_Status
6730WDI_TrafficStatsInd
6731(
6732 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6733)
6734{
6735
6736 WDI_EventInfoType wdiEventData;
6737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6738
6739 /*------------------------------------------------------------------------
6740 Sanity Check
6741 ------------------------------------------------------------------------*/
6742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6743 {
6744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6745 "WDI API call before module is initialized - Fail request");
6746
6747 return WDI_STATUS_E_NOT_ALLOWED;
6748 }
6749
6750 /*------------------------------------------------------------------------
6751 Fill in Event data and post to the Main FSM
6752 ------------------------------------------------------------------------*/
6753 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6754 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6755 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6756 wdiEventData.pCBfnc = NULL;
6757 wdiEventData.pUserData = NULL;
6758
6759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6760
6761}/*WDI_TrafficStatsInd*/
6762
Chet Lanctot186b5732013-03-18 10:26:30 -07006763#ifdef WLAN_FEATURE_11W
6764/**
6765 @brief WDI_ExcludeUnencryptedInd
6766 Register with HAL to receive/drop unencrypted frames
6767
6768 @param WDI_ExcludeUnencryptIndType
6769
6770 @see
6771
6772 @return Status of the request
6773*/
6774WDI_Status
6775WDI_ExcludeUnencryptedInd
6776(
6777 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6778)
6779{
6780
6781 WDI_EventInfoType wdiEventData;
6782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6783
6784 /*------------------------------------------------------------------------
6785 Sanity Check
6786 ------------------------------------------------------------------------*/
6787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6788 {
6789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6790 "WDI API call before module is initialized - Fail request");
6791
6792 return WDI_STATUS_E_NOT_ALLOWED;
6793 }
6794
6795 /*------------------------------------------------------------------------
6796 Fill in Event data and post to the Main FSM
6797 ------------------------------------------------------------------------*/
6798 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6799 wdiEventData.pEventData = pWdiExcUnencParams;
6800 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6801 wdiEventData.pCBfnc = NULL;
6802 wdiEventData.pUserData = NULL;
6803
6804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6805
6806}/*WDI_TrafficStatsInd*/
6807#endif
6808
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006809/**
Yue Mab9c86f42013-08-14 15:59:08 -07006810 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6811
6812 @param addPeriodicTxPtrnParams: Add Pattern parameters
6813
6814 @see
6815
6816 @return Status of the request
6817*/
6818WDI_Status
6819WDI_AddPeriodicTxPtrnInd
6820(
6821 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6822)
6823{
6824 WDI_EventInfoType wdiEventData;
6825
6826 /*-------------------------------------------------------------------------
6827 Sanity Check
6828 ------------------------------------------------------------------------*/
6829 if (eWLAN_PAL_FALSE == gWDIInitialized)
6830 {
6831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6832 "WDI API call before module is initialized - Fail request!");
6833
6834 return WDI_STATUS_E_NOT_ALLOWED;
6835 }
6836
6837 /*-------------------------------------------------------------------------
6838 Fill in Event data and post to the Main FSM
6839 ------------------------------------------------------------------------*/
6840 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6841 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6842 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6843 wdiEventData.pCBfnc = NULL;
6844 wdiEventData.pUserData = NULL;
6845
6846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6847}
6848
6849/**
6850 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6851
6852 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6853
6854 @see
6855
6856 @return Status of the request
6857*/
6858WDI_Status
6859WDI_DelPeriodicTxPtrnInd
6860(
6861 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6862)
6863{
6864 WDI_EventInfoType wdiEventData;
6865
6866 /*-------------------------------------------------------------------------
6867 Sanity Check
6868 ------------------------------------------------------------------------*/
6869 if (eWLAN_PAL_FALSE == gWDIInitialized)
6870 {
6871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6872 "WDI API call before module is initialized - Fail request!");
6873
6874 return WDI_STATUS_E_NOT_ALLOWED;
6875 }
6876
6877 /*-------------------------------------------------------------------------
6878 Fill in Event data and post to the Main FSM
6879 ------------------------------------------------------------------------*/
6880 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6881 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6882 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6883 wdiEventData.pCBfnc = NULL;
6884 wdiEventData.pUserData = NULL;
6885
6886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6887}
6888
6889/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 @brief WDI_HALDumpCmdReq
6891 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006892
6893 @param halDumpCmdReqParams: Hal Dump Command Body
6894 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006896
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 @see
6898 @return Result of the function call
6899*/
6900WDI_Status WDI_HALDumpCmdReq
6901(
6902 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6903 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6904 void *pUserData
6905)
6906{
6907 WDI_EventInfoType wdiEventData;
6908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6909
6910 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 ------------------------------------------------------------------------*/
6913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6914 {
6915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6916 "WDI API call before module is initialized - Fail request");
6917
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 }
6920
6921 /*------------------------------------------------------------------------
6922 Fill in Event data and post to the Main FSM
6923 ------------------------------------------------------------------------*/
6924 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6925 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6926 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6927 wdiEventData.pCBfnc = halDumpCmdRspCb;
6928 wdiEventData.pUserData = pUserData;
6929
6930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6931}
6932
Jeff Johnsone7245742012-09-05 17:12:55 -07006933/*============================================================================
6934
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006936
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 ============================================================================*/
6938
6939/**
6940 @brief Main FSM Start function for all states except BUSY
6941
Jeff Johnsone7245742012-09-05 17:12:55 -07006942
6943 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 wdiEV: event posted to the main DAL FSM
6945 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006946 structure
6947
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 @see
6949 @return Result of the function call
6950*/
6951WDI_Status
6952WDI_PostMainEvent
6953(
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 WDI_ControlBlockType* pWDICtx,
6955 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006957)
6958{
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 WDI_Status wdiStatus;
6960 WDI_MainFuncType pfnWDIMainEvHdlr;
6961 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05306962 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6964
6965 /*-------------------------------------------------------------------------
6966 Sanity check
6967 -------------------------------------------------------------------------*/
6968 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6969 ( wdiEV >= WDI_MAX_EVENT ))
6970 {
6971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6972 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6973 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 }
6976
6977 /*Access to the global state must be locked */
6978 wpalMutexAcquire(&pWDICtx->wptMutex);
6979
6980 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006982
6983 wdiOldState = pWDICtx->uGlobalState;
6984
6985 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6987 response comes from CCPU for the request sent by host:
6988 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 -07006989 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 -07006990 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 CCPU:
6992 don't change the state */
6993 if ( WDI_RESPONSE_EVENT != wdiEV)
6994 {
6995 /*Transition to BUSY State - the request is now being processed by the FSM,
6996 if the request fails we shall transition back to the old state, if not
6997 the request will manage its own state transition*/
6998 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6999 }
7000 /* If the state function associated with the EV is NULL it means that this
7001 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 {
7004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 }
7009 else
7010 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307011 if (!(failCnt & 0xF))
7012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307015 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007016 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 }
7018
7019 /* If a request handles itself well it will end up in a success or in a
7020 pending
7021 Success - means that the request was processed and the proper state
7022 transition already occurred or will occur when the resp is received
7023 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007024
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 Pending - means the request could not be processed at this moment in time
7026 because the FSM was already busy so no state transition or dequeueing
7027 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007028
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 Success for synchronous case means that the transition may occur and
7030 processing of pending requests may continue - so it should go through
7031 and restores the state and continue processing queued requests*/
7032 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7033 ( WDI_STATUS_PENDING != wdiStatus ))
7034 {
7035 if ( WDI_RESPONSE_EVENT != wdiEV)
7036 {
7037 /*The request has failed or could not be processed - transition back to
7038 the old state - check to see if anything was queued and try to execute
7039 The dequeue logic should post a message to a thread and return - no
7040 actual processing can occur */
7041 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7042 }
7043 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007044
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 }
7046
7047 /* we have completed processing the event */
7048 wpalMutexRelease(&pWDICtx->wptMutex);
7049
Jeff Johnsone7245742012-09-05 17:12:55 -07007050 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007051
7052}/*WDI_PostMainEvent*/
7053
7054
7055/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007056 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007057--------------------------------------------------------------------------*/
7058/**
7059 @brief Main FSM Start function for all states except BUSY
7060
Jeff Johnsone7245742012-09-05 17:12:55 -07007061
7062 @param pWDICtx: pointer to the WLAN DAL context
7063 pEventData: pointer to the event information structure
7064
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 @see
7066 @return Result of the function call
7067*/
7068WDI_Status
7069WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007070(
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 WDI_ControlBlockType* pWDICtx,
7072 WDI_EventInfoType* pEventData
7073)
7074{
7075
7076 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 ----------------------------------------------------------------------*/
7079 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7080 {
7081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007082 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 pWDICtx, pEventData);
7084 return WDI_STATUS_E_FAILURE;
7085 }
7086
7087 wpalMutexAcquire(&pWDICtx->wptMutex);
7088
7089 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007090 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 ----------------------------------------------------------------------*/
7092 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7093 {
7094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7095 "Control Transport not yet Open - queueing the request");
7096
7097 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007099
7100 wpalMutexRelease(&pWDICtx->wptMutex);
7101 return WDI_STATUS_PENDING;
7102 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007103
Jeff Johnson295189b2012-06-20 16:38:30 -07007104 wpalMutexRelease(&pWDICtx->wptMutex);
7105
7106 /*Return Success*/
7107 return WDI_ProcessRequest( pWDICtx, pEventData );
7108
7109}/*WDI_MainStart*/
7110
7111/**
7112 @brief Main FSM Response function for state INIT
7113
Jeff Johnsone7245742012-09-05 17:12:55 -07007114
7115 @param pWDICtx: pointer to the WLAN DAL context
7116 pEventData: pointer to the event information structure
7117
Jeff Johnson295189b2012-06-20 16:38:30 -07007118 @see
7119 @return Result of the function call
7120*/
7121WDI_Status
7122WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007123(
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 WDI_ControlBlockType* pWDICtx,
7125 WDI_EventInfoType* pEventData
7126)
7127{
7128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007131 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007132
7133 /*Return Success*/
7134 return WDI_STATUS_E_NOT_ALLOWED;
7135}/* WDI_MainRspInit */
7136
7137/**
7138 @brief Main FSM Close function for all states except BUSY
7139
Jeff Johnsone7245742012-09-05 17:12:55 -07007140
7141 @param pWDICtx: pointer to the WLAN DAL context
7142 pEventData: pointer to the event information structure
7143
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 @see
7145 @return Result of the function call
7146*/
7147WDI_Status
7148WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007149(
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 WDI_ControlBlockType* pWDICtx,
7151 WDI_EventInfoType* pEventData
7152)
7153{
7154
7155 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 ----------------------------------------------------------------------*/
7158 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7159 {
7160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007161 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 pWDICtx, pEventData);
7163 return WDI_STATUS_E_FAILURE;
7164 }
7165
7166 /*Return Success*/
7167 return WDI_ProcessRequest( pWDICtx, pEventData );
7168
7169}/*WDI_MainClose*/
7170/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007171 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007172--------------------------------------------------------------------------*/
7173/**
7174 @brief Main FSM Start function for state STARTED
7175
Jeff Johnsone7245742012-09-05 17:12:55 -07007176
7177 @param pWDICtx: pointer to the WLAN DAL context
7178 pEventData: pointer to the event information structure
7179
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 @see
7181 @return Result of the function call
7182*/
7183WDI_Status
7184WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007185(
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 WDI_ControlBlockType* pWDICtx,
7187 WDI_EventInfoType* pEventData
7188)
7189{
7190 WDI_StartRspCb wdiStartRspCb = NULL;
7191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7192
7193 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 ----------------------------------------------------------------------*/
7196 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7197 {
7198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007199 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 pWDICtx, pEventData);
7201 return WDI_STATUS_E_FAILURE;
7202 }
7203
7204 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 ----------------------------------------------------------------------*/
7207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007208 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007209
7210 wpalMutexAcquire(&pWDICtx->wptMutex);
7211
7212 /*Transition back to started because the post function transitioned us to
7213 busy*/
7214 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7215
7216 /*Check to see if any request is pending*/
7217 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007218
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 wpalMutexRelease(&pWDICtx->wptMutex);
7220
7221 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7223
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307225 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007226
7227 /*Return Success*/
7228 return WDI_STATUS_SUCCESS;
7229
7230}/*WDI_MainStartStarted*/
7231
7232/**
7233 @brief Main FSM Stop function for state STARTED
7234
Jeff Johnsone7245742012-09-05 17:12:55 -07007235
7236 @param pWDICtx: pointer to the WLAN DAL context
7237 pEventData: pointer to the event information structure
7238
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 @see
7240 @return Result of the function call
7241*/
7242WDI_Status
7243WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007244(
Jeff Johnson295189b2012-06-20 16:38:30 -07007245 WDI_ControlBlockType* pWDICtx,
7246 WDI_EventInfoType* pEventData
7247)
7248{
7249 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007251 ----------------------------------------------------------------------*/
7252 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7253 {
7254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007255 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 pWDICtx, pEventData);
7257 return WDI_STATUS_E_FAILURE;
7258 }
7259
7260 /*State at this point is BUSY - because we enter this state before posting
7261 an event to the FSM in order to prevent potential race conditions*/
7262
7263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7264 "Processing stop request in FSM");
7265
7266 /*Return Success*/
7267 return WDI_ProcessRequest( pWDICtx, pEventData );
7268
7269}/*WDI_MainStopStarted*/
7270/**
7271 @brief Main FSM Request function for state started
7272
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
7274 @param pWDICtx: pointer to the WLAN DAL context
7275 pEventData: pointer to the event information structure
7276
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 @see
7278 @return Result of the function call
7279*/
7280WDI_Status
7281WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007282(
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 WDI_ControlBlockType* pWDICtx,
7284 WDI_EventInfoType* pEventData
7285)
7286{
7287
7288 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007289 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 ----------------------------------------------------------------------*/
7291 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7292 {
7293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007294 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 pWDICtx, pEventData);
7296 return WDI_STATUS_E_FAILURE;
7297 }
7298
7299 /*State at this point is BUSY - because we enter this state before posting
7300 an event to the FSM in order to prevent potential race conditions*/
7301
7302 /*Return Success*/
7303 return WDI_ProcessRequest( pWDICtx, pEventData );
7304
7305}/*WDI_MainReqStarted*/
7306
7307/**
7308 @brief Main FSM Response function for all states except INIT
7309
Jeff Johnsone7245742012-09-05 17:12:55 -07007310
7311 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007313
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 @see
7315 @return Result of the function call
7316*/
7317WDI_Status
7318WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007319(
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 WDI_ControlBlockType* pWDICtx,
7321 WDI_EventInfoType* pEventData
7322)
7323{
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 wpt_boolean expectedResponse;
7326
7327 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 ----------------------------------------------------------------------*/
7330 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7331 {
7332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007333 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007334 pWDICtx, pEventData);
7335 return WDI_STATUS_E_FAILURE;
7336 }
7337
7338 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7339 {
7340 /* we received an expected response */
7341 expectedResponse = eWLAN_PAL_TRUE;
7342
7343 /*We expect that we will transition to started after this processing*/
7344 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7345
7346 /* we are no longer expecting a response */
7347 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7348 }
7349 else
7350 {
7351 /* we received an indication or unexpected response */
7352 expectedResponse = eWLAN_PAL_FALSE;
7353 /* for indications no need to update state from what it is right
7354 now, unless it explicitly does it in the indication handler (say
7355 for device failure ind) */
7356 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7357 }
7358
7359 /*Process the response and indication */
7360 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7361
7362 /*Lock the CB as we are about to do a state transition*/
7363 wpalMutexAcquire(&pWDICtx->wptMutex);
7364
7365 /*Transition to the expected state after the response processing
7366 - this should always be started state with the following exceptions:
7367 1. processing of a failed start response
7368 2. device failure detected while processing response
7369 3. stop response received*/
7370 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007371
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 /*Dequeue request that may have been queued while we were waiting for the
7373 response */
7374 if ( expectedResponse )
7375 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 }
7378
7379 wpalMutexRelease(&pWDICtx->wptMutex);
7380
7381 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383
7384}/*WDI_MainRsp*/
7385
7386/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007387 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007388--------------------------------------------------------------------------*/
7389/**
7390 @brief Main FSM Stop function for state STOPPED
7391
Jeff Johnsone7245742012-09-05 17:12:55 -07007392
7393 @param pWDICtx: pointer to the WLAN DAL context
7394 pEventData: pointer to the event information structure
7395
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 @see
7397 @return Result of the function call
7398*/
7399WDI_Status
7400WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007401(
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 WDI_ControlBlockType* pWDICtx,
7403 WDI_EventInfoType* pEventData
7404)
7405{
7406 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007407 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 ----------------------------------------------------------------------*/
7409 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7410 {
7411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007412 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 pWDICtx, pEventData);
7414 return WDI_STATUS_E_FAILURE;
7415 }
7416
7417 /*We should normally not get a STOP request if we are already stopped
7418 since we should normally be stopped by the UMAC. However in some
7419 error situations we put ourselves in the stopped state without the
7420 UMAC knowing, so when we get a STOP request in this state we still
7421 process it since we need to clean up the underlying state */
7422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7423 "Processing stop request while stopped in FSM");
7424
7425 /*Return Success*/
7426 return WDI_ProcessRequest( pWDICtx, pEventData );
7427
7428}/*WDI_MainStopStopped*/
7429
7430/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007431 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007432--------------------------------------------------------------------------*/
7433/**
7434 @brief Main FSM Start function for state BUSY
7435
Jeff Johnsone7245742012-09-05 17:12:55 -07007436
7437 @param pWDICtx: pointer to the WLAN DAL context
7438 pEventData: pointer to the event information structure
7439
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 @see
7441 @return Result of the function call
7442*/
7443WDI_Status
7444WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007445(
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 WDI_ControlBlockType* pWDICtx,
7447 WDI_EventInfoType* pEventData
7448)
7449{
7450 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 ----------------------------------------------------------------------*/
7453 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7454 {
7455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007456 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 pWDICtx, pEventData);
7458 return WDI_STATUS_E_FAILURE;
7459 }
7460
7461 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 ----------------------------------------------------------------------*/
7464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7465 "WDI Busy state - queue start request");
7466
7467 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007469
7470 /*Return Success*/
7471 return WDI_STATUS_PENDING;
7472}/*WDI_MainStartBusy*/
7473
7474/**
7475 @brief Main FSM Stop function for state BUSY
7476
Jeff Johnsone7245742012-09-05 17:12:55 -07007477
7478 @param pWDICtx: pointer to the WLAN DAL context
7479 pEventData: pointer to the event information structure
7480
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 @see
7482 @return Result of the function call
7483*/
7484WDI_Status
7485WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007486(
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 WDI_ControlBlockType* pWDICtx,
7488 WDI_EventInfoType* pEventData
7489)
7490{
7491 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 ----------------------------------------------------------------------*/
7494 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7495 {
7496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007497 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 pWDICtx, pEventData);
7499 return WDI_STATUS_E_FAILURE;
7500 }
7501
7502 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 ----------------------------------------------------------------------*/
7505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7506 "WDI Busy state - queue stop request");
7507
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007510
Jeff Johnson295189b2012-06-20 16:38:30 -07007511}/*WDI_MainStopBusy*/
7512
7513/**
7514 @brief Main FSM Request function for state BUSY
7515
Jeff Johnsone7245742012-09-05 17:12:55 -07007516
7517 @param pWDICtx: pointer to the WLAN DAL context
7518 pEventData: pointer to the event information structure
7519
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 @see
7521 @return Result of the function call
7522*/
7523WDI_Status
7524WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007525(
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 WDI_ControlBlockType* pWDICtx,
7527 WDI_EventInfoType* pEventData
7528)
7529{
7530 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 ----------------------------------------------------------------------*/
7533 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7534 {
7535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007536 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 pWDICtx, pEventData);
7538 return WDI_STATUS_E_FAILURE;
7539 }
7540
7541 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007542 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 ----------------------------------------------------------------------*/
7544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7545 "WDI Busy state - queue request %d because waiting for response %d",
7546 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7547
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007550
Jeff Johnson295189b2012-06-20 16:38:30 -07007551}/*WDI_MainReqBusy*/
7552/**
7553 @brief Main FSM Close function for state BUSY
7554
Jeff Johnsone7245742012-09-05 17:12:55 -07007555
7556 @param pWDICtx: pointer to the WLAN DAL context
7557 pEventData: pointer to the event information structure
7558
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 @see
7560 @return Result of the function call
7561*/
7562WDI_Status
7563WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007564(
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 WDI_ControlBlockType* pWDICtx,
7566 WDI_EventInfoType* pEventData
7567)
7568{
7569 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 ----------------------------------------------------------------------*/
7572 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7573 {
7574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007575 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 pWDICtx, pEventData);
7577 return WDI_STATUS_E_FAILURE;
7578 }
7579
7580 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 ----------------------------------------------------------------------*/
7583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7584 "WDI Busy state - queue close request");
7585
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007588
Jeff Johnson295189b2012-06-20 16:38:30 -07007589}/*WDI_MainCloseBusy*/
7590
7591/**
7592 @brief Main FSM Shutdown function for INIT & STARTED states
7593
7594
7595 @param pWDICtx: pointer to the WLAN DAL context
7596 pEventData: pointer to the event information structure
7597
7598 @see
7599 @return Result of the function call
7600*/
7601WDI_Status
7602WDI_MainShutdown
7603(
7604 WDI_ControlBlockType* pWDICtx,
7605 WDI_EventInfoType* pEventData
7606)
7607{
7608 /*--------------------------------------------------------------------
7609 Sanity Check
7610 ----------------------------------------------------------------------*/
7611 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7612 {
7613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007614 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 pWDICtx, pEventData);
7616 return WDI_STATUS_E_FAILURE;
7617 }
7618
7619 /*State at this point is BUSY - because we enter this state before posting
7620 an event to the FSM in order to prevent potential race conditions*/
7621
7622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7623 "Processing shutdown request in FSM");
7624
7625 /*Return Success*/
7626 return WDI_ProcessRequest( pWDICtx, pEventData );
7627
7628}/*WDI_MainShutdown*/
7629
7630/**
7631 @brief Main FSM Shutdown function for BUSY state
7632
7633
7634 @param pWDICtx: pointer to the WLAN DAL context
7635 pEventData: pointer to the event information structure
7636
7637 @see
7638 @return Result of the function call
7639*/
7640WDI_Status
7641WDI_MainShutdownBusy
7642(
7643 WDI_ControlBlockType* pWDICtx,
7644 WDI_EventInfoType* pEventData
7645)
7646{
7647 /*--------------------------------------------------------------------
7648 Sanity Check
7649 ----------------------------------------------------------------------*/
7650 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7651 {
7652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007653 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 pWDICtx, pEventData);
7655 return WDI_STATUS_E_FAILURE;
7656 }
7657
7658 /* If you are waiting for a HAL response at this stage, you are not
7659 * going to get it. Riva is already shutdown/crashed.
7660 */
7661 wpalTimerStop(&gWDICb.wptResponseTimer);
7662
7663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7664 "Processing shutdown request in FSM: Busy state ");
7665
7666 return WDI_ProcessRequest( pWDICtx, pEventData );
7667
7668}/*WDI_MainShutdownBusy*/
7669
7670
Jeff Johnsone7245742012-09-05 17:12:55 -07007671/*=======================================================================
7672
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007674
Jeff Johnson295189b2012-06-20 16:38:30 -07007675*=======================================================================*/
7676
7677/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007679========================================================================*/
7680/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007683
7684 @param pWDICtx: pointer to the WLAN DAL context
7685 pEventData: pointer to the event information structure
7686
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 @see
7688 @return Result of the function call
7689*/
7690WDI_Status
7691WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007692(
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 WDI_ControlBlockType* pWDICtx,
7694 WDI_EventInfoType* pEventData
7695)
7696{
7697 WDI_StartReqParamsType* pwdiStartParams = NULL;
7698 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007699 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 wpt_uint16 usDataOffset = 0;
7701 wpt_uint16 usSendSize = 0;
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 tHalMacStartReqMsg halStartReq;
7704 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7706
7707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 -------------------------------------------------------------------------*/
7710 if (( NULL == pEventData ) ||
7711 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7712 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7713 {
7714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 }
7719
7720 /*-----------------------------------------------------------------------
7721 Get message buffer
7722 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 pwdiStartParams->usConfigBufferLen;
7725
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 usLen,
7728 &pSendBuffer, &usDataOffset, &usSendSize))||
7729 ( usSendSize < (usDataOffset + usLen )))
7730 {
7731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007732 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 pEventData, pwdiStartParams, wdiStartRspCb);
7734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 }
7737
7738 /*-----------------------------------------------------------------------
7739 Fill in the message
7740 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 halStartReq.startReqParams.driverType =
7742 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007743
Jeff Johnsone7245742012-09-05 17:12:55 -07007744 halStartReq.startReqParams.uConfigBufferLen =
7745 pwdiStartParams->usConfigBufferLen;
7746 wpalMemoryCopy( pSendBuffer+usDataOffset,
7747 &halStartReq.startReqParams,
7748 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007749
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 usDataOffset += sizeof(halStartReq.startReqParams);
7751 wpalMemoryCopy( pSendBuffer+usDataOffset,
7752 pwdiStartParams->pConfigBuffer,
7753 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007754
7755 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007757
7758 /*Save Low Level Ind CB and associated user data - it will be used further
7759 on when an indication is coming from the lower MAC*/
7760 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007762
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7769
Jeff Johnsone7245742012-09-05 17:12:55 -07007770
Jeff Johnson295189b2012-06-20 16:38:30 -07007771}/*WDI_ProcessStartReq*/
7772
7773/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007776
7777 @param pWDICtx: pointer to the WLAN DAL context
7778 pEventData: pointer to the event information structure
7779
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 @see
7781 @return Result of the function call
7782*/
7783WDI_Status
7784WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007785(
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 WDI_ControlBlockType* pWDICtx,
7787 WDI_EventInfoType* pEventData
7788)
7789{
7790 WDI_StopReqParamsType* pwdiStopParams = NULL;
7791 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 wpt_uint16 usDataOffset = 0;
7794 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007795 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7798
7799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 -------------------------------------------------------------------------*/
7802 if (( NULL == pEventData ) ||
7803 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7804 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7805 {
7806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007809 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 }
7811
7812 /*-----------------------------------------------------------------------
7813 Get message buffer
7814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 sizeof(halStopReq.stopReqParams),
7817 &pSendBuffer, &usDataOffset, &usSendSize))||
7818 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7819 {
7820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007821 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 pEventData, pwdiStopParams, wdiStopRspCb);
7823 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007824 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 }
7826
7827 /*-----------------------------------------------------------------------
7828 Fill in the message
7829 -----------------------------------------------------------------------*/
7830 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7831 pwdiStopParams->wdiStopReason);
7832
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 wpalMemoryCopy( pSendBuffer+usDataOffset,
7834 &halStopReq.stopReqParams,
7835 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007836
7837 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007839
7840 /*! TO DO: stop the data services */
7841 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7842 {
7843 /*Stop the STA Table !UT- check this logic again
7844 It is safer to do it here than on the response - because a stop is imminent*/
7845 WDI_STATableStop(pWDICtx);
7846
7847 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007848 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7849 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 {
7851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7852 "WDI Init failed to reset power state event");
7853
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007855 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 }
7857 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007858 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7859 if( eWLAN_PAL_STATUS_SUCCESS != status )
7860 {
7861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007862 "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 -08007863 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007864 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007865 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007867 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007869 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7870 WDI_SET_POWER_STATE_TIMEOUT);
7871 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 {
7873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7874 "WDI Init failed to wait on an event");
7875
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007877 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 }
7879 }
7880
7881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7886
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007887fail:
7888 // Release the message buffer so we don't leak
7889 wpalMemoryFree(pSendBuffer);
7890
7891failRequest:
7892 //WDA should have failure check to avoid the memory leak
7893 return WDI_STATUS_E_FAILURE;
7894
Jeff Johnson295189b2012-06-20 16:38:30 -07007895}/*WDI_ProcessStopReq*/
7896
7897/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007900
7901 @param pWDICtx: pointer to the WLAN DAL context
7902 pEventData: pointer to the event information structure
7903
Jeff Johnson295189b2012-06-20 16:38:30 -07007904 @see
7905 @return Result of the function call
7906*/
7907WDI_Status
7908WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007909(
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 WDI_ControlBlockType* pWDICtx,
7911 WDI_EventInfoType* pEventData
7912)
7913{
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7916
7917 /*Lock control block for cleanup*/
7918 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007919
Jeff Johnson295189b2012-06-20 16:38:30 -07007920 /*Clear all pending request*/
7921 WDI_ClearPendingRequests(pWDICtx);
7922
7923 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007925
7926 /* Close Data transport*/
7927 /* FTM mode does not open Data Path */
7928 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7929 {
7930 WDTS_Close(pWDICtx);
7931 }
7932
7933 /*Close the STA Table !UT- check this logic again*/
7934 WDI_STATableClose(pWDICtx);
7935
7936 /*close the PAL */
7937 wptStatus = wpalClose(pWDICtx->pPALContext);
7938 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7939 {
7940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7941 "Failed to wpal Close %d", wptStatus);
7942 WDI_ASSERT(0);
7943 }
7944
7945 /*Transition back to init state*/
7946 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7947
7948 wpalMutexRelease(&pWDICtx->wptMutex);
7949
7950 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007952
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954}/*WDI_ProcessCloseReq*/
7955
7956
7957/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007959===========================================================================*/
7960
7961/**
7962 @brief Process Init Scan Request function (called when Main FSM
7963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007964
7965 @param pWDICtx: pointer to the WLAN DAL context
7966 pEventData: pointer to the event information structure
7967
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 @see
7969 @return Result of the function call
7970*/
7971WDI_Status
7972WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007973(
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 WDI_ControlBlockType* pWDICtx,
7975 WDI_EventInfoType* pEventData
7976)
7977{
7978 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7979 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 wpt_uint16 usDataOffset = 0;
7982 wpt_uint16 usSendSize = 0;
7983 wpt_uint8 i = 0;
7984
7985 tHalInitScanReqMsg halInitScanReqMsg;
7986
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 * It shold be removed once host and riva changes are in sync*/
7989 tHalInitScanConReqMsg halInitScanConReqMsg;
7990
7991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7992
7993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 -------------------------------------------------------------------------*/
7996 if (( NULL == pEventData ) ||
7997 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7998 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7999 {
8000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 }
8005
8006#if 0
8007 wpalMutexAcquire(&pWDICtx->wptMutex);
8008 /*-----------------------------------------------------------------------
8009 Check to see if SCAN is already in progress - if so reject the req
8010 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 -----------------------------------------------------------------------*/
8013 if ( pWDICtx->bScanInProgress )
8014 {
8015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8016 "Scan is already in progress - subsequent scan is not allowed"
8017 " until the first scan completes");
8018
8019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 }
8022
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8024 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008025
8026 wpalMutexRelease(&pWDICtx->wptMutex);
8027#endif
Viral Modid86bde22012-12-10 13:09:21 -08008028 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 * It shold be removed once host and riva changes are in sync*/
8032 /*-----------------------------------------------------------------------
8033 Get message buffer
8034 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 sizeof(halInitScanConReqMsg.initScanParams),
8037 &pSendBuffer, &usDataOffset, &usSendSize))||
8038 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8039 {
8040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008041 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 }
8046
8047
8048 /*-----------------------------------------------------------------------
8049 Fill in the message
8050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8053
8054 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8055 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8056
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008059 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008061 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8063
8064 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8065 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8066
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8068 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069
Jeff Johnsone7245742012-09-05 17:12:55 -07008070 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8072
8073 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8074 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8077 }
8078
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 wpalMemoryCopy( pSendBuffer+usDataOffset,
8080 &halInitScanConReqMsg.initScanParams,
8081 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 }
8083 else
8084 {
8085 /*-----------------------------------------------------------------------
8086 Get message buffer
8087 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 sizeof(halInitScanReqMsg.initScanParams),
8090 &pSendBuffer, &usDataOffset, &usSendSize))||
8091 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8092 {
8093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008094 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 }
8099
8100
8101 /*-----------------------------------------------------------------------
8102 Fill in the message
8103 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8106
8107 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8108 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8109
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8116
8117 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8118 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8119
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8122
8123 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8124 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008126 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8127 }
8128
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 wpalMemoryCopy( pSendBuffer+usDataOffset,
8130 &halInitScanReqMsg.initScanParams,
8131 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008132 }
8133
8134 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136
8137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8142
8143}/*WDI_ProcessInitScanReq*/
8144
8145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008148
8149 @param pWDICtx: pointer to the WLAN DAL context
8150 pEventData: pointer to the event information structure
8151
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 @see
8153 @return Result of the function call
8154*/
8155WDI_Status
8156WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008157(
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 WDI_ControlBlockType* pWDICtx,
8159 WDI_EventInfoType* pEventData
8160)
8161{
8162 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8163 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 wpt_uint16 usDataOffset = 0;
8166 wpt_uint16 usSendSize = 0;
8167
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8170
8171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 -------------------------------------------------------------------------*/
8174 if (( NULL == pEventData ) ||
8175 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8176 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8177 {
8178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 }
8183
8184#if 0
8185 wpalMutexAcquire(&pWDICtx->wptMutex);
8186 /*-----------------------------------------------------------------------
8187 Check to see if SCAN is already in progress - start scan is only
8188 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8193 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8194 {
8195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8196 "Scan start not allowed in this state %d %d",
8197 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008198
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 }
8202
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008204
8205 wpalMutexRelease(&pWDICtx->wptMutex);
8206#endif
8207
8208 /*-----------------------------------------------------------------------
8209 Get message buffer
8210 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 sizeof(halStartScanReqMsg.startScanParams),
8213 &pSendBuffer, &usDataOffset, &usSendSize))||
8214 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8215 {
8216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008217 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 }
8222
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 wpalMemoryCopy( pSendBuffer+usDataOffset,
8226 &halStartScanReqMsg.startScanParams,
8227 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008228
8229 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
8232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8237}/*WDI_ProcessStartScanReq*/
8238
8239
8240/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008241 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008243
8244 @param pWDICtx: pointer to the WLAN DAL context
8245 pEventData: pointer to the event information structure
8246
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 @see
8248 @return Result of the function call
8249*/
8250WDI_Status
8251WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008252(
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 WDI_ControlBlockType* pWDICtx,
8254 WDI_EventInfoType* pEventData
8255)
8256{
8257 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8258 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 wpt_uint16 usDataOffset = 0;
8261 wpt_uint16 usSendSize = 0;
8262
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8265
8266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 -------------------------------------------------------------------------*/
8269 if (( NULL == pEventData ) ||
8270 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8271 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8272 {
8273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 }
8278
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8280 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 * forwarded to HAL and result in hang*/
8282#if 0
8283 wpalMutexAcquire(&pWDICtx->wptMutex);
8284 /*-----------------------------------------------------------------------
8285 Check to see if SCAN is already in progress - end scan is only
8286 allowed when a scan is ongoing and the state of the scan procedure
8287 is started
8288 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8291 {
8292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8293 "End start not allowed in this state %d %d",
8294 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008295
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 }
8299
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008301
8302 wpalMutexRelease(&pWDICtx->wptMutex);
8303#endif
8304
8305 /*-----------------------------------------------------------------------
8306 Get message buffer
8307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 sizeof(halEndScanReqMsg.endScanParams),
8310 &pSendBuffer, &usDataOffset, &usSendSize))||
8311 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8312 {
8313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008314 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008318 }
8319
8320 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 wpalMemoryCopy( pSendBuffer+usDataOffset,
8323 &halEndScanReqMsg.endScanParams,
8324 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
8326 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008328
8329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8334}/*WDI_ProcessEndScanReq*/
8335
8336
8337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008340
8341 @param pWDICtx: pointer to the WLAN DAL context
8342 pEventData: pointer to the event information structure
8343
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 @see
8345 @return Result of the function call
8346*/
8347WDI_Status
8348WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008349(
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 WDI_ControlBlockType* pWDICtx,
8351 WDI_EventInfoType* pEventData
8352)
8353{
8354 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8355 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 wpt_uint16 usDataOffset = 0;
8358 wpt_uint16 usSendSize = 0;
8359 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008360 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8363
8364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 -------------------------------------------------------------------------*/
8367 if (( NULL == pEventData ) ||
8368 ( NULL == pEventData->pEventData) ||
8369 ( NULL == pEventData->pCBfnc))
8370 {
8371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 }
8376
8377 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8378 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8380 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 * forwarded to HAL and result in hang*/
8382#if 0
8383 wpalMutexAcquire(&pWDICtx->wptMutex);
8384 /*-----------------------------------------------------------------------
8385 Check to see if SCAN is already in progress
8386 Finish scan gets invoked any scan states. ie. abort scan
8387 It should be allowed in any states.
8388 -----------------------------------------------------------------------*/
8389 if ( !pWDICtx->bScanInProgress )
8390 {
8391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8392 "Finish start not allowed in this state %d",
8393 pWDICtx->bScanInProgress );
8394
8395 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 }
8398
8399 /*-----------------------------------------------------------------------
8400 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8404 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 wpalMutexRelease(&pWDICtx->wptMutex);
8406#endif
8407
8408 if ( pWDICtx->bInBmps )
8409 {
8410 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008411 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8412 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8413 {
8414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008415 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008416 WDI_ASSERT(0);
8417 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 }
8419
8420 /*-----------------------------------------------------------------------
8421 Get message buffer
8422 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 sizeof(halFinishScanReqMsg.finishScanParams),
8425 &pSendBuffer, &usDataOffset, &usSendSize))||
8426 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8427 {
8428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008429 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 }
8434
Jeff Johnsone7245742012-09-05 17:12:55 -07008435 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8437
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8440
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8443
8444 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8445 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8446
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8453
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8456
8457 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8458 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8461 }
8462
8463 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8464 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8465
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 wpalMemoryCopy( pSendBuffer+usDataOffset,
8467 &halFinishScanReqMsg.finishScanParams,
8468 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008469
8470 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008471 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008472
8473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8478}/*WDI_ProcessFinishScanReq*/
8479
8480
8481/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008482 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008483==========================================================================*/
8484/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 @brief Process BSS Join for a given Session
8486
8487 @param pWDICtx: pointer to the WLAN DAL context
8488 pEventData: pointer to the event information structure
8489
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 @see
8491 @return Result of the function call
8492*/
8493WDI_Status
8494WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008495(
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 WDI_ControlBlockType* pWDICtx,
8497 WDI_JoinReqParamsType* pwdiJoinParams,
8498 WDI_JoinRspCb wdiJoinRspCb,
8499 void* pUserData
8500)
8501{
8502 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 wpt_uint16 usDataOffset = 0;
8505 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008507
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8510
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008511 wpalMutexAcquire(&pWDICtx->wptMutex);
8512
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 /*------------------------------------------------------------------------
8514 Check to see if we have any session with this BSSID already stored, we
8515 should not
8516 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8518 pwdiJoinParams->wdiReqInfo.macBSSID,
8519 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008520
8521 if ( NULL != pBSSSes )
8522 {
8523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008524 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8525 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008526
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008527 /*reset the bAssociationInProgress otherwise the next
8528 *join request will be queued*/
8529 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8530 wpalMutexRelease(&pWDICtx->wptMutex);
8531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 }
8533
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 if ( NULL == pBSSSes )
8539 {
8540
8541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8542 "DAL has no free sessions - cannot run another join");
8543
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008544 /*reset the bAssociationInProgress otherwise the next
8545 *join request will be queued*/
8546 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 }
8550
8551 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8553 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 WDI_MAC_ADDR_LEN);
8555
8556 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008559
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 wpalMutexRelease(&pWDICtx->wptMutex);
8561
8562 /*-----------------------------------------------------------------------
8563 Get message buffer
8564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 sizeof(halJoinReqMsg.joinReqParams),
8567 &pSendBuffer, &usDataOffset, &usSendSize))||
8568 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8569 {
8570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008571 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 pUserData, pwdiJoinParams, wdiJoinRspCb);
8573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 }
8576
8577 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008579
8580 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 pwdiJoinParams->wdiReqInfo.macSTASelf,
8582 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008583
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8586
8587 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8588
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008589#ifdef WLAN_FEATURE_VOWIFI
8590 halJoinReqMsg.joinReqParams.maxTxPower =
8591 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8592#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8595#endif
8596
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8599 wdiSecondaryChannelOffset);
8600
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 wpalMemoryCopy( pSendBuffer+usDataOffset,
8602 &halJoinReqMsg.joinReqParams,
8603 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008604
8605 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008607
8608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8612 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008613
8614}/*WDI_ProcessBSSSessionJoinReq*/
8615
8616/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008618 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008619
8620 @param pWDICtx: pointer to the WLAN DAL context
8621 pEventData: pointer to the event information structure
8622
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 @see
8624 @return Result of the function call
8625*/
8626WDI_Status
8627WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008628(
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 WDI_ControlBlockType* pWDICtx,
8630 WDI_EventInfoType* pEventData
8631)
8632{
8633 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8634 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8635 WDI_JoinRspCb wdiJoinRspCb = NULL;
8636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8637
8638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008640 -------------------------------------------------------------------------*/
8641 if (( NULL == pEventData ) ||
8642 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8643 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8644 {
8645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008649 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008650
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 /*-------------------------------------------------------------------------
8652 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 -------------------------------------------------------------------------*/
8655 wpalMutexAcquire(&pWDICtx->wptMutex);
8656
8657 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8658 {
8659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8660 "Association is currently in progress, queueing new join req");
8661
8662 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 pwdiJoinParams->wdiReqInfo.macBSSID);
8665
8666 wpalMutexRelease(&pWDICtx->wptMutex);
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
8671 /*Starting a new association */
8672 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8673 wpalMutexRelease(&pWDICtx->wptMutex);
8674
8675 /*Process the Join Request*/
8676 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8677 wdiJoinRspCb,pEventData->pUserData);
8678
8679}/*WDI_ProcessJoinReq*/
8680
8681
8682/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
8686 @param pWDICtx: pointer to the WLAN DAL context
8687 pEventData: pointer to the event information structure
8688
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 @see
8690 @return Result of the function call
8691*/
8692WDI_Status
8693WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008694(
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 WDI_ControlBlockType* pWDICtx,
8696 WDI_EventInfoType* pEventData
8697)
8698{
8699 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8700 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 wpt_uint16 uMsgSize = 0;
8704 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 wpt_uint16 usDataOffset = 0;
8706 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8711
8712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 -------------------------------------------------------------------------*/
8715 if (( NULL == pEventData ) ||
8716 ( NULL == pEventData->pEventData ) ||
8717 ( NULL == pEventData->pCBfnc ))
8718 {
8719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 }
8724
Abhishek Singh6927fa02014-06-27 17:19:55 +05308725 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8727 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8728 /*-------------------------------------------------------------------------
8729 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 -------------------------------------------------------------------------*/
8732 wpalMutexAcquire(&pWDICtx->wptMutex);
8733
8734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8738 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8739 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008740
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 {
8743#ifdef WLAN_FEATURE_VOWIFI_11R
8744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 if ( NULL == pBSSSes )
8749 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008750
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8752 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008753
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008757
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8760 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008762
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008765 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8766#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 * Request in case of IBSS*/
8769 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8770 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8771 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8772 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8773 {
8774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 if ( NULL == pBSSSes )
8779 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008780
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8782 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008783
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008787
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8790 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008792
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8796 }
8797 else
8798 {
8799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8801 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8802 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8803
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 /* for IBSS testing */
8805 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 }
8808#endif
8809 }
8810
8811 /*------------------------------------------------------------------------
8812 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 ------------------------------------------------------------------------*/
8815 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8818 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8819 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8820 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008823
8824 wpalMutexRelease(&pWDICtx->wptMutex);
8825
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 }
8828
8829 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8831 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 sizeof(pWDICtx->wdiCachedConfigBssReq));
8833
8834 wpalMutexRelease(&pWDICtx->wptMutex);
8835
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8837#ifdef WLAN_FEATURE_11AC
8838 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008839 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 else
8841#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008842 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008843
8844 /*-----------------------------------------------------------------------
8845 Get message buffer
8846 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8849 ( usSendSize < (usDataOffset + uMsgSize )))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008852 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 }
8857
8858 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008859#ifdef WLAN_FEATURE_11AC
8860 if (WDI_getFwWlanFeatCaps(DOT11AC))
8861 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8862 &pwdiConfigBSSParams->wdiReqInfo);
8863 else
8864#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 &pwdiConfigBSSParams->wdiReqInfo);
8867
8868 /* Need to fill in the STA Index to invalid, since at this point we have not
8869 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008871
8872 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8874
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008875#ifdef WLAN_FEATURE_11AC
8876 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8877 wpalMemoryCopy( pSendBuffer+usDataOffset,
8878 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8879 uMsgSize);
8880 }else
8881#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008882 {
8883 if ( uMsgSize <= sizeof(tConfigBssParams) )
8884 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008885 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008886 &halConfigBssReqMsg.uBssParams.configBssParams,
8887 uMsgSize);
8888 }
8889 else
8890 {
8891 return WDI_STATUS_E_FAILURE;
8892 }
8893 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008894
8895 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308897 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8902 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 WDI_CONFIG_BSS_RESP);
8904
8905}/*WDI_ProcessConfigBSSReq*/
8906
8907
8908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008911
8912 @param pWDICtx: pointer to the WLAN DAL context
8913 pEventData: pointer to the event information structure
8914
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 @see
8916 @return Result of the function call
8917*/
8918WDI_Status
8919WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008920(
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 WDI_ControlBlockType* pWDICtx,
8922 WDI_EventInfoType* pEventData
8923)
8924{
8925 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8926 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 wpt_uint16 usDataOffset = 0;
8931 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8936
8937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 -------------------------------------------------------------------------*/
8940 if (( NULL == pEventData ) ||
8941 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8942 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8943 {
8944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950 /*-------------------------------------------------------------------------
8951 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 -------------------------------------------------------------------------*/
8954 wpalMutexAcquire(&pWDICtx->wptMutex);
8955
8956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8960 pwdiDelBSSParams->ucBssIdx,
8961 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 {
8965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 "%s: BSS does not yet exist. ucBssIdx %d",
8967 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008968
8969 wpalMutexRelease(&pWDICtx->wptMutex);
8970
8971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008973
8974 /*------------------------------------------------------------------------
8975 Check if this BSS is being currently processed or queued,
8976 if queued - queue the new request as well
8977 ------------------------------------------------------------------------*/
8978 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8981 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8982 __func__, pwdiDelBSSParams->ucBssIdx);
8983
8984 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8985
8986 wpalMutexRelease(&pWDICtx->wptMutex);
8987
8988 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008990
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 /*-----------------------------------------------------------------------
8992 If we receive a Del BSS request for an association that is already in
8993 progress, it indicates that the assoc has failed => we no longer have
8994 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 -----------------------------------------------------------------------*/
8997 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8998 {
8999 /*We can switch to false here because even if a subsequent Join comes in
9000 it will only be processed when DAL transitions out of BUSY state which
9001 happens when the Del BSS request comes */
9002 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9003
9004 /*Former association is complete - prepare next pending assoc for
9005 processing */
9006 WDI_DequeueAssocRequest(pWDICtx);
9007 }
9008
9009 wpalMutexRelease(&pWDICtx->wptMutex);
9010 /*-----------------------------------------------------------------------
9011 Get message buffer
9012 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 sizeof(halBssReqMsg.deleteBssParams),
9015 &pSendBuffer, &usDataOffset, &usSendSize))||
9016 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9017 {
9018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009019 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 }
9024
9025 /*Fill in the message request structure*/
9026
9027 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009028 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009029
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 wpalMemoryCopy( pSendBuffer+usDataOffset,
9031 &halBssReqMsg.deleteBssParams,
9032 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009033
9034 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036
Jeff Johnsone7245742012-09-05 17:12:55 -07009037
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9043
Jeff Johnsone7245742012-09-05 17:12:55 -07009044
Jeff Johnson295189b2012-06-20 16:38:30 -07009045}/*WDI_ProcessDelBSSReq*/
9046
9047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009050
9051 @param pWDICtx: pointer to the WLAN DAL context
9052 pEventData: pointer to the event information structure
9053
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 @see
9055 @return Result of the function call
9056*/
9057WDI_Status
9058WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009059(
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 WDI_ControlBlockType* pWDICtx,
9061 WDI_EventInfoType* pEventData
9062)
9063{
9064 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9065 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009068 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 wpt_uint16 usDataOffset = 0;
9070 wpt_uint16 usSendSize = 0;
9071 wpt_uint16 uMsgSize = 0;
9072 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9077
9078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 -------------------------------------------------------------------------*/
9081 if (( NULL == pEventData ) ||
9082 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9083 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9084 {
9085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 }
9090
9091 /*-------------------------------------------------------------------------
9092 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 -------------------------------------------------------------------------*/
9095 wpalMutexAcquire(&pWDICtx->wptMutex);
9096
9097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9101 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9102 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009103
9104 if ( NULL == pBSSSes )
9105 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9107 "%s: Association sequence for this BSS does not yet exist - "
9108 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9109 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009110
9111 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 }
9114
9115 /*------------------------------------------------------------------------
9116 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 ------------------------------------------------------------------------*/
9119 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9120 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9122 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9123 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009124
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009126
9127 wpalMutexRelease(&pWDICtx->wptMutex);
9128
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 }
9131
9132 /*-----------------------------------------------------------------------
9133 If Post Assoc was not yet received - the current association must
9134 be in progress
9135 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9138 {
9139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9140 "Association sequence for this BSS association no longer in "
9141 "progress - not allowed");
9142
9143 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 }
9146
9147 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 -----------------------------------------------------------------------*/
9150 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9151 {
9152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9153 "Post Assoc not allowed before JOIN - failing request");
9154
9155 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 }
9158
9159 wpalMutexRelease(&pWDICtx->wptMutex);
9160
9161 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9162 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9163 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9168 ( usSendSize < (usDataOffset + uMsgSize )))
9169 {
9170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009171 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 }
9176
9177 /*Copy the STA parameters */
9178 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9179 &pwdiPostAssocParams->wdiSTAParams );
9180
9181 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 WDI_STATableFindStaidByAddr(pWDICtx,
9184 pwdiPostAssocParams->wdiSTAParams.macSTA,
9185 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9186 {
9187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009188 MAC_ADDRESS_STR
9189 ": This station does not exist in the WDI Station Table",
9190 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009192 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 }
9195
9196 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 pBSSSes->ucBSSIdx;
9199
9200 /*Copy the BSS parameters */
9201 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9202 &pwdiPostAssocParams->wdiBSSParams);
9203
9204 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 WDI_STATableFindStaidByAddr(pWDICtx,
9207 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 {
9210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009211 MAC_ADDRESS_STR
9212 ": This station does not exist in the WDI Station Table",
9213 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009215 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 }
9218
9219 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 pBSSSes->ucBSSIdx;
9222
Jeff Johnsone7245742012-09-05 17:12:55 -07009223
9224 wpalMemoryCopy( pSendBuffer+usDataOffset,
9225 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9226 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009227
9228 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9229
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9231 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9232 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009233
Jeff Johnsone7245742012-09-05 17:12:55 -07009234
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009237
Jeff Johnsone7245742012-09-05 17:12:55 -07009238
9239 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009242
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309243 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9249
Jeff Johnsone7245742012-09-05 17:12:55 -07009250
Jeff Johnson295189b2012-06-20 16:38:30 -07009251}/*WDI_ProcessPostAssocReq*/
9252
9253/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009256
9257 @param pWDICtx: pointer to the WLAN DAL context
9258 pEventData: pointer to the event information structure
9259
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 @see
9261 @return Result of the function call
9262*/
9263WDI_Status
9264WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009265(
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 WDI_ControlBlockType* pWDICtx,
9267 WDI_EventInfoType* pEventData
9268)
9269{
9270 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9271 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 wpt_uint16 usDataOffset = 0;
9276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9279
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9282
9283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 -------------------------------------------------------------------------*/
9286 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9287 ( NULL == pEventData->pCBfnc ))
9288 {
9289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 }
9294
9295 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9296 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9297 /*-------------------------------------------------------------------------
9298 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 -------------------------------------------------------------------------*/
9301 wpalMutexAcquire(&pWDICtx->wptMutex);
9302
9303 /*------------------------------------------------------------------------
9304 Find the BSS for which the request is made and identify WDI session
9305 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9307 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 &macBSSID))
9309 {
9310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009311 "This station does not exist in the WDI Station Table %d",
9312 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 }
9316
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9318 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9321 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9322 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009323
9324 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 }
9327
9328 /*------------------------------------------------------------------------
9329 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 ------------------------------------------------------------------------*/
9332 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9333 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9335 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9336 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009337
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 }
9342
9343 wpalMutexRelease(&pWDICtx->wptMutex);
9344 /*-----------------------------------------------------------------------
9345 Get message buffer
9346 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 sizeof(halDelStaReqMsg.delStaParams),
9349 &pSendBuffer, &usDataOffset, &usSendSize))||
9350 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9351 {
9352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009353 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 }
9358
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9360 wpalMemoryCopy( pSendBuffer+usDataOffset,
9361 &halDelStaReqMsg.delStaParams,
9362 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009363
9364 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009366
9367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9372
9373}/*WDI_ProcessDelSTAReq*/
9374
9375
9376/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009378==========================================================================*/
9379/**
9380 @brief Process Set BSS Key Request function (called when Main FSM
9381 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009382
9383 @param pWDICtx: pointer to the WLAN DAL context
9384 pEventData: pointer to the event information structure
9385
Jeff Johnson295189b2012-06-20 16:38:30 -07009386 @see
9387 @return Result of the function call
9388*/
9389WDI_Status
9390WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009391(
Jeff Johnson295189b2012-06-20 16:38:30 -07009392 WDI_ControlBlockType* pWDICtx,
9393 WDI_EventInfoType* pEventData
9394)
9395{
9396 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9397 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009400 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 wpt_uint16 usDataOffset = 0;
9402 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9405 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309406 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009407
9408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9409
9410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 -------------------------------------------------------------------------*/
9413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9414 ( NULL == pEventData->pCBfnc ))
9415 {
9416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 }
9421
9422 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9423 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9424 /*-------------------------------------------------------------------------
9425 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 -------------------------------------------------------------------------*/
9428 wpalMutexAcquire(&pWDICtx->wptMutex);
9429
9430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9434 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9435 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009436
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 {
9439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9441 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009442
9443 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 }
9446
9447 /*------------------------------------------------------------------------
9448 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 ------------------------------------------------------------------------*/
9451 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9452 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9454 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9455 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009456
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 }
9461
9462
9463 wpalMutexRelease(&pWDICtx->wptMutex);
9464 /*-----------------------------------------------------------------------
9465 Get message buffer
9466 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9469 &pSendBuffer, &usDataOffset, &usSendSize))||
9470 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9471 {
9472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009473 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 }
9478
9479 /*-----------------------------------------------------------------------
9480 Copy the Key parameters into the HAL message
9481 -----------------------------------------------------------------------*/
9482
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009484
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9487
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9490
9491 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9492 keyIndex++)
9493 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009494 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9496 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9497 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9498 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9499 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309500
9501 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9502 {
9503 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9504 {
9505 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9506 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9507 }
9508
9509 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9510 {
9511 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9512 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9513 }
9514
9515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9516 "%s: Negated Keys", __func__);
9517 }
9518 else
9519 {
9520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9521 "%s: No change in Keys", __func__);
9522 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309525 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9526 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9527 WDI_MAX_KEY_LENGTH);
9528 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309533 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009534
9535 wpalMemoryCopy( pSendBuffer+usDataOffset,
9536 &halSetBssKeyReqMsg.setBssKeyParams,
9537 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009538
9539 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541
9542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9546 wdiSetBSSKeyRspCb, pEventData->pUserData,
9547 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009548
9549}/*WDI_ProcessSetBssKeyReq*/
9550
9551/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009554
9555 @param pWDICtx: pointer to the WLAN DAL context
9556 pEventData: pointer to the event information structure
9557
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 @see
9559 @return Result of the function call
9560*/
9561WDI_Status
9562WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009563(
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 WDI_ControlBlockType* pWDICtx,
9565 WDI_EventInfoType* pEventData
9566)
9567{
9568 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9569 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 wpt_uint16 usDataOffset = 0;
9574 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9578
9579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 -------------------------------------------------------------------------*/
9582 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9583 ( NULL == pEventData->pCBfnc ))
9584 {
9585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 }
9590
9591 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9592 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9593 /*-------------------------------------------------------------------------
9594 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 -------------------------------------------------------------------------*/
9597 wpalMutexAcquire(&pWDICtx->wptMutex);
9598
9599 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9603 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9604 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 {
9608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9610 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009611
9612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 }
9615
9616 /*------------------------------------------------------------------------
9617 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 ------------------------------------------------------------------------*/
9620 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9621 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9623 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9624 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009625
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 }
9630
9631
9632 wpalMutexRelease(&pWDICtx->wptMutex);
9633
9634 /*-----------------------------------------------------------------------
9635 Get message buffer
9636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9639 &pSendBuffer, &usDataOffset, &usSendSize))||
9640 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9641 {
9642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 }
9648 /*-----------------------------------------------------------------------
9649 Copy the Key parameters into the HAL message
9650 -----------------------------------------------------------------------*/
9651 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9652
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9655
9656 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9657
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9660
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 wpalMemoryCopy( pSendBuffer+usDataOffset,
9662 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9663 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009664
9665 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009667
9668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009674}/*WDI_ProcessRemoveBssKeyReq*/
9675
9676/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009679
9680 @param pWDICtx: pointer to the WLAN DAL context
9681 pEventData: pointer to the event information structure
9682
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 @see
9684 @return Result of the function call
9685*/
9686WDI_Status
9687WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009688(
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 WDI_ControlBlockType* pWDICtx,
9690 WDI_EventInfoType* pEventData
9691)
9692{
9693 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9694 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9695 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 wpt_uint16 usDataOffset = 0;
9698 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9703 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309704 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009705
9706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9707
9708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 -------------------------------------------------------------------------*/
9711 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9712 ( NULL == pEventData->pCBfnc ))
9713 {
9714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 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 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9721 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9722 /*-------------------------------------------------------------------------
9723 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 -------------------------------------------------------------------------*/
9726 wpalMutexAcquire(&pWDICtx->wptMutex);
9727
9728 /*------------------------------------------------------------------------
9729 Find the BSS for which the request is made and identify WDI session
9730 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9732 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 &macBSSID))
9734 {
9735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009736 "This station does not exist in the WDI Station Table %d",
9737 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009738 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 }
9741
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9743 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9746 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9747 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009748
9749 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009752
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 /*------------------------------------------------------------------------
9754 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 ------------------------------------------------------------------------*/
9757 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9758 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9760 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9761 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009762
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 }
9767
9768
9769 wpalMutexRelease(&pWDICtx->wptMutex);
9770 /*-----------------------------------------------------------------------
9771 Get message buffer
9772 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9775 &pSendBuffer, &usDataOffset, &usSendSize))||
9776 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9777 {
9778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009779 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 }
9784 /*-----------------------------------------------------------------------
9785 Copy the STA Key parameters into the HAL message
9786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9789
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9792
9793 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9794
9795 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9796
9797 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9798
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9800 keyIndex++)
9801 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9804 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9805 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9806 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9807 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309808
9809 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9810 {
9811 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9812 {
9813 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9814 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9815 }
9816
9817 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9818 {
9819 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9820 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9821 }
9822
9823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9824 "%s: Negated Keys", __func__);
9825 }
9826 else
9827 {
9828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9829 "%s: No change in Keys", __func__);
9830 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309833 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9834 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9835 WDI_MAX_KEY_LENGTH);
9836 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309841 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009842
Jeff Johnsone7245742012-09-05 17:12:55 -07009843 wpalMemoryCopy( pSendBuffer+usDataOffset,
9844 &halSetStaKeyReqMsg.setStaKeyParams,
9845 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009846
9847 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009848 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309849 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9854 wdiSetSTAKeyRspCb, pEventData->pUserData,
9855 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856
9857}/*WDI_ProcessSetSTAKeyReq*/
9858
9859/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009862
9863 @param pWDICtx: pointer to the WLAN DAL context
9864 pEventData: pointer to the event information structure
9865
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 @see
9867 @return Result of the function call
9868*/
9869WDI_Status
9870WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009871(
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 WDI_ControlBlockType* pWDICtx,
9873 WDI_EventInfoType* pEventData
9874)
9875{
9876 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9877 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9878 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 wpt_uint16 usDataOffset = 0;
9881 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 wpt_macAddr macBSSID;
9884 wpt_uint8 ucCurrentBSSSesIdx;
9885 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9887
9888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 -------------------------------------------------------------------------*/
9891 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9892 ( NULL == pEventData->pCBfnc ))
9893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 }
9899
9900 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9901 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9902 /*-------------------------------------------------------------------------
9903 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 -------------------------------------------------------------------------*/
9906 wpalMutexAcquire(&pWDICtx->wptMutex);
9907
9908 /*------------------------------------------------------------------------
9909 Find the BSS for which the request is made and identify WDI session
9910 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9912 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 &macBSSID))
9914 {
9915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009916 "This station does not exist in the WDI Station Table %d",
9917 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 }
9921
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9923 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9926 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9927 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009928
9929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009932
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 /*------------------------------------------------------------------------
9934 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 ------------------------------------------------------------------------*/
9937 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9938 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9940 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9941 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009942
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 }
9947
9948
9949
9950 wpalMutexRelease(&pWDICtx->wptMutex);
9951 /*-----------------------------------------------------------------------
9952 Get message buffer
9953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9956 &pSendBuffer, &usDataOffset, &usSendSize))||
9957 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9958 {
9959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009960 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 }
9965
9966 /*-----------------------------------------------------------------------
9967 Copy the Key parameters into the HAL message
9968 -----------------------------------------------------------------------*/
9969
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9972
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9975
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9978
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9981
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wpalMemoryCopy( pSendBuffer+usDataOffset,
9983 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9984 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009985
9986 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009988
9989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009995
9996}/*WDI_ProcessRemoveSTAKeyReq*/
9997
9998/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010001
10002 @param pWDICtx: pointer to the WLAN DAL context
10003 pEventData: pointer to the event information structure
10004
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 @see
10006 @return Result of the function call
10007*/
10008WDI_Status
10009WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010010(
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 WDI_ControlBlockType* pWDICtx,
10012 WDI_EventInfoType* pEventData
10013)
10014{
10015 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10016 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 wpt_uint16 usDataOffset = 0;
10020 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10025 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010026 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010027
10028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10029
10030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 -------------------------------------------------------------------------*/
10033 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10034 ( NULL == pEventData->pCBfnc ))
10035 {
10036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 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 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10043 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10044 /*-------------------------------------------------------------------------
10045 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 -------------------------------------------------------------------------*/
10048 wpalMutexAcquire(&pWDICtx->wptMutex);
10049
10050 /*------------------------------------------------------------------------
10051 Find the BSS for which the request is made and identify WDI session
10052 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10054 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 &macBSSID))
10056 {
10057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010058 "This station does not exist in the WDI Station Table %d",
10059 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 }
10063
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10065 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 {
10067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010068 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010070
10071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010074
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 /*------------------------------------------------------------------------
10076 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 ------------------------------------------------------------------------*/
10079 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10082 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10083 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010084
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 }
10089
10090
10091 wpalMutexRelease(&pWDICtx->wptMutex);
10092 /*-----------------------------------------------------------------------
10093 Get message buffer
10094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010096 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10097 &pSendBuffer, &usDataOffset, &usSendSize))||
10098 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10099 {
10100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010101 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010102 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 }
10106 /*-----------------------------------------------------------------------
10107 Copy the STA Key parameters into the HAL message
10108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10114
10115 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10116
10117 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10118
10119 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10120
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10122 keyIndex++)
10123 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10126 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10127 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10128 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10129 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010130
10131 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10132 {
10133 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10134 {
10135 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10136 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10137 }
10138
10139 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10140 {
10141 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10142 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10143 }
10144
10145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10146 "%s: Negated Keys", __func__);
10147 }
10148 else
10149 {
10150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10151 "%s: No change in Keys", __func__);
10152 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010155 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10156 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10157 WDI_MAX_KEY_LENGTH);
10158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010163 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 wpalMemoryCopy( pSendBuffer+usDataOffset,
10165 &halSetStaKeyReqMsg.setStaKeyParams,
10166 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010167
10168 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010170
10171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10175 wdiSetSTAKeyRspCb, pEventData->pUserData,
10176 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177
10178}/*WDI_ProcessSetSTABcastKeyReq*/
10179
10180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010183
10184 @param pWDICtx: pointer to the WLAN DAL context
10185 pEventData: pointer to the event information structure
10186
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 @see
10188 @return Result of the function call
10189*/
10190WDI_Status
10191WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010192(
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 WDI_ControlBlockType* pWDICtx,
10194 WDI_EventInfoType* pEventData
10195)
10196{
10197 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10198 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10199 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 wpt_uint16 usDataOffset = 0;
10202 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 wpt_macAddr macBSSID;
10205 wpt_uint8 ucCurrentBSSSesIdx;
10206 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10208
10209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 -------------------------------------------------------------------------*/
10212 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10213 ( NULL == pEventData->pCBfnc ))
10214 {
10215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 }
10220
10221 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10222 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10223 /*-------------------------------------------------------------------------
10224 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 -------------------------------------------------------------------------*/
10227 wpalMutexAcquire(&pWDICtx->wptMutex);
10228
10229 /*------------------------------------------------------------------------
10230 Find the BSS for which the request is made and identify WDI session
10231 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10233 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 &macBSSID))
10235 {
10236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010237 "This station does not exist in the WDI Station Table %d",
10238 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 }
10242
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10244 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10247 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10248 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010249
10250 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010253
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 /*------------------------------------------------------------------------
10255 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 ------------------------------------------------------------------------*/
10258 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10259 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10261 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10262 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010263
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 }
10268
10269
10270
10271 wpalMutexRelease(&pWDICtx->wptMutex);
10272 /*-----------------------------------------------------------------------
10273 Get message buffer
10274 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10277 &pSendBuffer, &usDataOffset, &usSendSize))||
10278 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10279 {
10280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010281 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 }
10286
10287 /*-----------------------------------------------------------------------
10288 Copy the Key parameters into the HAL message
10289 -----------------------------------------------------------------------*/
10290
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10293
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10296
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10299
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10302
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpalMemoryCopy( pSendBuffer+usDataOffset,
10304 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10305 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010306
10307 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010309
10310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010316
10317}/*WDI_ProcessRemoveSTABcastKeyReq*/
10318
10319/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010321==========================================================================*/
10322/**
10323 @brief Process Add TSpec Request function (called when Main FSM
10324 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010325
10326 @param pWDICtx: pointer to the WLAN DAL context
10327 pEventData: pointer to the event information structure
10328
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 @see
10330 @return Result of the function call
10331*/
10332WDI_Status
10333WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010334(
Jeff Johnson295189b2012-06-20 16:38:30 -070010335 WDI_ControlBlockType* pWDICtx,
10336 WDI_EventInfoType* pEventData
10337)
10338{
10339 WDI_AddTSReqParamsType* pwdiAddTSParams;
10340 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 wpt_uint16 usDataOffset = 0;
10345 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 wpt_macAddr macBSSID;
10348 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010349
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10351
10352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 -------------------------------------------------------------------------*/
10355 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10356 ( NULL == pEventData->pCBfnc ))
10357 {
10358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010359 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 }
10363
10364 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10365 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10366 /*-------------------------------------------------------------------------
10367 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 -------------------------------------------------------------------------*/
10370 wpalMutexAcquire(&pWDICtx->wptMutex);
10371
10372 /*------------------------------------------------------------------------
10373 Find the BSS for which the request is made and identify WDI session
10374 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010375 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10376 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 &macBSSID))
10378 {
10379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010380 "This station does not exist in the WDI Station Table %d",
10381 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 }
10385
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10387 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10390 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10391 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010392
10393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010396
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 /*------------------------------------------------------------------------
10398 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010399 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010400 ------------------------------------------------------------------------*/
10401 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10402 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10404 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10405 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010406
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 }
10411
10412 wpalMutexRelease(&pWDICtx->wptMutex);
10413 /*-----------------------------------------------------------------------
10414 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010415 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10418 sizeof(halAddTsParams),
10419 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 &usSendSize))||
10421 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10422 {
10423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010424 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010425 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 }
10429
10430 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10431 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10432
10433 //TSPEC IE
10434 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10435 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010437 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010452 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10466
10467 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10482
10483 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10488
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 wpalMemoryCopy( pSendBuffer+usDataOffset,
10490 &halAddTsParams,
10491 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010492
10493 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010495
10496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010502}/*WDI_ProcessAddTSpecReq*/
10503
10504
10505/**
10506 @brief Process Del TSpec Request function (called when Main FSM
10507 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010508
10509 @param pWDICtx: pointer to the WLAN DAL context
10510 pEventData: pointer to the event information structure
10511
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 @see
10513 @return Result of the function call
10514*/
10515WDI_Status
10516WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010517(
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 WDI_ControlBlockType* pWDICtx,
10519 WDI_EventInfoType* pEventData
10520)
10521{
10522 WDI_DelTSReqParamsType* pwdiDelTSParams;
10523 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 wpt_uint16 usDataOffset = 0;
10528 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10531
10532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010534 -------------------------------------------------------------------------*/
10535 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10536 ( NULL == pEventData->pCBfnc ))
10537 {
10538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 }
10543
10544 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10545 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10546
10547 /*-------------------------------------------------------------------------
10548 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 -------------------------------------------------------------------------*/
10551 wpalMutexAcquire(&pWDICtx->wptMutex);
10552
10553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10557 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10558 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010559
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10563 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10564 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10565
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 }
10569
10570 /*------------------------------------------------------------------------
10571 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 ------------------------------------------------------------------------*/
10574 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10575 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10577 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10578 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010579
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 }
10584
10585
10586 wpalMutexRelease(&pWDICtx->wptMutex);
10587 /*-----------------------------------------------------------------------
10588 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10593 &pSendBuffer, &usDataOffset, &usSendSize))||
10594 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10595 {
10596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010597 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 }
10602
Jeff Johnsone7245742012-09-05 17:12:55 -070010603 wpalMemoryCopy( pSendBuffer+usDataOffset,
10604 &pwdiDelTSParams->wdiDelTSInfo,
10605 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010606
10607 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010609
10610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10614 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010615}/*WDI_ProcessDelTSpecReq*/
10616
10617/**
10618 @brief Process Update EDCA Params Request function (called when
10619 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010620
10621 @param pWDICtx: pointer to the WLAN DAL context
10622 pEventData: pointer to the event information structure
10623
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 @see
10625 @return Result of the function call
10626*/
10627WDI_Status
10628WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010629(
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 WDI_ControlBlockType* pWDICtx,
10631 WDI_EventInfoType* pEventData
10632)
10633{
10634 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10635 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 wpt_uint16 usDataOffset = 0;
10640 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10643
10644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 -------------------------------------------------------------------------*/
10647 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10648 ( NULL == pEventData->pCBfnc ))
10649 {
10650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 }
10655
10656 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10657 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10658 /*-------------------------------------------------------------------------
10659 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 -------------------------------------------------------------------------*/
10662 wpalMutexAcquire(&pWDICtx->wptMutex);
10663
10664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10668 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10669 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010670
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 {
10673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10675 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010676
10677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 }
10680
10681 /*------------------------------------------------------------------------
10682 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 ------------------------------------------------------------------------*/
10685 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10688 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10689 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010690
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 }
10695
10696
10697 wpalMutexRelease(&pWDICtx->wptMutex);
10698 /*-----------------------------------------------------------------------
10699 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10704 &pSendBuffer, &usDataOffset, &usSendSize))||
10705 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10706 {
10707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010708 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 }
10713
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 wpalMemoryCopy( pSendBuffer+usDataOffset,
10715 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10716 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010717
10718 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010720
10721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10725 wdiUpdateEDCARspCb, pEventData->pUserData,
10726 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010727}/*WDI_ProcessUpdateEDCAParamsReq*/
10728
10729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010732
10733 @param pWDICtx: pointer to the WLAN DAL context
10734 pEventData: pointer to the event information structure
10735
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 @see
10737 @return Result of the function call
10738*/
10739WDI_Status
10740WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010741(
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 WDI_ControlBlockType* pWDICtx,
10743 WDI_EventInfoType* pEventData
10744)
10745{
10746 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10747 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 wpt_uint16 usDataOffset = 0;
10752 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 wpt_macAddr macBSSID;
10755
10756 tAddBASessionReqMsg halAddBASessionReq;
10757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10758
10759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 -------------------------------------------------------------------------*/
10762 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10763 ( NULL == pEventData->pCBfnc ))
10764 {
10765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 }
10770
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10775 /*-------------------------------------------------------------------------
10776 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 -------------------------------------------------------------------------*/
10779 wpalMutexAcquire(&pWDICtx->wptMutex);
10780
10781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10785 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 &macBSSID))
10787 {
10788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010789 "This station does not exist in the WDI Station Table %d",
10790 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 }
10794
10795
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010797
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10801 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10802 __func__, MAC_ADDR_ARRAY(macBSSID));
10803
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 }
10807
10808 /*------------------------------------------------------------------------
10809 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 ------------------------------------------------------------------------*/
10812 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10813 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10815 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10816 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010817
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010819 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 }
10822
10823
10824 wpalMutexRelease(&pWDICtx->wptMutex);
10825 /*-----------------------------------------------------------------------
10826 Get message buffer
10827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10829 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 sizeof(halAddBASessionReq.addBASessionParams),
10831 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010832 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10834 {
10835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010836 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010837 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 }
10841
10842 halAddBASessionReq.addBASessionParams.staIdx =
10843 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10844 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10845 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10846 WDI_MAC_ADDR_LEN);
10847 halAddBASessionReq.addBASessionParams.baTID =
10848 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10849 halAddBASessionReq.addBASessionParams.baPolicy =
10850 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10851 halAddBASessionReq.addBASessionParams.baBufferSize =
10852 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10853 halAddBASessionReq.addBASessionParams.baTimeout =
10854 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10855 halAddBASessionReq.addBASessionParams.baSSN =
10856 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10857 halAddBASessionReq.addBASessionParams.baDirection =
10858 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10859
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 wpalMemoryCopy( pSendBuffer+usDataOffset,
10861 &halAddBASessionReq.addBASessionParams,
10862 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010863
10864 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010866
10867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10871 wdiAddBASessionRspCb, pEventData->pUserData,
10872 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010873}/*WDI_ProcessAddBASessionReq*/
10874
10875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010878
10879 @param pWDICtx: pointer to the WLAN DAL context
10880 pEventData: pointer to the event information structure
10881
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 @see
10883 @return Result of the function call
10884*/
10885WDI_Status
10886WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010887(
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 WDI_ControlBlockType* pWDICtx,
10889 WDI_EventInfoType* pEventData
10890)
10891{
10892 WDI_DelBAReqParamsType* pwdiDelBAParams;
10893 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 wpt_uint16 usDataOffset = 0;
10898 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 wpt_macAddr macBSSID;
10901 tDelBAParams halDelBAparam;
10902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10903
10904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 -------------------------------------------------------------------------*/
10907 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10908 ( NULL == pEventData->pCBfnc ))
10909 {
10910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
10916 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10917 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10918 /*-------------------------------------------------------------------------
10919 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 -------------------------------------------------------------------------*/
10922 wpalMutexAcquire(&pWDICtx->wptMutex);
10923
10924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10928 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 &macBSSID))
10930 {
10931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010932 "This station does not exist in the WDI Station Table %d",
10933 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 }
10937
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10943 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10944 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010945
10946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010948 }
10949
10950 /*------------------------------------------------------------------------
10951 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 ------------------------------------------------------------------------*/
10954 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10955 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10957 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10958 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010959
Jeff Johnsone7245742012-09-05 17:12:55 -070010960 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 }
10964
10965 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 sizeof(halDelBAparam),
10968 &pSendBuffer, &usDataOffset, &usSendSize))||
10969 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10970 {
10971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010972 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 }
10977
10978 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10979 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10980 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10981
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 wpalMemoryCopy( pSendBuffer+usDataOffset,
10983 &halDelBAparam,
10984 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010985
10986 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010988
10989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10993 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010994}/*WDI_ProcessDelBAReq*/
10995
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010996#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010997
10998WDI_Status
10999WDI_ProcessTSMStatsReq
11000(
11001 WDI_ControlBlockType* pWDICtx,
11002 WDI_EventInfoType* pEventData
11003)
11004{
11005 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11006 WDI_TsmRspCb wdiTSMRspCb;
11007 wpt_uint8 ucCurrentBSSSesIdx = 0;
11008 WDI_BSSSessionType* pBSSSes = NULL;
11009 wpt_uint8* pSendBuffer = NULL;
11010 wpt_uint16 usDataOffset = 0;
11011 wpt_uint16 usSendSize = 0;
11012 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11013 tTsmStatsParams halTsmStatsReqParams = {0};
11014
11015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11016
11017 /*-------------------------------------------------------------------------
11018 Sanity check
11019 -------------------------------------------------------------------------*/
11020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11021 ( NULL == pEventData->pCBfnc ))
11022 {
11023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ASSERT(0);
11026 return WDI_STATUS_E_FAILURE;
11027 }
11028
11029 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11030 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11031 /*-------------------------------------------------------------------------
11032 Check to see if we are in the middle of an association, if so queue, if
11033 not it means it is free to process request
11034 -------------------------------------------------------------------------*/
11035 wpalMutexAcquire(&pWDICtx->wptMutex);
11036
11037 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11038 if ( NULL == pBSSSes )
11039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11041 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11042 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
11044 wpalMutexRelease(&pWDICtx->wptMutex);
11045 return WDI_STATUS_E_NOT_ALLOWED;
11046 }
11047
11048 /*------------------------------------------------------------------------
11049 Check if this BSS is being currently processed or queued,
11050 if queued - queue the new request as well
11051 ------------------------------------------------------------------------*/
11052 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11053 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011055 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011057
11058 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11059 wpalMutexRelease(&pWDICtx->wptMutex);
11060 return wdiStatus;
11061 }
11062
11063 wpalMutexRelease(&pWDICtx->wptMutex);
11064 /*-----------------------------------------------------------------------
11065 Get message buffer
11066 ! TO DO : proper conversion into the HAL Message Request Format
11067 -----------------------------------------------------------------------*/
11068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11069 sizeof(halTsmStatsReqParams),
11070 &pSendBuffer, &usDataOffset, &usSendSize))||
11071 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11072 {
11073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011074 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 pEventData, pwdiTSMParams, wdiTSMRspCb);
11076 WDI_ASSERT(0);
11077 return WDI_STATUS_E_FAILURE;
11078 }
11079
11080 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11081 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11082 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11083 WDI_MAC_ADDR_LEN);
11084 wpalMemoryCopy( pSendBuffer+usDataOffset,
11085 &halTsmStatsReqParams,
11086 sizeof(halTsmStatsReqParams));
11087
11088 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11089 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11090
11091 /*-------------------------------------------------------------------------
11092 Send TSM Stats Request to HAL
11093 -------------------------------------------------------------------------*/
11094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11095 wdiTSMRspCb, pEventData->pUserData,
11096 WDI_TSM_STATS_RESP);
11097}/*WDI_ProcessTSMStatsReq*/
11098
11099#endif
11100
11101
11102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011105
11106 @param pWDICtx: pointer to the WLAN DAL context
11107 pEventData: pointer to the event information structure
11108
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 @see
11110 @return Result of the function call
11111*/
11112WDI_Status
11113WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011114(
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 WDI_ControlBlockType* pWDICtx,
11116 WDI_EventInfoType* pEventData
11117)
11118{
11119 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11120 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 wpt_uint16 usDataOffset = 0;
11123 wpt_uint16 usSendSize = 0;
11124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11125
11126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 -------------------------------------------------------------------------*/
11129 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11130 ( NULL == pEventData->pCBfnc ))
11131 {
11132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 }
11137
11138 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11139 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11140 /*-----------------------------------------------------------------------
11141 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011142 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11146 &pSendBuffer, &usDataOffset, &usSendSize))||
11147 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11148 {
11149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011150 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 }
11155
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 wpalMemoryCopy( pSendBuffer+usDataOffset,
11157 &pwdiFlushAcParams->wdiFlushAcInfo,
11158 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011159
11160 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011162
11163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011164 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11167 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011168}/*WDI_ProcessFlushAcReq*/
11169
11170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011173
11174 @param pWDICtx: pointer to the WLAN DAL context
11175 pEventData: pointer to the event information structure
11176
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 @see
11178 @return Result of the function call
11179*/
11180WDI_Status
11181WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011182(
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 WDI_ControlBlockType* pWDICtx,
11184 WDI_EventInfoType* pEventData
11185)
11186{
11187 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11188 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 wpt_uint16 usDataOffset = 0;
11191 wpt_uint16 usSendSize = 0;
11192
11193 tBtAmpEventMsg haltBtAmpEventMsg;
11194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11195
11196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 -------------------------------------------------------------------------*/
11199 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11200 ( NULL == pEventData->pCBfnc ))
11201 {
11202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 }
11207
11208 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11209 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11210 /*-----------------------------------------------------------------------
11211 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11216 &pSendBuffer, &usDataOffset, &usSendSize))||
11217 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11218 {
11219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011220 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 }
11225
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 wpalMemoryCopy( pSendBuffer+usDataOffset,
11229 &haltBtAmpEventMsg.btAmpEventParams,
11230 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011231
11232 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011234
11235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11239 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011240}/*WDI_ProcessBtAmpEventReq*/
11241
11242/**
11243 @brief Process Add STA self Request function (called when Main FSM
11244 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011245
11246 @param pWDICtx: pointer to the WLAN DAL context
11247 pEventData: pointer to the event information structure
11248
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 @see
11250 @return Result of the function call
11251*/
11252WDI_Status
11253WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011254(
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 WDI_ControlBlockType* pWDICtx,
11256 WDI_EventInfoType* pEventData
11257)
11258{
11259 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11260 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 wpt_uint16 usDataOffset = 0;
11263 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011264 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11266
11267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 -------------------------------------------------------------------------*/
11270 if (( NULL == pEventData ) ||
11271 ( NULL == pEventData->pEventData) ||
11272 ( NULL == pEventData->pCBfnc))
11273 {
11274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 }
11279
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11284 /*-----------------------------------------------------------------------
11285 Get message buffer
11286 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11288 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011289 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011291 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 {
11293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011294 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 }
11299
11300 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11303
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011305 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11306 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11307 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11308 {
11309 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11310 }
11311 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11312 VOS_P2P_CLIENT_MODE) ||
11313 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11314 VOS_P2P_DEVICE))
11315 {
11316 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11317 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011318 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011319 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011320
11321 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011323
11324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11328 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11329 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011330}/*WDI_ProcessAddSTASelfReq*/
11331
11332
11333
11334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011337
11338 @param pWDICtx: pointer to the WLAN DAL context
11339 pEventData: pointer to the event information structure
11340
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 @see
11342 @return Result of the function call
11343*/
11344WDI_Status
11345WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011346(
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 WDI_ControlBlockType* pWDICtx,
11348 WDI_EventInfoType* pEventData
11349)
11350{
11351 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11352 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 wpt_uint16 usDataOffset = 0;
11355 wpt_uint16 usSendSize = 0;
11356 tDelStaSelfParams halSetDelSelfSTAParams;
11357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11358
11359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 -------------------------------------------------------------------------*/
11362 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11363 ( NULL == pEventData->pCBfnc ))
11364 {
11365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 }
11370
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11373 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11374
11375 /*-----------------------------------------------------------------------
11376 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11381 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11384 {
11385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011386 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 }
11391
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11394
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11396 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011397
11398 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011400
11401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11405 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 WDI_DEL_STA_SELF_RESP);
11407
11408}
11409
Jeff Johnsone7245742012-09-05 17:12:55 -070011410#ifdef FEATURE_OEM_DATA_SUPPORT
11411/**
11412 @brief Process Start Oem Data Request function (called when Main
11413 FSM allows it)
11414
11415 @param pWDICtx: pointer to the WLAN DAL context
11416 pEventData: pointer to the event information structure
11417
11418 @see
11419 @return Result of the function call
11420*/
11421WDI_Status
11422WDI_ProcessStartOemDataReq
11423(
11424 WDI_ControlBlockType* pWDICtx,
11425 WDI_EventInfoType* pEventData
11426)
11427{
11428 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11429 WDI_oemDataRspCb wdiOemDataRspCb;
11430 wpt_uint8* pSendBuffer = NULL;
11431 wpt_uint16 usDataOffset = 0;
11432 wpt_uint16 usSendSize = 0;
11433 wpt_uint16 reqLen;
11434 tStartOemDataReqParams* halStartOemDataReqParams;
11435
11436 /*-------------------------------------------------------------------------
11437 Sanity check
11438 -------------------------------------------------------------------------*/
11439 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11440 ( NULL == pEventData->pCBfnc ))
11441 {
11442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011443 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 WDI_ASSERT(0);
11445 return WDI_STATUS_E_FAILURE;
11446 }
11447
11448 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11449 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11450
11451 /*-----------------------------------------------------------------------
11452 Get message buffer
11453 -----------------------------------------------------------------------*/
11454
11455 reqLen = sizeof(tStartOemDataReqParams);
11456
11457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11458 WDI_START_OEM_DATA_REQ, reqLen,
11459 &pSendBuffer, &usDataOffset, &usSendSize))||
11460 (usSendSize < (usDataOffset + reqLen)))
11461 {
11462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011463 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11465 WDI_ASSERT(0);
11466 return WDI_STATUS_E_FAILURE;
11467 }
11468
11469 //copying WDI OEM DATA REQ PARAMS to shared memory
11470 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11471
11472 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11473 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11474
11475 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11476 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11477
11478 /*-------------------------------------------------------------------------
11479 Send Start Request to HAL
11480 -------------------------------------------------------------------------*/
11481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11482 wdiOemDataRspCb, pEventData->pUserData,
11483 WDI_START_OEM_DATA_RESP);
11484}/*WDI_ProcessStartOemDataReq*/
11485#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011486
11487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011490
11491 @param pWDICtx: pointer to the WLAN DAL context
11492 pEventData: pointer to the event information structure
11493
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 @see
11495 @return Result of the function call
11496*/
11497WDI_Status
11498WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011499(
Jeff Johnson295189b2012-06-20 16:38:30 -070011500 WDI_ControlBlockType* pWDICtx,
11501 WDI_EventInfoType* pEventData
11502)
11503{
11504 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11505 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 wpt_uint16 usDataOffset = 0;
11508 wpt_uint16 usSendSize = 0;
11509 tHalWlanHostResumeReqParam halResumeReqParams;
11510
11511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11512
11513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 -------------------------------------------------------------------------*/
11516 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11517 ( NULL == pEventData->pCBfnc ))
11518 {
11519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011520 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 }
11524
11525 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11526 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11527
11528 /*-----------------------------------------------------------------------
11529 Get message buffer
11530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11533 &pSendBuffer, &usDataOffset, &usSendSize))||
11534 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11535 {
11536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011537 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 }
11542
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011545
11546 wpalMemoryCopy( pSendBuffer+usDataOffset,
11547 &halResumeReqParams,
11548 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011549
11550 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011552
11553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11557 wdiHostResumeRspCb, pEventData->pUserData,
11558 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011559}/*WDI_ProcessHostResumeReq*/
11560
11561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011564
11565 @param pWDICtx: pointer to the WLAN DAL context
11566 pEventData: pointer to the event information structure
11567
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 @see
11569 @return Result of the function call
11570*/
11571WDI_Status
11572WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011573(
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 WDI_ControlBlockType* pWDICtx,
11575 WDI_EventInfoType* pEventData
11576)
11577{
11578 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11579 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011580 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 wpt_uint16 usDataOffset = 0;
11582 wpt_uint16 usSendSize = 0;
11583 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11585
11586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 -------------------------------------------------------------------------*/
11589 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11590 ( NULL == pEventData->pCBfnc ))
11591 {
11592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011593 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 }
11597
11598 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11599 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011600
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 /*-----------------------------------------------------------------------
11602 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 sizeof(halTxPerTrackingReqParam),
11607 &pSendBuffer, &usDataOffset, &usSendSize))||
11608 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11609 {
11610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011611 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011616
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11618 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11619 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11620 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011621
11622 wpalMemoryCopy( pSendBuffer+usDataOffset,
11623 &halTxPerTrackingReqParam,
11624 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011625
11626 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011627 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011628
11629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11633 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011634}/*WDI_ProcessSetTxPerTrackingReq*/
11635
11636/*=========================================================================
11637 Indications
11638=========================================================================*/
11639
11640/**
11641 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011642
11643 @param pWDICtx: pointer to the WLAN DAL context
11644 pEventData: pointer to the event information structure
11645
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 @see
11647 @return Result of the function call
11648*/
11649WDI_Status
11650WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011651(
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 WDI_ControlBlockType* pWDICtx,
11653 WDI_EventInfoType* pEventData
11654)
11655{
11656 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 wpt_uint16 usDataOffset = 0;
11659 wpt_uint16 usSendSize = 0;
11660 WDI_Status wdiStatus;
11661 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11663
11664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 -------------------------------------------------------------------------*/
11667 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11668 {
11669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011670 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 }
11674
11675 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11676
11677 /*-----------------------------------------------------------------------
11678 Get message buffer
11679 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11681 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 sizeof(halWlanSuspendIndparams),
11683 &pSendBuffer, &usDataOffset, &usSendSize))||
11684 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11685 {
11686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11687 "Unable to get send buffer in Suspend Ind ");
11688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 }
11691
11692 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11693 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11694
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011696 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011697
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11699 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011700
11701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 -------------------------------------------------------------------------*/
11704 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011706
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11709}/*WDI_ProcessHostSuspendInd*/
11710
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011711
11712
11713/**
11714 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11715
11716 @param pWDICtx: pointer to the WLAN DAL context
11717 pEventData: pointer to the event information structure
11718
11719 @see
11720 @return Result of the function call
11721*/
11722WDI_Status
11723WDI_ProcessTrafficStatsInd
11724(
11725 WDI_ControlBlockType* pWDICtx,
11726 WDI_EventInfoType* pEventData
11727)
11728{
11729 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11730 wpt_uint8* pSendBuffer = NULL;
11731 wpt_uint16 usDataOffset = 0;
11732 wpt_uint16 usSendSize = 0;
11733 WDI_Status wdiStatus;
11734 tStatsClassBIndParams* pStatsClassBIndParams;
11735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11736
11737 /*-------------------------------------------------------------------------
11738 Sanity check
11739 -------------------------------------------------------------------------*/
11740 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11741 {
11742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11743 "%s: Invalid parameters in Traffic Stats ind",__func__);
11744 WDI_ASSERT(0);
11745 return WDI_STATUS_E_FAILURE;
11746 }
11747
11748 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11749
11750 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11751 {
11752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11753 "%s: Invalid parameters in Traffic Stats ind",__func__);
11754 WDI_ASSERT(0);
11755 return WDI_STATUS_E_FAILURE;
11756 }
11757
11758 /*-----------------------------------------------------------------------
11759 Get message buffer
11760 -----------------------------------------------------------------------*/
11761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11762 WDI_TRAFFIC_STATS_IND,
11763 sizeof(tStatsClassBIndParams),
11764 &pSendBuffer, &usDataOffset, &usSendSize))||
11765 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11766 {
11767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11768 "Unable to get send buffer in Traffic Stats Ind ");
11769 WDI_ASSERT(0);
11770 return WDI_STATUS_E_FAILURE;
11771 }
11772
11773 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11774
11775 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11776
11777 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11778 pTrafficStatsIndParams->pTrafficStats,
11779 pTrafficStatsIndParams->length);
11780
11781 /*-------------------------------------------------------------------------
11782 Send Suspend Request to HAL
11783 -------------------------------------------------------------------------*/
11784 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11785 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11786
11787 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11788 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11789}/*WDI_ProcessTrafficStatsInd*/
11790
Chet Lanctot186b5732013-03-18 10:26:30 -070011791#ifdef WLAN_FEATURE_11W
11792/**
11793 @brief Process Exclude Unencrypted Indications function (called
11794 when Main FSM allows it)
11795
11796 @param pWDICtx: pointer to the WLAN DAL context
11797 pEventData: pointer to the event information structure
11798
11799 @see
11800 @return Result of the function call
11801*/
11802WDI_Status
11803WDI_ProcessExcludeUnencryptInd
11804(
11805 WDI_ControlBlockType* pWDICtx,
11806 WDI_EventInfoType* pEventData
11807)
11808{
11809 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11810 wpt_uint8* pSendBuffer = NULL;
11811 wpt_uint16 usDataOffset = 0;
11812 wpt_uint16 usSendSize = 0;
11813 WDI_Status wdiStatus;
11814 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11816
11817 /*-------------------------------------------------------------------------
11818 Sanity check
11819 -------------------------------------------------------------------------*/
11820 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11821 {
11822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11823 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11824 WDI_ASSERT(0);
11825 return WDI_STATUS_E_FAILURE;
11826 }
11827
11828 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11829
11830 /*-----------------------------------------------------------------------
11831 Get message buffer
11832 -----------------------------------------------------------------------*/
11833 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11834 WDI_EXCLUDE_UNENCRYPTED_IND,
11835 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11836 &pSendBuffer, &usDataOffset, &usSendSize))||
11837 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11838 {
11839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11840 "Unable to get send buffer in Exclude Unencrypted Ind ");
11841 WDI_ASSERT(0);
11842 return WDI_STATUS_E_FAILURE;
11843 }
11844
11845 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11846
11847 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11848
11849 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11850 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11851
11852 /*-------------------------------------------------------------------------
11853 Send Suspend Request to HAL
11854 -------------------------------------------------------------------------*/
11855 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11856 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11857
11858 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11859 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11860}/*WDI_ProcessExcludeUnencryptInd*/
11861#endif
11862
Yue Mab9c86f42013-08-14 15:59:08 -070011863/**
11864 @brief Process Add Periodic Tx Pattern Indication function (called when
11865 Main FSM allows it)
11866
11867 @param pWDICtx: pointer to the WLAN DAL context
11868 pEventData: pointer to the event information structure
11869
11870 @see
11871 @return Result of the function call
11872*/
11873WDI_Status
11874WDI_ProcessAddPeriodicTxPtrnInd
11875(
11876 WDI_ControlBlockType* pWDICtx,
11877 WDI_EventInfoType* pEventData
11878)
11879{
11880 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11881 wpt_uint8* pSendBuffer = NULL;
11882 wpt_uint16 usDataOffset = 0;
11883 wpt_uint16 usSendSize = 0;
11884 WDI_Status wdiStatus;
11885 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11886 wpt_uint8 selfStaIdx = 0;
11887
11888 /*-------------------------------------------------------------------------
11889 Sanity check
11890 -------------------------------------------------------------------------*/
11891 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11892 {
11893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11894 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11895 WDI_ASSERT(0);
11896 return WDI_STATUS_E_FAILURE;
11897 }
11898
11899 pAddPeriodicTxPtrnParams =
11900 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11901
11902 /*------------------------------------------------------------------------
11903 Get message buffer
11904 ------------------------------------------------------------------------*/
11905 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11906 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11907 &pSendBuffer, &usDataOffset, &usSendSize))||
11908 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11909 {
11910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11911 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11912 __func__);
11913 WDI_ASSERT(0);
11914 return WDI_STATUS_E_FAILURE;
11915 }
11916
11917 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11918
11919 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11920 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11921 &selfStaIdx))
11922 {
11923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11924 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011925 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011926
11927 return WDI_STATUS_E_FAILURE;
11928 }
11929
11930 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11931 halAddPeriodicTxPtrn->ucPtrnId =
11932 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11933 halAddPeriodicTxPtrn->usPtrnSize =
11934 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11935 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11936 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11937
11938 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11939 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11940 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11941
11942 /*-------------------------------------------------------------------------
11943 Send Indication to HAL
11944 -------------------------------------------------------------------------*/
11945 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11946 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11947
11948 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11949
11950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11951 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11952
11953 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11954} /* WDI_ProcessAddPeriodicTxPtrnInd */
11955
11956/**
11957 @brief Process Delete Periodic Tx Pattern Indication function (called when
11958 Main FSM allows it)
11959
11960 @param pWDICtx: pointer to the WLAN DAL context
11961 pEventData: pointer to the event information structure
11962
11963 @see
11964 @return Result of the function call
11965*/
11966WDI_Status
11967WDI_ProcessDelPeriodicTxPtrnInd
11968(
11969 WDI_ControlBlockType* pWDICtx,
11970 WDI_EventInfoType* pEventData
11971)
11972{
11973 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11974 wpt_uint8* pSendBuffer = NULL;
11975 wpt_uint16 usDataOffset = 0;
11976 wpt_uint16 usSendSize = 0;
11977 WDI_Status wdiStatus;
11978 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11979 wpt_uint8 selfStaIdx = 0;
11980
11981 /*-------------------------------------------------------------------------
11982 Sanity check
11983 -------------------------------------------------------------------------*/
11984 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11985 {
11986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11987 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11988 WDI_ASSERT(0);
11989 return WDI_STATUS_E_FAILURE;
11990 }
11991
11992 pDelPeriodicTxPtrnParams =
11993 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11994
11995 /*------------------------------------------------------------------------
11996 Get message buffer
11997 ------------------------------------------------------------------------*/
11998 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11999 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12000 &pSendBuffer, &usDataOffset, &usSendSize))||
12001 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12002 {
12003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12004 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12005 __func__);
12006 WDI_ASSERT(0);
12007 return WDI_STATUS_E_FAILURE;
12008 }
12009
12010 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12011
12012 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12013 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12014 &selfStaIdx))
12015 {
12016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12017 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012018 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012019
12020 return WDI_STATUS_E_FAILURE;
12021 }
12022
12023 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12024 halDelPeriodicTxPtrn->uPatternIdBitmap =
12025 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12026
12027 /*-------------------------------------------------------------------------
12028 Send Indication to HAL
12029 -------------------------------------------------------------------------*/
12030 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12031 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12032
12033 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12034
12035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12036 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12037
12038 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12039} /* WDI_ProcessDelPeriodicTxPtrnInd */
12040
Jeff Johnson295189b2012-06-20 16:38:30 -070012041/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012043==========================================================================*/
12044/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012047
12048 @param pWDICtx: pointer to the WLAN DAL context
12049 pEventData: pointer to the event information structure
12050
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 @see
12052 @return Result of the function call
12053*/
12054WDI_Status
12055WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012056(
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 WDI_ControlBlockType* pWDICtx,
12058 WDI_EventInfoType* pEventData
12059)
12060{
12061 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12062 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 wpt_uint16 usDataOffset = 0;
12065 wpt_uint16 usSendSize = 0;
12066 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12068
12069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 -------------------------------------------------------------------------*/
12072 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12073 ( NULL == pEventData->pCBfnc ))
12074 {
12075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012079 }
12080
12081 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12082 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12083 /*-----------------------------------------------------------------------
12084 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 sizeof(halSwitchChannelReq.switchChannelParams),
12089 &pSendBuffer, &usDataOffset, &usSendSize))||
12090 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12091 {
12092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012093 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 }
12098
Jeff Johnsone7245742012-09-05 17:12:55 -070012099 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012101#ifndef WLAN_FEATURE_VOWIFI
12102 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12104#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12107
12108#ifdef WLAN_FEATURE_VOWIFI
12109 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12112 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12113 WDI_MAC_ADDR_LEN);
12114 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12115 pwdiSwitchChParams->wdiChInfo.macBSSId,
12116 WDI_MAC_ADDR_LEN);
12117#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 wpalMemoryCopy( pSendBuffer+usDataOffset,
12119 &halSwitchChannelReq.switchChannelParams,
12120 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012121
12122 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012123 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012124
12125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012128 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12129 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012130}/*WDI_ProcessChannelSwitchReq*/
12131
12132/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012133 @brief Process Channel Switch Request function (called when
12134 Main FSM allows it)
12135
12136 @param pWDICtx: pointer to the WLAN DAL context
12137 pEventData: pointer to the event information structure
12138
12139 @see
12140 @return Result of the function call
12141*/
12142WDI_Status WDI_ProcessChannelSwitchReq_V1
12143(
12144 WDI_ControlBlockType* pWDICtx,
12145 WDI_EventInfoType* pEventData
12146)
12147{
12148 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12149 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12150 wpt_uint8* pSendBuffer = NULL;
12151 wpt_uint16 usDataOffset = 0;
12152 wpt_uint16 usSendSize = 0;
12153 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12155
12156 /*-------------------------------------------------------------------------
12157 Sanity check
12158 -------------------------------------------------------------------------*/
12159 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12160 ( NULL == pEventData->pCBfnc ))
12161 {
12162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12163 "%s: Invalid parameters", __func__);
12164 WDI_ASSERT(0);
12165 return WDI_STATUS_E_FAILURE;
12166 }
12167
12168 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12169 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12170 /*-----------------------------------------------------------------------
12171 Get message buffer
12172 ! TO DO : proper conversion into the HAL Message Request Format
12173 -----------------------------------------------------------------------*/
12174 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12175 WDI_CH_SWITCH_REQ_V1,
12176 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12177 &pSendBuffer, &usDataOffset, &usSendSize))||
12178 ( usSendSize < (usDataOffset +
12179 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12180 {
12181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12182 "Unable to get send buffer in channel switch req %p %p %p",
12183 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12184 WDI_ASSERT(0);
12185 return WDI_STATUS_E_FAILURE;
12186 }
12187
12188 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12189 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12190
12191 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12192 pwdiSwitchChParams->wdiChInfo.ucChannel;
12193#ifndef WLAN_FEATURE_VOWIFI
12194 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12195 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12196#endif
12197 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12198 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12199
12200#ifdef WLAN_FEATURE_VOWIFI
12201 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12202 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12203 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12204 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12205 WDI_MAC_ADDR_LEN);
12206 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12207 pwdiSwitchChParams->wdiChInfo.macBSSId,
12208 WDI_MAC_ADDR_LEN);
12209#endif
12210 wpalMemoryCopy( pSendBuffer+usDataOffset,
12211 &halSwitchChannelReq.switchChannelParams_V1,
12212 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12213
12214 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12215 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12216
12217 /*-------------------------------------------------------------------------
12218 Send Switch Channel Request to HAL
12219 -------------------------------------------------------------------------*/
12220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12221 wdiSwitchChRspCb, pEventData->pUserData,
12222 WDI_CH_SWITCH_RESP_V1);
12223}/*WDI_ProcessChannelSwitchReq_V1*/
12224
12225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012226 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012227 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012228
12229 @param pWDICtx: pointer to the WLAN DAL context
12230 pEventData: pointer to the event information structure
12231
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 @see
12233 @return Result of the function call
12234*/
12235WDI_Status
12236WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012237(
Jeff Johnson295189b2012-06-20 16:38:30 -070012238 WDI_ControlBlockType* pWDICtx,
12239 WDI_EventInfoType* pEventData
12240)
12241{
12242 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12243 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 wpt_uint16 usDataOffset = 0;
12248 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 tConfigStaReqMsg halConfigStaReqMsg;
12252 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12254
12255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 -------------------------------------------------------------------------*/
12258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12259 ( NULL == pEventData->pCBfnc ))
12260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 }
12266
Abhishek Singh6927fa02014-06-27 17:19:55 +053012267 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12269 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12270 /*-------------------------------------------------------------------------
12271 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 -------------------------------------------------------------------------*/
12274 wpalMutexAcquire(&pWDICtx->wptMutex);
12275
12276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12280 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12281 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012282
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12286 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12287 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012288
12289 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 }
12292
12293 /*------------------------------------------------------------------------
12294 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012295 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 ------------------------------------------------------------------------*/
12297 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12298 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12300 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12301 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012302
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 }
12307
12308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012309
12310 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12311#ifdef WLAN_FEATURE_11AC
12312 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012313 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 else
12315#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012316 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012317
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 /*-----------------------------------------------------------------------
12319 Get message buffer
12320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12322 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 {
12326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012327 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012331 }
12332
12333 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 &pwdiConfigSTAParams->wdiReqInfo);
12336
12337 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12338 {
12339 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 WDI_STATableFindStaidByAddr(pWDICtx,
12342 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 {
12345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012346 MAC_ADDRESS_STR
12347 ": This station does not exist in the WDI Station Table",
12348 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012350 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 }
12353 }
12354 else
12355 {
12356 /* Need to fill in the STA Index to invalid, since at this point we have not
12357 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012358 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012359 }
12360
12361 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012363
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 wpalMemoryCopy( pSendBuffer+usDataOffset,
12365 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012366 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012367
12368 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012370
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12372 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012373 sizeof(pWDICtx->wdiCachedConfigStaReq));
12374
12375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012377 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12379 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012380}/*WDI_ProcessConfigStaReq*/
12381
12382
12383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012386
12387 @param pWDICtx: pointer to the WLAN DAL context
12388 pEventData: pointer to the event information structure
12389
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 @see
12391 @return Result of the function call
12392*/
12393WDI_Status
12394WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012395(
Jeff Johnson295189b2012-06-20 16:38:30 -070012396 WDI_ControlBlockType* pWDICtx,
12397 WDI_EventInfoType* pEventData
12398)
12399{
12400 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12401 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012402 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 wpt_uint16 usDataOffset = 0;
12406 wpt_uint16 usSendSize = 0;
12407 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12410
12411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 -------------------------------------------------------------------------*/
12414 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12415 ( NULL == pEventData->pCBfnc ))
12416 {
12417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012418 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 }
12422
12423 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12424 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12425 /*-------------------------------------------------------------------------
12426 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 -------------------------------------------------------------------------*/
12429 wpalMutexAcquire(&pWDICtx->wptMutex);
12430
12431 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012432 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012433 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012434 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12435 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12436 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012437
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12442 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 }
12444 else
12445 {
12446 /*------------------------------------------------------------------------
12447 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 ------------------------------------------------------------------------*/
12450 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12451 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12453 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12454 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12455
12456 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 }
12460 }
12461 /* If the link is set to enter IDLE - the Session allocated for this BSS
12462 will be deleted on the Set Link State response coming from HAL
12463 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12466
12467 wpalMutexRelease(&pWDICtx->wptMutex);
12468 /*-----------------------------------------------------------------------
12469 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012470 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012472
12473 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 sizeof(halLinkStateReqMsg),
12475 &pSendBuffer, &usDataOffset, &usSendSize))||
12476 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12477 {
12478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012479 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12481 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 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12486 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12487
12488 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12489 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12490
Jeff Johnsone7245742012-09-05 17:12:55 -070012491 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012492 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12493
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 wpalMemoryCopy( pSendBuffer+usDataOffset,
12495 &halLinkStateReqMsg,
12496 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012497
12498 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012500
12501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12505 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012506}/*WDI_ProcessSetLinkStateReq*/
12507
12508
12509/**
12510 @brief Process Get Stats Request function (called when Main FSM
12511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012512
12513 @param pWDICtx: pointer to the WLAN DAL context
12514 pEventData: pointer to the event information structure
12515
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 @see
12517 @return Result of the function call
12518*/
12519WDI_Status
12520WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012521(
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 WDI_ControlBlockType* pWDICtx,
12523 WDI_EventInfoType* pEventData
12524)
12525{
12526 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12527 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 wpt_uint16 usDataOffset = 0;
12530 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 WDI_BSSSessionType* pBSSSes = NULL;
12533 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 tHalStatsReqMsg halStatsReqMsg;
12536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12537
12538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 -------------------------------------------------------------------------*/
12541 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12542 ( NULL == pEventData->pCBfnc ) )
12543 {
12544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 }
12549
12550 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12551 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12552
12553 /*-------------------------------------------------------------------------
12554 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 -------------------------------------------------------------------------*/
12557 wpalMutexAcquire(&pWDICtx->wptMutex);
12558
12559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12563 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 &macBSSID))
12565 {
12566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012567 "This station does not exist in the WDI Station Table %d",
12568 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012571 }
12572
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12574 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12577 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12578 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012579
12580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 }
12583
12584 /*------------------------------------------------------------------------
12585 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 ------------------------------------------------------------------------*/
12588 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12589 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12591 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12592 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012593
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 }
12598
12599
12600 wpalMutexRelease(&pWDICtx->wptMutex);
12601
12602 /*-----------------------------------------------------------------------
12603 Get message buffer
12604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 sizeof(halStatsReqMsg.statsReqParams),
12607 &pSendBuffer, &usDataOffset, &usSendSize))||
12608 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12609 {
12610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012611 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 }
12616
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 wpalMemoryCopy( pSendBuffer+usDataOffset,
12622 &halStatsReqMsg.statsReqParams,
12623 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012624
12625 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627
12628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12632 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012633}/*WDI_ProcessGetStatsReq*/
12634
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012635#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012636/**
12637 @brief Process Get Roam Rssi Request function (called when Main FSM
12638 allows it)
12639
12640 @param pWDICtx: pointer to the WLAN DAL context
12641 pEventData: pointer to the event information structure
12642
12643 @see
12644 @return Result of the function call
12645*/
12646WDI_Status
12647WDI_ProcessGetRoamRssiReq
12648(
12649 WDI_ControlBlockType* pWDICtx,
12650 WDI_EventInfoType* pEventData
12651)
12652{
12653 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12654 WDI_GetStatsRspCb wdiGetStatsRspCb;
12655 wpt_uint8* pSendBuffer = NULL;
12656 wpt_uint16 usDataOffset = 0;
12657 wpt_uint16 usSendSize = 0;
12658 wpt_uint8 ucCurrentBSSSesIdx = 0;
12659 WDI_BSSSessionType* pBSSSes = NULL;
12660 wpt_macAddr macBSSID;
12661 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12662 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12664 /*-------------------------------------------------------------------------
12665 Sanity check
12666 -------------------------------------------------------------------------*/
12667 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12668 ( NULL == pEventData->pCBfnc ) )
12669 {
12670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12671 "%s: Invalid parameters", __func__);
12672 WDI_ASSERT(0);
12673 return WDI_STATUS_E_FAILURE;
12674 }
12675
12676 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12677 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12678
12679 /*-------------------------------------------------------------------------
12680 Check to see if we are in the middle of an association, if so queue, if
12681 not it means it is free to process request
12682 -------------------------------------------------------------------------*/
12683 wpalMutexAcquire(&pWDICtx->wptMutex);
12684
12685 /*------------------------------------------------------------------------
12686 Find the BSS for which the request is made
12687 ------------------------------------------------------------------------*/
12688 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12689 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12690 &macBSSID))
12691 {
12692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012693 "This station does not exist in the WDI Station Table %d",
12694 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012695 wpalMutexRelease(&pWDICtx->wptMutex);
12696 return WDI_STATUS_E_FAILURE;
12697 }
12698
12699 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12700 if ( NULL == pBSSSes )
12701 {
12702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12703 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12704 __func__, MAC_ADDR_ARRAY(macBSSID));
12705
12706 wpalMutexRelease(&pWDICtx->wptMutex);
12707 return WDI_STATUS_E_NOT_ALLOWED;
12708 }
12709
12710 /*------------------------------------------------------------------------
12711 Check if this BSS is being currently processed or queued,
12712 if queued - queue the new request as well
12713 ------------------------------------------------------------------------*/
12714 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12715 {
12716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12717 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12718 __func__, MAC_ADDR_ARRAY(macBSSID));
12719
12720 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12721 wpalMutexRelease(&pWDICtx->wptMutex);
12722 return wdiStatus;
12723 }
12724
12725 wpalMutexRelease(&pWDICtx->wptMutex);
12726
12727 /*-----------------------------------------------------------------------
12728 Get message buffer
12729 -----------------------------------------------------------------------*/
12730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12731 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12732 &pSendBuffer, &usDataOffset, &usSendSize))||
12733 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12734 {
12735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012736 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012737 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12738 WDI_ASSERT(0);
12739 return WDI_STATUS_E_FAILURE;
12740 }
12741
12742 halRssiRoamReqMsg.roamRssiReqParams.staId =
12743 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12744 wpalMemoryCopy( pSendBuffer+usDataOffset,
12745 &halRssiRoamReqMsg.roamRssiReqParams,
12746 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12747
12748 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12749 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12750
12751 /*-------------------------------------------------------------------------
12752 Send Get STA Request to HAL
12753 -------------------------------------------------------------------------*/
12754 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12755 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12756}/*WDI_ProcessGetRoamRssiReq*/
12757#endif
12758
Jeff Johnson295189b2012-06-20 16:38:30 -070012759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012762
12763 @param pWDICtx: pointer to the WLAN DAL context
12764 pEventData: pointer to the event information structure
12765
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 @see
12767 @return Result of the function call
12768*/
12769WDI_Status
12770WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012771(
Jeff Johnson295189b2012-06-20 16:38:30 -070012772 WDI_ControlBlockType* pWDICtx,
12773 WDI_EventInfoType* pEventData
12774)
12775{
12776 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12777 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12778
Jeff Johnsone7245742012-09-05 17:12:55 -070012779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 wpt_uint16 usDataOffset = 0;
12781 wpt_uint16 usSendSize = 0;
12782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12783
12784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 -------------------------------------------------------------------------*/
12787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12788 ( NULL == pEventData->pCBfnc))
12789 {
12790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 }
12795
12796 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12797 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12798
12799 /*-----------------------------------------------------------------------
12800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 -----------------------------------------------------------------------*/
12803
Jeff Johnsone7245742012-09-05 17:12:55 -070012804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12806 &pSendBuffer, &usDataOffset, &usSendSize))||
12807 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12808 {
12809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012810 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 }
12815
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 wpalMemoryCopy( pSendBuffer+usDataOffset,
12817 &pwdiUpdateCfgParams->uConfigBufferLen,
12818 sizeof(wpt_uint32));
12819 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12820 pwdiUpdateCfgParams->pConfigBuffer,
12821 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012822
12823 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012825
12826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012827 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 -------------------------------------------------------------------------*/
12829
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12831 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012832
12833}/*WDI_ProcessUpdateCfgReq*/
12834
12835
12836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012839
12840 @param pWDICtx: pointer to the WLAN DAL context
12841 pEventData: pointer to the event information structure
12842
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 @see
12844 @return Result of the function call
12845*/
12846WDI_Status
12847WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012848(
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 WDI_ControlBlockType* pWDICtx,
12850 WDI_EventInfoType* pEventData
12851)
12852{
12853 WDI_AddBAReqParamsType* pwdiAddBAParams;
12854 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 wpt_uint16 usDataOffset = 0;
12859 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 wpt_macAddr macBSSID;
12862
12863 tAddBAReqMsg halAddBAReq;
12864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12865
12866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 -------------------------------------------------------------------------*/
12869 if (( NULL == pEventData ) ||
12870 ( NULL == pEventData->pEventData) ||
12871 ( NULL == pEventData->pCBfnc ))
12872 {
12873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 }
12878
12879 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12880 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12881
12882 /*-------------------------------------------------------------------------
12883 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 -------------------------------------------------------------------------*/
12886 wpalMutexAcquire(&pWDICtx->wptMutex);
12887
12888 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12892 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 &macBSSID))
12894 {
12895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012896 "This station does not exist in the WDI Station Table %d",
12897 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 }
12901
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12903 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12906 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12907 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 }
12912
12913 /*------------------------------------------------------------------------
12914 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 ------------------------------------------------------------------------*/
12917 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12918 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12920 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12921 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012922
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 }
12927
12928
12929 wpalMutexRelease(&pWDICtx->wptMutex);
12930 /*-----------------------------------------------------------------------
12931 Get message buffer
12932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 sizeof(halAddBAReq.addBAParams),
12935 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12938 {
12939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012940 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 }
12945
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12948 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12949#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12952#endif
12953
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 wpalMemoryCopy( pSendBuffer+usDataOffset,
12955 &halAddBAReq.addBAParams,
12956 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012957
12958 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960
12961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12965 wdiAddBARspCb, pEventData->pUserData,
12966 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012967}/*WDI_ProcessAddBAReq*/
12968
12969
12970
12971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012973 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012974
12975 @param pWDICtx: pointer to the WLAN DAL context
12976 pEventData: pointer to the event information structure
12977
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 @see
12979 @return Result of the function call
12980*/
12981WDI_Status
12982WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012983(
Jeff Johnson295189b2012-06-20 16:38:30 -070012984 WDI_ControlBlockType* pWDICtx,
12985 WDI_EventInfoType* pEventData
12986)
12987{
12988 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12989 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 wpt_uint16 usDataOffset = 0;
12994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpt_uint16 index;
12997 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012998
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 tTriggerBAReqMsg halTriggerBAReq;
13000 tTriggerBaReqCandidate* halTriggerBACandidate;
13001 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13003
13004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 -------------------------------------------------------------------------*/
13007 if (( NULL == pEventData ) ||
13008 ( NULL == pEventData->pEventData ) ||
13009 ( NULL == pEventData->pCBfnc ))
13010 {
13011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013015 }
13016
13017 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13018 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13019 /*-------------------------------------------------------------------------
13020 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 -------------------------------------------------------------------------*/
13023 wpalMutexAcquire(&pWDICtx->wptMutex);
13024
13025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13029 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 &macBSSID))
13031 {
13032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013033 "This station does not exist in the WDI Station Table %d",
13034 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 }
13038
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13040 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13043 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13044 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013045
13046 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 }
13049
13050 /*------------------------------------------------------------------------
13051 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 ------------------------------------------------------------------------*/
13054 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13055 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13057 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13058 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013059
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013063 }
13064
13065
13066 wpalMutexRelease(&pWDICtx->wptMutex);
13067 /*-----------------------------------------------------------------------
13068 Get message buffer
13069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13071 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13075 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13080 {
13081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013082 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 }
13087
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13092
Jeff Johnsone7245742012-09-05 17:12:55 -070013093 wpalMemoryCopy( pSendBuffer+usDataOffset,
13094 &halTriggerBAReq.triggerBAParams,
13095 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013096
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13099 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13100 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013101
13102 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103 index++)
13104 {
13105 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13106 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13107 halTriggerBACandidate++;
13108 wdiTriggerBACandidate++;
13109 }
13110
13111 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013113
13114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13118 wdiTriggerBARspCb, pEventData->pUserData,
13119 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013120}/*WDI_ProcessTriggerBAReq*/
13121
13122
13123
13124/**
13125 @brief Process Update Beacon Params Request function (called when Main FSM
13126 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013127
13128 @param pWDICtx: pointer to the WLAN DAL context
13129 pEventData: pointer to the event information structure
13130
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 @see
13132 @return Result of the function call
13133*/
13134WDI_Status
13135WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013136(
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 WDI_ControlBlockType* pWDICtx,
13138 WDI_EventInfoType* pEventData
13139)
13140{
13141 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13142 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 wpt_uint16 usDataOffset = 0;
13145 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13148
13149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 -------------------------------------------------------------------------*/
13152 if (( NULL == pEventData ) ||
13153 ( NULL == pEventData->pEventData) ||
13154 ( NULL == pEventData->pCBfnc))
13155 {
13156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 }
13161
13162 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13163 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13164 /*-----------------------------------------------------------------------
13165 Get message buffer
13166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013168 sizeof(halUpdateBeaconParams),
13169 &pSendBuffer, &usDataOffset, &usSendSize))||
13170 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13171 {
13172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013173 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13175 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 }
13178
13179 /*BSS Index of the BSS*/
13180 halUpdateBeaconParams.bssIdx =
13181 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13182 /*shortPreamble mode. HAL should update all the STA rates when it
13183 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013184 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13186 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13189 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013191 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13192
13193 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13206 halUpdateBeaconParams.fRIFSMode =
13207 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13210
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13212 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013213
13214 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216
13217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13221 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013222}/*WDI_ProcessUpdateBeaconParamsReq*/
13223
13224
13225
13226/**
13227 @brief Process Send Beacon template Request function (called when Main FSM
13228 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013229
13230 @param pWDICtx: pointer to the WLAN DAL context
13231 pEventData: pointer to the event information structure
13232
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 @see
13234 @return Result of the function call
13235*/
13236WDI_Status
13237WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013238(
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 WDI_ControlBlockType* pWDICtx,
13240 WDI_EventInfoType* pEventData
13241)
13242{
13243 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13244 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 wpt_uint16 usDataOffset = 0;
13247 wpt_uint16 usSendSize = 0;
13248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13249
13250 tSendBeaconReqMsg halSendBeaconReq;
13251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 -------------------------------------------------------------------------*/
13254 if (( NULL == pEventData ) ||
13255 ( NULL == pEventData->pEventData ) ||
13256 ( NULL == pEventData->pCBfnc ))
13257 {
13258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 }
13263
13264 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13265 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13266 /*-----------------------------------------------------------------------
13267 Get message buffer
13268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 sizeof(halSendBeaconReq.sendBeaconParam),
13271 &pSendBuffer, &usDataOffset, &usSendSize))||
13272 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13273 {
13274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013275 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013276 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 }
13280
13281 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13282 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13283 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13286 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13287 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13288 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013291 /* usP2PIeOffset should be atleast greater than timIeOffset */
13292 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13293 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13294 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13295 {
13296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13297 "Invalid usP2PIeOffset %hu",
13298 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13299 WDI_ASSERT(0);
13300 return WDI_STATUS_E_FAILURE;
13301 }
13302
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013304 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013305
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 wpalMemoryCopy( pSendBuffer+usDataOffset,
13307 &halSendBeaconReq.sendBeaconParam,
13308 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013309
13310 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013312
13313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13317 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013318}/*WDI_ProcessSendBeaconParamsReq*/
13319
13320/**
13321 @brief Process Update Beacon Params Request function (called when Main FSM
13322 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013323
13324 @param pWDICtx: pointer to the WLAN DAL context
13325 pEventData: pointer to the event information structure
13326
Jeff Johnson295189b2012-06-20 16:38:30 -070013327 @see
13328 @return Result of the function call
13329*/
13330WDI_Status
13331WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013332(
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 WDI_ControlBlockType* pWDICtx,
13334 WDI_EventInfoType* pEventData
13335)
13336{
13337 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13338 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 wpt_uint16 usDataOffset = 0;
13341 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13344
13345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 -------------------------------------------------------------------------*/
13348 if (( NULL == pEventData ) ||
13349 ( NULL == pEventData->pEventData) ||
13350 ( NULL == pEventData->pCBfnc))
13351 {
13352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 }
13357
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13362 /*-----------------------------------------------------------------------
13363 Get message buffer
13364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 sizeof(halUpdateProbeRspTmplParams),
13367 &pSendBuffer, &usDataOffset, &usSendSize))||
13368 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13369 {
13370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013371 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 }
13376
13377 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 WDI_MAC_ADDR_LEN);
13380
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13383
13384 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13385 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013386 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013387
13388
13389 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13390 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13391 WDI_PROBE_REQ_BITMAP_IE_LEN);
13392
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 wpalMemoryCopy( pSendBuffer+usDataOffset,
13394 &halUpdateProbeRspTmplParams,
13395 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013396
13397 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399
13400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13404 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13405 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013406}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13407
13408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013411
13412 @param pWDICtx: pointer to the WLAN DAL context
13413 pEventData: pointer to the event information structure
13414
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 @see
13416 @return Result of the function call
13417*/
13418WDI_Status
13419WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013420(
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 WDI_ControlBlockType* pWDICtx,
13422 WDI_EventInfoType* pEventData
13423)
13424{
13425
13426 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13427 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13428
13429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 -------------------------------------------------------------------------*/
13432 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13437 {
13438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 }
13443
13444 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13447
13448 /*cache the wdi nv request message here if the the first fragment
13449 * To issue the request to HAL for the next fragment */
13450 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13451 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13453 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13455
13456 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13457 pWDICtx->pRspCBUserData = pEventData->pUserData;
13458 }
13459
13460 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13461}
13462
13463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013466
13467 @param pWDICtx: pointer to the WLAN DAL context
13468 pEventData: pointer to the event information structure
13469
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 @see
13471 @return Result of the function call
13472*/
13473WDI_Status WDI_ProcessSetMaxTxPowerReq
13474(
13475 WDI_ControlBlockType* pWDICtx,
13476 WDI_EventInfoType* pEventData
13477)
13478{
13479 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13480 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 wpt_uint16 usDataOffset = 0;
13483 wpt_uint16 usSendSize = 0;
13484 tSetMaxTxPwrReq halSetMaxTxPower;
13485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13486
13487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 -------------------------------------------------------------------------*/
13490 if (( NULL == pEventData ) ||
13491 ( NULL == pEventData->pEventData ) ||
13492 ( NULL == pEventData->pCBfnc ))
13493 {
13494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13503
13504 /*-----------------------------------------------------------------------
13505 Get message buffer
13506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013507if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13509 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013510 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013511)))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013514 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013515 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 }
13519
13520 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13521 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13522 WDI_MAC_ADDR_LEN);
13523
13524 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13525 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13526 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013529
13530 wpalMemoryCopy( pSendBuffer+usDataOffset,
13531 &halSetMaxTxPower.setMaxTxPwrParams,
13532 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013533
13534 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536
13537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13541 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13542 WDI_SET_MAX_TX_POWER_RESP);
13543
Jeff Johnson295189b2012-06-20 16:38:30 -070013544}
13545
Arif Hussaina5ebce02013-08-09 15:09:58 -070013546/*
13547 @brief Process Set Max Tx Power Per Band Request function (called when Main
13548 FSM allows it)
13549
13550 @param pWDICtx: pointer to the WLAN DAL context
13551 pEventData: pointer to the event information structure
13552
13553 @see
13554 @return Result of the function call
13555*/
13556WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13557(
13558 WDI_ControlBlockType* pWDICtx,
13559 WDI_EventInfoType* pEventData
13560)
13561{
13562 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13563 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13564 wpt_uint8* pSendBuffer = NULL;
13565 wpt_uint16 usDataOffset = 0;
13566 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013567 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013568 WDI_Status rValue = WDI_STATUS_SUCCESS;
13569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13570
13571 /*-------------------------------------------------------------------------
13572 Sanity check
13573 -------------------------------------------------------------------------*/
13574 if (( NULL == pEventData ) ||
13575 ( NULL == pEventData->pEventData ) ||
13576 ( NULL == pEventData->pCBfnc ))
13577 {
13578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13579 "%s: Invalid parameters", __func__);
13580 WDI_ASSERT(0);
13581 return WDI_STATUS_E_FAILURE;
13582 }
13583 pwdiSetMaxTxPowerPerBandParams = \
13584 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13585
13586 wdiSetMaxTxPowerPerBandRspCb = \
13587 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13588
13589 /*-----------------------------------------------------------------------
13590 Get message buffer
13591 -----------------------------------------------------------------------*/
13592
13593 rValue = WDI_GetMessageBuffer(pWDICtx,
13594 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13595 sizeof(tSetMaxTxPwrPerBandParams),
13596 &pSendBuffer, &usDataOffset, &usSendSize);
13597
13598 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13599 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13600 {
13601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13602 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13603 pEventData, pwdiSetMaxTxPowerPerBandParams,
13604 wdiSetMaxTxPowerPerBandRspCb);
13605 WDI_ASSERT(0);
13606 return WDI_STATUS_E_FAILURE;
13607 }
13608
13609
Arif Hussainf8f080c2014-04-03 09:48:36 -070013610 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13611 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013612 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13613
Arif Hussainf8f080c2014-04-03 09:48:36 -070013614 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013615 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13616
13617 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13618 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13619
13620 /*-------------------------------------------------------------------------
13621 Send Set Max Tx Power Per Band Request to HAL
13622 -------------------------------------------------------------------------*/
13623 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13624 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13625 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13626}
13627
schang86c22c42013-03-13 18:41:24 -070013628/**
13629 @brief Process Set Tx Power Request function (called when Main
13630 FSM allows it)
13631
13632 @param pWDICtx: pointer to the WLAN DAL context
13633 pEventData: pointer to the event information structure
13634
13635 @see
13636 @return Result of the function call
13637*/
13638WDI_Status WDI_ProcessSetTxPowerReq
13639(
13640 WDI_ControlBlockType* pWDICtx,
13641 WDI_EventInfoType* pEventData
13642)
13643{
13644 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13645 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13646 wpt_uint8* pSendBuffer = NULL;
13647 wpt_uint16 usDataOffset = 0;
13648 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013649 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13651
13652 /*-------------------------------------------------------------------------
13653 Sanity check
13654 -------------------------------------------------------------------------*/
13655 if (( NULL == pEventData ) ||
13656 ( NULL == pEventData->pEventData ) ||
13657 ( NULL == pEventData->pCBfnc ))
13658 {
13659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13660 "%s: Invalid parameters", __func__);
13661 WDI_ASSERT(0);
13662 return WDI_STATUS_E_FAILURE;
13663 }
13664
13665 pwdiSetTxPowerParams =
13666 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13667 wdiSetTxPowerRspCb =
13668 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13669
13670 /*-----------------------------------------------------------------------
13671 Get message buffer
13672 -----------------------------------------------------------------------*/
13673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13674 sizeof(tSetTxPwrReqParams),
13675 &pSendBuffer, &usDataOffset, &usSendSize))||
13676 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13677 )))
13678 {
13679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013680 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013681 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13682 WDI_ASSERT(0);
13683 return WDI_STATUS_E_FAILURE;
13684 }
13685
Leo Chang9a43db92013-03-25 17:39:58 -070013686 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13687 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13688 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013689
13690 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13691 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13692
13693 /*-------------------------------------------------------------------------
13694 Send Set Tx Power Request to HAL
13695 -------------------------------------------------------------------------*/
13696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13697 wdiSetTxPowerRspCb, pEventData->pUserData,
13698 WDI_SET_TX_POWER_RESP);
13699}
Jeff Johnson295189b2012-06-20 16:38:30 -070013700
13701/**
13702 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13703 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013704
13705 @param pWDICtx: pointer to the WLAN DAL context
13706 pEventData: pointer to the event information structure
13707
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 @see
13709 @return Result of the function call
13710*/
13711WDI_Status
13712WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013713(
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 WDI_ControlBlockType* pWDICtx,
13715 WDI_EventInfoType* pEventData
13716)
13717{
13718 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13719 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 wpt_uint16 usDataOffset = 0;
13722 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13725
13726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 -------------------------------------------------------------------------*/
13729 if (( NULL == pEventData ) ||
13730 ( NULL == pEventData->pEventData) ||
13731 ( NULL == pEventData->pCBfnc))
13732 {
13733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 }
13738
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13743 /*-----------------------------------------------------------------------
13744 Get message buffer
13745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13747 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 sizeof(halSetP2PGONOAParams),
13749 &pSendBuffer, &usDataOffset, &usSendSize))||
13750 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13751 {
13752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013753 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 }
13758
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13763 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13772
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 wpalMemoryCopy( pSendBuffer+usDataOffset,
13774 &halSetP2PGONOAParams,
13775 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013776
13777 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013779
13780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13784 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13785 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013786}/*WDI_ProcessP2PGONOAReq*/
13787
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013788#ifdef FEATURE_WLAN_TDLS
13789
13790/**
13791 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13792 allows it)
13793
13794 @param pWDICtx: pointer to the WLAN DAL context
13795 pEventData: pointer to the event information structure
13796
13797 @see
13798 @return Result of the function call
13799*/
13800WDI_Status
13801WDI_ProcessTdlsLinkEstablishReq
13802(
13803 WDI_ControlBlockType* pWDICtx,
13804 WDI_EventInfoType* pEventData
13805)
13806{
13807 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13808 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13809 wpt_uint8* pSendBuffer = NULL;
13810 wpt_uint16 usDataOffset = 0;
13811 wpt_uint16 usSendSize = 0;
13812
13813 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13815
13816 /*-------------------------------------------------------------------------
13817 Sanity check
13818 -------------------------------------------------------------------------*/
13819 if (( NULL == pEventData ) ||
13820 ( NULL == pEventData->pEventData) ||
13821 ( NULL == pEventData->pCBfnc))
13822 {
13823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13824 "%s: Invalid parameters", __func__);
13825 WDI_ASSERT(0);
13826 return WDI_STATUS_E_FAILURE;
13827 }
13828 pwdiTDLSLinkEstablishReqParams =
13829 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13830 wdiTDLSLinkEstablishReqRspCb =
13831 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13832
13833
13834 /*-----------------------------------------------------------------------
13835 Get message buffer
13836 -----------------------------------------------------------------------*/
13837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13838 WDI_TDLS_LINK_ESTABLISH_REQ,
13839 sizeof(halSetTDLSLinkEstablishParams),
13840 &pSendBuffer, &usDataOffset, &usSendSize))||
13841 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13842 {
13843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013844 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013845 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13846 WDI_ASSERT(0);
13847 return WDI_STATUS_E_FAILURE;
13848 }
13849
13850 halSetTDLSLinkEstablishParams.staIdx =
13851 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13852 halSetTDLSLinkEstablishParams.bIsResponder =
13853 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13854 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13855 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13856 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13857 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13858 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13859 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13860 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13861 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13862 halSetTDLSLinkEstablishParams.aAck = 0;
13863 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13864 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13865 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013866 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13867 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13868
13869 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13870 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13871 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13872 halSetTDLSLinkEstablishParams.validChannelsLen =
13873 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13874
13875 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13876 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13877 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13878 halSetTDLSLinkEstablishParams.validOperClassesLen =
13879 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013880
13881 wpalMemoryCopy( pSendBuffer+usDataOffset,
13882 &halSetTDLSLinkEstablishParams,
13883 sizeof(halSetTDLSLinkEstablishParams));
13884
13885 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13886 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13887
13888 /*-------------------------------------------------------------------------
13889 Send Update Probe Resp Template Request to HAL
13890 -------------------------------------------------------------------------*/
13891 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13892 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13893 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13894 return 0;
13895}/*WDI_ProcessTdlsLinkEstablishReq*/
13896
13897
Atul Mittalc0f739f2014-07-31 13:47:47 +053013898/**
13899 @brief sends the channel switch command to f/w (called when Main FSM
13900 allows it)
13901
13902 @param pWDICtx: pointer to the WLAN DAL context
13903 pEventData: pointer to the event information structure
13904
13905 @see
13906 @return Result of the function call
13907*/
13908WDI_Status
13909WDI_ProcessTdlsChanSwitchReq
13910(
13911 WDI_ControlBlockType* pWDICtx,
13912 WDI_EventInfoType* pEventData
13913)
13914{
13915 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13916 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13917 wpt_uint8* pSendBuffer = NULL;
13918 wpt_uint16 usDataOffset = 0;
13919 wpt_uint16 usSendSize = 0;
13920 //WDI_Status wdiStatus;
13921 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13923
13924 /*-------------------------------------------------------------------------
13925 Sanity check
13926 -------------------------------------------------------------------------*/
13927 if (( NULL == pEventData ) ||
13928 ( NULL == pEventData->pEventData))
13929 {
13930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13931 "%s: Invalid parameters", __func__);
13932 WDI_ASSERT(0);
13933 return WDI_STATUS_E_FAILURE;
13934 }
13935 pwdiTDLSChanSwitchReqParams =
13936 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13937 wdiTDLSChanSwitchReqRspCb =
13938 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13939
13940 /*-----------------------------------------------------------------------
13941 Get message buffer
13942 -----------------------------------------------------------------------*/
13943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13944 WDI_TDLS_CHAN_SWITCH_REQ,
13945 sizeof(halSetTDLSChanSwitchParams),
13946 &pSendBuffer, &usDataOffset, &usSendSize))||
13947 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13948 {
13949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13950 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13951 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13952 WDI_ASSERT(0);
13953 return WDI_STATUS_E_FAILURE;
13954 }
13955
13956 halSetTDLSChanSwitchParams.staIdx =
13957 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13958 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13959 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13960 halSetTDLSChanSwitchParams.targetOperClass =
13961 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13962 halSetTDLSChanSwitchParams.targetChannel =
13963 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13964 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13965 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13966 wpalMemoryCopy( pSendBuffer+usDataOffset,
13967 &halSetTDLSChanSwitchParams,
13968 sizeof(halSetTDLSChanSwitchParams));
13969
13970 pWDICtx->wdiReqStatusCB = NULL;
13971 pWDICtx->pReqStatusUserData = NULL;
13972
13973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13974 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13975 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13976}/*WDI_ProcessTdlsChanSwitchReq*/
13977
13978#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013979
Jeff Johnson295189b2012-06-20 16:38:30 -070013980
13981
13982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 @param None
13986
13987 @see
13988 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013989*/
13990void
13991WDI_SetPowerStateCb
13992(
13993 wpt_status status,
13994 unsigned int dxePhyAddr,
13995 void *pContext
13996)
13997{
13998 wpt_status wptStatus;
13999 WDI_ControlBlockType *pCB = NULL;
14000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 /*
14002 * Trigger the event to bring the Enter BMPS req function to come
14003 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014004*/
14005 if( NULL != pContext )
14006 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 }
14009 else
14010 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 pCB = &gWDICb;
14013 }
Mihir Shetea4306052014-03-25 00:02:54 +053014014
14015 if(eWLAN_PAL_STATUS_SUCCESS == status )
14016 {
14017 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14018 }
14019 else
14020 {
14021 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 pCB->dxePhyAddr = dxePhyAddr;
14024 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14025 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14026 {
14027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14028 "Failed to set an event");
14029
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 }
14032 return;
14033}
14034
14035
14036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014039
14040 @param pWDICtx: pointer to the WLAN DAL context
14041 pEventData: pointer to the event information structure
14042
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 @see
14044 @return Result of the function call
14045*/
14046WDI_Status
14047WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014048(
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 WDI_ControlBlockType* pWDICtx,
14050 WDI_EventInfoType* pEventData
14051)
14052{
Jeff Johnson43971f52012-07-17 12:26:56 -070014053 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 wpt_uint16 usDataOffset = 0;
14057 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014058 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14060
14061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014064 if ((NULL == pEventData ) ||
14065 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14066 (NULL == (pwdiEnterImpsReqParams =
14067 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 {
14069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014072 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 }
14074
14075 /*-----------------------------------------------------------------------
14076 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014077 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014078 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 0,
14081 &pSendBuffer, &usDataOffset, &usSendSize))||
14082 ( usSendSize < (usDataOffset )))
14083 {
14084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014085 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 pEventData, wdiEnterImpsRspCb);
14087 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014088 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 }
14090
14091 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014092 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14093 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 {
14095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14096 "WDI Init failed to reset an event");
14097
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014099 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 }
14101
14102 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014103 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14104 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014106 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014108 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014110
14111 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014114 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14115 WDI_SET_POWER_STATE_TIMEOUT);
14116 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 {
14118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14119 "WDI Init failed to wait on an event");
14120
Karthick S1fa70262015-08-20 13:28:14 +053014121 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014123 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 }
14125
Mihir Shetea4306052014-03-25 00:02:54 +053014126 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14127 {
14128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14129 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14130
14131 goto fail;
14132 }
14133
14134 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14135 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14140 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014141
14142fail:
14143 // Release the message buffer so we don't leak
14144 wpalMemoryFree(pSendBuffer);
14145
14146failRequest:
14147 //WDA should have failure check to avoid the memory leak
14148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014149}/*WDI_ProcessEnterImpsReq*/
14150
14151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014154
14155 @param pWDICtx: pointer to the WLAN DAL context
14156 pEventData: pointer to the event information structure
14157
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 @see
14159 @return Result of the function call
14160*/
14161WDI_Status
14162WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014163(
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 WDI_ControlBlockType* pWDICtx,
14165 WDI_EventInfoType* pEventData
14166)
14167{
14168 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 wpt_uint16 usDataOffset = 0;
14171 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014172 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14174
14175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 -------------------------------------------------------------------------*/
14178 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014179 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14180 (NULL == (pwdiExitImpsReqParams =
14181 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 {
14183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 }
14188
14189 /*-----------------------------------------------------------------------
14190 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 0,
14195 &pSendBuffer, &usDataOffset, &usSendSize))||
14196 ( usSendSize < (usDataOffset )))
14197 {
14198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014199 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 pEventData, wdiExitImpsRspCb);
14201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014204 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14205 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14210 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014211}/*WDI_ProcessExitImpsReq*/
14212
14213/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014216
14217 @param pWDICtx: pointer to the WLAN DAL context
14218 pEventData: pointer to the event information structure
14219
Jeff Johnson295189b2012-06-20 16:38:30 -070014220 @see
14221 @return Result of the function call
14222*/
14223WDI_Status
14224WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014225(
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 WDI_ControlBlockType* pWDICtx,
14227 WDI_EventInfoType* pEventData
14228)
14229{
14230 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14231 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 wpt_uint16 usDataOffset = 0;
14234 wpt_uint16 usSendSize = 0;
14235 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014236 wpt_status wptStatus;
14237
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14239
14240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014242 -------------------------------------------------------------------------*/
14243 if (( NULL == pEventData ) ||
14244 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14245 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14246 {
14247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014250 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 }
14252
14253 /*-----------------------------------------------------------------------
14254 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 sizeof(enterBmpsReq),
14259 &pSendBuffer, &usDataOffset, &usSendSize))||
14260 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14261 {
14262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014263 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14265 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014266 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 }
14268
14269 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014270 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14271 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 {
14273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14274 "WDI Init failed to reset an event");
14275
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014277 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 }
14279
14280 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014281 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14282 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14283 {
14284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014285 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014286 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014287 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014288 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014289
14290/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014293 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14294 WDI_SET_POWER_STATE_TIMEOUT);
14295 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 {
14297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14298 "WDI Init failed to wait on an event");
14299
Karthick S1fa70262015-08-20 13:28:14 +053014300 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014302 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 }
14304
14305 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14306
14307 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14308 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14309 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14310 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14311
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014312 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14314 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14315 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14316
14317 wpalMemoryCopy( pSendBuffer+usDataOffset,
14318 &enterBmpsReq,
14319 sizeof(enterBmpsReq));
14320
14321 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014323
14324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014325 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14328 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014329
14330fail:
14331 // Release the message buffer so we don't leak
14332 wpalMemoryFree(pSendBuffer);
14333
14334failRequest:
14335 //WDA should have failure check to avoid the memory leak
14336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014337}/*WDI_ProcessEnterBmpsReq*/
14338
14339/**
14340 @brief Process Exit BMPS Request function (called when Main FSM
14341 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014342
14343 @param pWDICtx: pointer to the WLAN DAL context
14344 pEventData: pointer to the event information structure
14345
Jeff Johnson295189b2012-06-20 16:38:30 -070014346 @see
14347 @return Result of the function call
14348*/
14349WDI_Status
14350WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014351(
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 WDI_ControlBlockType* pWDICtx,
14353 WDI_EventInfoType* pEventData
14354)
14355{
14356 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14357 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 wpt_uint16 usDataOffset = 0;
14360 wpt_uint16 usSendSize = 0;
14361 tHalExitBmpsReqParams exitBmpsReq;
14362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14363
14364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 -------------------------------------------------------------------------*/
14367 if (( NULL == pEventData ) ||
14368 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14369 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14370 {
14371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
14376
14377 /*-----------------------------------------------------------------------
14378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 sizeof(exitBmpsReq),
14383 &pSendBuffer, &usDataOffset, &usSendSize))||
14384 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14385 {
14386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014387 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 }
14392 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14393
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14395
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 wpalMemoryCopy( pSendBuffer+usDataOffset,
14397 &exitBmpsReq,
14398 sizeof(exitBmpsReq));
14399
14400 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014402
14403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014404 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14407 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014408}/*WDI_ProcessExitBmpsReq*/
14409
14410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014413
14414 @param pWDICtx: pointer to the WLAN DAL context
14415 pEventData: pointer to the event information structure
14416
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 @see
14418 @return Result of the function call
14419*/
14420WDI_Status
14421WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014422(
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 WDI_ControlBlockType* pWDICtx,
14424 WDI_EventInfoType* pEventData
14425)
14426{
14427 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14428 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 wpt_uint16 usDataOffset = 0;
14431 wpt_uint16 usSendSize = 0;
14432 tUapsdReqParams enterUapsdReq;
14433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14434
14435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 -------------------------------------------------------------------------*/
14438 if (( NULL == pEventData ) ||
14439 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14440 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14441 {
14442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 }
14447
14448 /*-----------------------------------------------------------------------
14449 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 sizeof(enterUapsdReq),
14454 &pSendBuffer, &usDataOffset, &usSendSize))||
14455 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14456 {
14457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014458 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 }
14463
14464 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14465 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14466 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14467 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14468 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14469 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14470 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14471 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014473
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 wpalMemoryCopy( pSendBuffer+usDataOffset,
14475 &enterUapsdReq,
14476 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014477
14478 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014480
14481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14485 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014486}/*WDI_ProcessEnterUapsdReq*/
14487
14488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014491
14492 @param pWDICtx: pointer to the WLAN DAL context
14493 pEventData: pointer to the event information structure
14494
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 @see
14496 @return Result of the function call
14497*/
14498WDI_Status
14499WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014500(
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 WDI_ControlBlockType* pWDICtx,
14502 WDI_EventInfoType* pEventData
14503)
14504{
14505 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 wpt_uint16 usDataOffset = 0;
14508 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014509 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14510 wpt_uint8 bssIdx = 0;
14511
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14513
14514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014516 -------------------------------------------------------------------------*/
14517 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014518 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14520 {
14521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 }
14526
14527 /*-----------------------------------------------------------------------
14528 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014532 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014534 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 {
14536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014537 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 pEventData, wdiExitUapsdRspCb);
14539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 }
14542
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014543 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14544
14545 wpalMemoryCopy( pSendBuffer+usDataOffset,
14546 &bssIdx,
14547 sizeof(wpt_uint8));
14548
14549 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14550 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14551
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14556 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014557}/*WDI_ProcessExitUapsdReq*/
14558
14559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014562
14563 @param pWDICtx: pointer to the WLAN DAL context
14564 pEventData: pointer to the event information structure
14565
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 @see
14567 @return Result of the function call
14568*/
14569WDI_Status
14570WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014571(
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 WDI_ControlBlockType* pWDICtx,
14573 WDI_EventInfoType* pEventData
14574)
14575{
14576 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14577 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 wpt_uint16 usDataOffset = 0;
14580 wpt_uint16 usSendSize = 0;
14581 tUapsdInfo uapsdAcParamsReq;
14582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14583
14584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 -------------------------------------------------------------------------*/
14587 if (( NULL == pEventData ) ||
14588 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14589 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14590 {
14591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 }
14596
14597 /*-----------------------------------------------------------------------
14598 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 sizeof(uapsdAcParamsReq),
14603 &pSendBuffer, &usDataOffset, &usSendSize))||
14604 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14605 {
14606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014607 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 }
14612
14613 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14614 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14615 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14616 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14617 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14618 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14619
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wpalMemoryCopy( pSendBuffer+usDataOffset,
14621 &uapsdAcParamsReq,
14622 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014623
14624 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->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 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014632}/*WDI_ProcessSetUapsdAcParamsReq*/
14633
14634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 @brief Process update UAPSD params 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_ProcessUpdateUapsdParamsReq
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_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14652 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = 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 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14657
14658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 -------------------------------------------------------------------------*/
14661 if (( NULL == pEventData ) ||
14662 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14663 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14664 {
14665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 }
14670
14671 /*-----------------------------------------------------------------------
14672 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14677 &pSendBuffer, &usDataOffset, &usSendSize))||
14678 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14679 {
14680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014681 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 }
14686
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 wpalMemoryCopy( pSendBuffer+usDataOffset,
14688 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14689 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014690
14691 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014693
14694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14698 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014699}/*WDI_ProcessUpdateUapsdParamsReq*/
14700
14701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014702 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014704
14705 @param pWDICtx: pointer to the WLAN DAL context
14706 pEventData: pointer to the event information structure
14707
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 @see
14709 @return Result of the function call
14710*/
14711WDI_Status
14712WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014713(
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 WDI_ControlBlockType* pWDICtx,
14715 WDI_EventInfoType* pEventData
14716)
14717{
14718 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14719 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 wpt_uint16 usDataOffset = 0;
14722 wpt_uint16 usSendSize = 0;
14723 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14724
14725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14726
14727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 -------------------------------------------------------------------------*/
14730 if (( NULL == pEventData ) ||
14731 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14732 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14733 {
14734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 }
14739
14740 /*-----------------------------------------------------------------------
14741 Get message buffer
14742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014744 sizeof(halRxpFilterParams),
14745 &pSendBuffer, &usDataOffset, &usSendSize))||
14746 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14747 {
14748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014749 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 }
14754
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &halRxpFilterParams,
14762 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014763
14764 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14771 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014772}/*WDI_ProcessConfigureRxpFilterReq*/
14773
14774/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014777
14778 @param pWDICtx: pointer to the WLAN DAL context
14779 pEventData: pointer to the event information structure
14780
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 @see
14782 @return Result of the function call
14783*/
14784WDI_Status
14785WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014786(
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 WDI_ControlBlockType* pWDICtx,
14788 WDI_EventInfoType* pEventData
14789)
14790{
14791 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14792 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 wpt_uint16 usDataOffset = 0;
14795 wpt_uint16 usSendSize = 0;
14796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14797
14798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 -------------------------------------------------------------------------*/
14801 if (( NULL == pEventData ) ||
14802 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14803 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14804 {
14805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 }
14810
14811 /*-----------------------------------------------------------------------
14812 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14817 &pSendBuffer, &usDataOffset, &usSendSize))||
14818 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14819 {
14820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014821 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 }
14826
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 wpalMemoryCopy( pSendBuffer+usDataOffset,
14828 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14829 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14830 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14831 &pwdiBeaconFilterParams->aFilters[0],
14832 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
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_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014842}/*WDI_ProcessSetBeaconFilterReq*/
14843
14844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 @brief Process remove beacon filter 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_ProcessRemBeaconFilterReq
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_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14862 WDI_RemBeaconFilterCb wdiBeaconFilterCb = 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 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14867
14868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 -------------------------------------------------------------------------*/
14871 if (( NULL == pEventData ) ||
14872 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14873 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14874 {
14875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 }
14880
14881 /*-----------------------------------------------------------------------
14882 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14887 &pSendBuffer, &usDataOffset, &usSendSize))||
14888 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14889 {
14890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014891 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 }
14896
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 wpalMemoryCopy( pSendBuffer+usDataOffset,
14898 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14899 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014900
14901 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014903
14904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14908 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014909}
14910
14911/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014914
14915 @param pWDICtx: pointer to the WLAN DAL context
14916 pEventData: pointer to the event information structure
14917
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 @see
14919 @return Result of the function call
14920*/
14921WDI_Status
14922WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014923(
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 WDI_ControlBlockType* pWDICtx,
14925 WDI_EventInfoType* pEventData
14926)
14927{
14928 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14929 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 wpt_uint16 usDataOffset = 0;
14932 wpt_uint16 usSendSize = 0;
14933 tHalRSSIThresholds rssiThresholdsReq;
14934 WDI_Status ret_status = 0;
14935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14936
14937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 -------------------------------------------------------------------------*/
14940 if (( NULL == pEventData ) ||
14941 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14942 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14943 {
14944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 }
14949
14950 /*-----------------------------------------------------------------------
14951 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 sizeof(rssiThresholdsReq),
14956 &pSendBuffer, &usDataOffset, &usSendSize))||
14957 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14958 {
14959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014960 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 }
14965
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14986
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 wpalMemoryCopy( pSendBuffer+usDataOffset,
14988 &rssiThresholdsReq,
14989 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014990
14991 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014993
14994 /*-------------------------------------------------------------------------
14995 Send Set threshold req to HAL
14996 -------------------------------------------------------------------------*/
14997 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14998 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14999 {
15000 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15001 // req. Then as a result of processing the threshold cross ind, we trigger
15002 // a Set threshold req, then we need to indicate to WDI that it needs to
15003 // go to busy state as a result of the indication as we sent a req in the
15004 // same WDI context.
15005 // Hence expected state transition is to busy.
15006 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15007 }
15008
15009 return ret_status;
15010}
15011
15012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015015
15016 @param pWDICtx: pointer to the WLAN DAL context
15017 pEventData: pointer to the event information structure
15018
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 @see
15020 @return Result of the function call
15021*/
15022WDI_Status
15023WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015024(
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 WDI_ControlBlockType* pWDICtx,
15026 WDI_EventInfoType* pEventData
15027)
15028{
15029 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15030 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 wpt_uint16 usDataOffset = 0;
15033 wpt_uint16 usSendSize = 0;
15034 tHalHostOffloadReq hostOffloadParams;
15035 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015036 wpt_uint8 ucCurrentBSSSesIdx = 0;
15037 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015038
15039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15040
15041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 -------------------------------------------------------------------------*/
15044 if (( NULL == pEventData ) ||
15045 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15046 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15047 {
15048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015051 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 }
15053
15054 /*-----------------------------------------------------------------------
15055 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15060 &pSendBuffer, &usDataOffset, &usSendSize))||
15061 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15062 {
15063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015064 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15066 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015067 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 }
15069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015070 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15071 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15072 &pBSSSes);
15073 if ( NULL == pBSSSes )
15074 {
c_hpothu86feba52014-10-28 15:51:18 +053015075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015076 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15077 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015078 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015079 }
15080
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15082 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015083
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15085 {
15086 // ARP Offload
15087 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15088 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15089 4);
15090 }
15091 else
15092 {
15093 // NS Offload
15094 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15095 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15096 16);
15097
15098#ifdef WLAN_NS_OFFLOAD
15099 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15100 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15101 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15102 16);
15103 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15104 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15105 16);
15106 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15107 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15108 16);
15109 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15110 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15111 16);
15112 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15113 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15114 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015115 nsOffloadParams.srcIPv6AddrValid =
15116 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15117
15118 nsOffloadParams.targetIPv6Addr1Valid =
15119 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15120
15121 nsOffloadParams.targetIPv6Addr2Valid =
15122 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15123
15124 nsOffloadParams.slotIndex =
15125 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015126
Jeff Johnson295189b2012-06-20 16:38:30 -070015127#endif // WLAN_NS_OFFLOAD
15128 }
15129
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015130 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15131
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 // copy hostOffloadParams into pSendBuffer
15133 wpalMemoryCopy( pSendBuffer+usDataOffset,
15134 &hostOffloadParams,
15135 sizeof(hostOffloadParams));
15136
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015137 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015139 // copy nsOffloadParams into pSendBuffer
15140 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 &nsOffloadParams,
15142 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015143 }
15144 else
15145 {
15146#ifdef WLAN_NS_OFFLOAD
15147 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15148 {
15149 // copy nsOffloadParams into pSendBuffer
15150 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15151 &nsOffloadParams,
15152 sizeof(nsOffloadParams));
15153 }
15154#endif
15155 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015156
15157 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015158 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015159
15160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15164 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015165
15166fail:
15167 // Release the message buffer so we don't leak
15168 wpalMemoryFree(pSendBuffer);
15169
15170failRequest:
15171 //WDA should have failure check to avoid the memory leak
15172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015173}/*WDI_ProcessHostOffloadReq*/
15174
15175/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015178
15179 @param pWDICtx: pointer to the WLAN DAL context
15180 pEventData: pointer to the event information structure
15181
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 @see
15183 @return Result of the function call
15184*/
15185WDI_Status
15186WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015187(
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 WDI_ControlBlockType* pWDICtx,
15189 WDI_EventInfoType* pEventData
15190)
15191{
15192 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15193 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 wpt_uint16 usDataOffset = 0;
15196 wpt_uint16 usSendSize = 0;
15197 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015198 wpt_uint8 ucCurrentBSSSesIdx = 0;
15199 WDI_BSSSessionType* pBSSSes = NULL;
15200
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15202
15203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 -------------------------------------------------------------------------*/
15206 if (( NULL == pEventData ) ||
15207 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15208 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15209 {
15210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15211 "Invalid parameters in Keep Alive req");
15212 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015213 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 }
15215
15216 /*-----------------------------------------------------------------------
15217 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 sizeof(keepAliveReq),
15222 &pSendBuffer, &usDataOffset, &usSendSize))||
15223 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15224 {
15225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015226 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15228 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015229 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 }
15231
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015232 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15233 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15234 &pBSSSes);
15235 if ( NULL == pBSSSes )
15236 {
15237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015238 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015239 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015240 }
15241
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15243 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15244
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015245 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015246
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15248 {
15249 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15250 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15251 HAL_IPV4_ADDR_LEN);
15252 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15253 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 wpalMemoryCopy(keepAliveReq.destMacAddr,
15256 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15257 HAL_MAC_ADDR_LEN);
15258 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015259
15260 wpalMemoryCopy( pSendBuffer+usDataOffset,
15261 &keepAliveReq,
15262 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015263
15264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015265 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015266
15267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015268 "Process keep alive req time period %d",
15269 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015270
15271 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015272 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015273
15274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15275 "Sending keep alive req to HAL");
15276
15277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15281 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015282
15283fail:
15284 // Release the message buffer so we don't leak
15285 wpalMemoryFree(pSendBuffer);
15286
15287failRequest:
15288 //WDA should have failure check to avoid the memory leak
15289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015290}/*WDI_ProcessKeepAliveReq*/
15291
15292
15293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015296
15297 @param pWDICtx: pointer to the WLAN DAL context
15298 pEventData: pointer to the event information structure
15299
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 @see
15301 @return Result of the function call
15302*/
15303WDI_Status
15304WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015305(
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 WDI_ControlBlockType* pWDICtx,
15307 WDI_EventInfoType* pEventData
15308)
15309{
15310 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15311 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 wpt_uint16 usDataOffset = 0;
15314 wpt_uint16 usSendSize = 0;
15315 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015316 wpt_uint8 ucCurrentBSSSesIdx = 0;
15317 WDI_BSSSessionType* pBSSSes = NULL;
15318
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15320
15321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015323 -------------------------------------------------------------------------*/
15324 if (( NULL == pEventData ) ||
15325 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15326 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15327 {
15328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015331 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 }
15333
15334 /*-----------------------------------------------------------------------
15335 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 sizeof(wowlAddBcPtrnReq),
15340 &pSendBuffer, &usDataOffset, &usSendSize))||
15341 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15342 {
15343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015344 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15346 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015347 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 }
15349
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015350 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15351 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15352 &pBSSSes);
15353 if ( NULL == pBSSSes )
15354 {
15355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015356 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015357 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015358 }
15359
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15368
15369 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15370 {
15371 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15373 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15374 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15376 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15377 }
15378 else
15379 {
15380 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15381 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15382 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15383 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15384 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15385 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15386
15387 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15388 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15389 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15390 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15391 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15392 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15393 }
15394
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015395 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15396
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 wpalMemoryCopy( pSendBuffer+usDataOffset,
15398 &wowlAddBcPtrnReq,
15399 sizeof(wowlAddBcPtrnReq));
15400
15401 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015403
15404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015405 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15408 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015409fail:
15410 // Release the message buffer so we don't leak
15411 wpalMemoryFree(pSendBuffer);
15412
15413failRequest:
15414 //WDA should have failure check to avoid the memory leak
15415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416}/*WDI_ProcessWowlAddBcPtrnReq*/
15417
15418/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015421
15422 @param pWDICtx: pointer to the WLAN DAL context
15423 pEventData: pointer to the event information structure
15424
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 @see
15426 @return Result of the function call
15427*/
15428WDI_Status
15429WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015430(
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 WDI_ControlBlockType* pWDICtx,
15432 WDI_EventInfoType* pEventData
15433)
15434{
15435 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15436 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 wpt_uint16 usDataOffset = 0;
15439 wpt_uint16 usSendSize = 0;
15440 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015441 wpt_uint8 ucCurrentBSSSesIdx = 0;
15442 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15444
15445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 -------------------------------------------------------------------------*/
15448 if (( NULL == pEventData ) ||
15449 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15450 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15451 {
15452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015455 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 }
15457
15458 /*-----------------------------------------------------------------------
15459 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 sizeof(wowlDelBcPtrnReq),
15464 &pSendBuffer, &usDataOffset, &usSendSize))||
15465 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15466 {
15467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015468 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15470 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015471 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 }
15473
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015474 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15475 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15476 &pBSSSes);
15477 if ( NULL == pBSSSes )
15478 {
15479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015480 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015481 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015482 }
15483
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015486
15487 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15488
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 wpalMemoryCopy( pSendBuffer+usDataOffset,
15490 &wowlDelBcPtrnReq,
15491 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015492
15493 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015495
15496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15500 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015501
15502fail:
15503 // Release the message buffer so we don't leak
15504 wpalMemoryFree(pSendBuffer);
15505
15506failRequest:
15507 //WDA should have failure check to avoid the memory leak
15508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015509}/*WDI_ProcessWowlDelBcPtrnReq*/
15510
15511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015514
15515 @param pWDICtx: pointer to the WLAN DAL context
15516 pEventData: pointer to the event information structure
15517
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 @see
15519 @return Result of the function call
15520*/
15521WDI_Status
15522WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015523(
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 WDI_ControlBlockType* pWDICtx,
15525 WDI_EventInfoType* pEventData
15526)
15527{
15528 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15529 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 wpt_uint16 usDataOffset = 0;
15532 wpt_uint16 usSendSize = 0;
15533 tHalWowlEnterParams wowlEnterReq;
15534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15535
15536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 -------------------------------------------------------------------------*/
15539 if (( NULL == pEventData ) ||
15540 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15541 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15542 {
15543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 }
15548
15549 /*-----------------------------------------------------------------------
15550 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015551 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015554 sizeof(wowlEnterReq),
15555 &pSendBuffer, &usDataOffset, &usSendSize))||
15556 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15557 {
15558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015559 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 }
15564
Kumar Anandaca924e2013-07-22 14:35:34 -070015565 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15566
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015581 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15583
15584#ifdef WLAN_WAKEUP_EVENTS
15585 wowlEnterReq.ucWoWEAPIDRequestEnable =
15586 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15587
15588 wowlEnterReq.ucWoWEAPOL4WayEnable =
15589 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15590
15591 wowlEnterReq.ucWowNetScanOffloadMatch =
15592 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15593
15594 wowlEnterReq.ucWowGTKRekeyError =
15595 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15596
15597 wowlEnterReq.ucWoWBSSConnLoss =
15598 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15599#endif // WLAN_WAKEUP_EVENTS
15600
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015601 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15602
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15604 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15605 sizeof(tSirMacAddr));
15606
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 wpalMemoryCopy( pSendBuffer+usDataOffset,
15608 &wowlEnterReq,
15609 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015610
15611 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015613
15614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015615 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15618 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015619}/*WDI_ProcessWowlEnterReq*/
15620
15621/**
15622 @brief Process Wowl exit Request function (called when Main FSM
15623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015624
15625 @param pWDICtx: pointer to the WLAN DAL context
15626 pEventData: pointer to the event information structure
15627
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 @see
15629 @return Result of the function call
15630*/
15631WDI_Status
15632WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015633(
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 WDI_ControlBlockType* pWDICtx,
15635 WDI_EventInfoType* pEventData
15636)
15637{
15638 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015639 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 wpt_uint16 usDataOffset = 0;
15642 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015643 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15645
15646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 -------------------------------------------------------------------------*/
15649 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015650 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15652 {
15653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 }
15658
15659 /*-----------------------------------------------------------------------
15660 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015664 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015666 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 {
15668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015669 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 pEventData, wdiWowlExitCb);
15671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 }
15674
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015675 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15676
15677 wpalMemoryCopy( pSendBuffer+usDataOffset,
15678 &wowlExitparams,
15679 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15684 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015685}/*WDI_ProcessWowlExitReq*/
15686
15687/**
15688 @brief Process Configure Apps Cpu Wakeup State Request function
15689 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015690
15691 @param pWDICtx: pointer to the WLAN DAL context
15692 pEventData: pointer to the event information structure
15693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 @see
15695 @return Result of the function call
15696*/
15697WDI_Status
15698WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015699(
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 WDI_ControlBlockType* pWDICtx,
15701 WDI_EventInfoType* pEventData
15702)
15703{
15704 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15705 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 wpt_uint16 usDataOffset = 0;
15708 wpt_uint16 usSendSize = 0;
15709 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15711
15712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 -------------------------------------------------------------------------*/
15715 if (( NULL == pEventData ) ||
15716 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15717 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15718 {
15719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 }
15724
15725 /*-----------------------------------------------------------------------
15726 Get message buffer
15727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 sizeof(halCfgAppsCpuWakeupStateReqParams),
15730 &pSendBuffer, &usDataOffset, &usSendSize))||
15731 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15732 {
15733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015734 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 }
15739
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15742
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wpalMemoryCopy( pSendBuffer+usDataOffset,
15744 &halCfgAppsCpuWakeupStateReqParams,
15745 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015746
15747 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015749
15750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15754 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15755 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015756}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15757
15758#ifdef WLAN_FEATURE_VOWIFI_11R
15759/**
15760 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15761 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015762
15763 @param pWDICtx: pointer to the WLAN DAL context
15764 pEventData: pointer to the event information structure
15765
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 @see
15767 @return Result of the function call
15768*/
15769WDI_Status
15770WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015771(
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 WDI_ControlBlockType* pWDICtx,
15773 WDI_EventInfoType* pEventData
15774)
15775{
15776 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15777 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 wpt_uint16 usDataOffset = 0;
15782 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 wpt_macAddr macBSSID;
15785 tAggrAddTsReq halAggrAddTsReq;
15786 int i;
15787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15788
15789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 -------------------------------------------------------------------------*/
15792 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15793 ( NULL == pEventData->pCBfnc ))
15794 {
15795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 }
15800 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15801 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15802 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15803 /*-------------------------------------------------------------------------
15804 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 -------------------------------------------------------------------------*/
15807 wpalMutexAcquire(&pWDICtx->wptMutex);
15808
15809 /*------------------------------------------------------------------------
15810 Find the BSS for which the request is made and identify WDI session
15811 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015812 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15813 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 &macBSSID))
15815 {
15816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015817 "This station does not exist in the WDI Station Table %d",
15818 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 }
15822
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15824 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15827 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15828 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015829
15830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 /*------------------------------------------------------------------------
15835 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 ------------------------------------------------------------------------*/
15838 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15839 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15841 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15842 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015843
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 }
15848
15849 wpalMutexRelease(&pWDICtx->wptMutex);
15850 /*-----------------------------------------------------------------------
15851 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 sizeof(tAggrAddTsParams),
15856 &pSendBuffer, &usDataOffset, &usSendSize))||
15857 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15858 {
15859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015860 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 }
15865
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15870
15871 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15872 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15879 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15882 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15885 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15888 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015890 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15891 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015892 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15894 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15897 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15900 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015905
15906
15907 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015908 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15937 }
15938
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 wpalMemoryCopy( pSendBuffer+usDataOffset,
15940 &halAggrAddTsReq,
15941 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015945
15946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015952}/*WDI_ProcessAggrAddTSpecReq*/
15953#endif /* WLAN_FEATURE_VOWIFI_11R */
15954
15955/**
15956 @brief Process Shutdown Request function (called when Main FSM
15957 allows it)
15958
15959 @param pWDICtx: pointer to the WLAN DAL context
15960 pEventData: pointer to the event information structure
15961
15962 @see
15963 @return Result of the function call
15964*/
15965WDI_Status
15966WDI_ProcessShutdownReq
15967(
15968 WDI_ControlBlockType* pWDICtx,
15969 WDI_EventInfoType* pEventData
15970 )
15971{
15972 wpt_status wptStatus;
15973
15974
15975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15976
15977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 -------------------------------------------------------------------------*/
15980 if ( NULL == pEventData )
15981 {
15982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ASSERT(0);
15985 return WDI_STATUS_E_FAILURE;
15986 }
15987
15988 wpalMutexAcquire(&pWDICtx->wptMutex);
15989
15990
15991 gWDIInitialized = eWLAN_PAL_FALSE;
15992 /*! TO DO: stop the data services */
15993 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15994 {
15995 /*Stop the STA Table !UT- check this logic again
15996 It is safer to do it here than on the response - because a stop is imminent*/
15997 WDI_STATableStop(pWDICtx);
15998
15999 /* Stop Transport Driver, DXE */
16000 WDTS_Stop(pWDICtx);
16001 }
16002
16003 /*Clear all pending request*/
16004 WDI_ClearPendingRequests(pWDICtx);
16005 /* Close Data transport*/
16006 /* FTM mode does not open Data Path */
16007 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16008 {
16009 WDTS_Close(pWDICtx);
16010 }
16011 /*Close the STA Table !UT- check this logic again*/
16012 WDI_STATableClose(pWDICtx);
16013 /*close the PAL */
16014 wptStatus = wpalClose(pWDICtx->pPALContext);
16015 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16016 {
16017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16018 "Failed to wpal Close %d", wptStatus);
16019 WDI_ASSERT(0);
16020 }
16021
16022 /*Transition back to init state*/
16023 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16024
16025 wpalMutexRelease(&pWDICtx->wptMutex);
16026
16027 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016029
16030
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016032}/*WDI_ProcessShutdownReq*/
16033
16034/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016036========================================================================*/
16037
16038/**
16039 @brief Process Start Response function (called when a response
16040 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016041
16042 @param pWDICtx: pointer to the WLAN DAL context
16043 pEventData: pointer to the event information structure
16044
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 @see
16046 @return Result of the function call
16047*/
16048WDI_Status
16049WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016050(
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 WDI_ControlBlockType* pWDICtx,
16052 WDI_EventInfoType* pEventData
16053)
16054{
16055 WDI_StartRspParamsType wdiRspParams;
16056 WDI_StartRspCb wdiStartRspCb = NULL;
16057
16058 tHalMacStartRspParams* startRspParams;
16059
16060#ifndef HAL_SELF_STA_PER_BSS
16061 WDI_AddStaParams wdiAddSTAParam = {0};
16062#endif
16063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16064
Jeff Johnsone7245742012-09-05 17:12:55 -070016065 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 -------------------------------------------------------------------------*/
16069 if (( NULL == pEventData ) ||
16070 ( NULL == pEventData->pEventData) ||
16071 ( NULL == wdiStartRspCb ))
16072 {
16073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 }
16078
16079 /*-------------------------------------------------------------------------
16080 Extract response and send it to UMAC
16081 -------------------------------------------------------------------------*/
16082 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16083 {
16084 // not enough data was received
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016086 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 }
16091
16092 /*-------------------------------------------------------------------------
16093 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 -------------------------------------------------------------------------*/
16096 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16097
16098 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16099 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16100 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16101 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16102 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16103 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16104 wdiRspParams.wlanReportedVersion.major =
16105 startRspParams->wcnssWlanVersion.major;
16106 wdiRspParams.wlanReportedVersion.minor =
16107 startRspParams->wcnssWlanVersion.minor;
16108 wdiRspParams.wlanReportedVersion.version =
16109 startRspParams->wcnssWlanVersion.version;
16110 wdiRspParams.wlanReportedVersion.revision =
16111 startRspParams->wcnssWlanVersion.revision;
16112 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16113 startRspParams->wcnssCrmVersionString,
16114 sizeof(wdiRspParams.wcnssSoftwareVersion));
16115 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16116 startRspParams->wcnssWlanVersionString,
16117 sizeof(wdiRspParams.wcnssHardwareVersion));
16118 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16119
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016120 /*Save the HAL Version*/
16121 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16122
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 wpalMutexAcquire(&pWDICtx->wptMutex);
16124 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16125 {
16126 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16127
16128 /*Cache the start response for further use*/
16129 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 sizeof(pWDICtx->wdiCachedStartRspParams));
16132
16133 }
16134 else
16135 {
16136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16137 "Failed to start device with status %s(%d)",
16138 WDI_getHALStatusMsgString(startRspParams->status),
16139 startRspParams->status);
16140
16141 /*Set the expected state transition to stopped - because the start has
16142 failed*/
16143 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16144
16145 wpalMutexRelease(&pWDICtx->wptMutex);
16146
16147 /*Notify UMAC*/
16148 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016149
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016151 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016152
16153 /*Although the response is an error - it was processed by our function
16154 so as far as the caller is concerned this is a succesful reponse processing*/
16155 return WDI_STATUS_SUCCESS;
16156 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016157
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 wpalMutexRelease(&pWDICtx->wptMutex);
16159
16160 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16161 {
16162 /* FTM mode does not need to execute below */
16163 /* Notify UMAC */
16164 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16165 return WDI_STATUS_SUCCESS;
16166 }
16167
16168 /* START the Data transport */
16169 WDTS_startTransport(pWDICtx);
16170
16171 /*Start the STA Table !- check this logic again*/
16172 WDI_STATableStart(pWDICtx);
16173
16174#ifndef HAL_SELF_STA_PER_BSS
16175 /* Store the Self STA Index */
16176 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16177
16178 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16179 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16180 WDI_MAC_ADDR_LEN);
16181
16182 /* At this point add the self-STA */
16183
16184 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16185 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16186 /*! TO DO: wdiAddSTAParam.dpuSig */
16187 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16188 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16189 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16190
16191 //all DPU indices are the same for self STA
16192 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16193 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016194 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16196 WDI_MAC_ADDR_LEN);
16197 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16198 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16199
16200 /* Note: Since we don't get an explicit config STA request for self STA, we
16201 add the self STA upon receiving the Start response message. But the
16202 self STA entry in the table is deleted when WDI gets an explicit delete STA
16203 request */
16204 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16205#endif
16206
16207 /*Notify UMAC*/
16208 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16209
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016211}/*WDI_ProcessStartRsp*/
16212
16213
16214/**
16215 @brief Process Stop Response function (called when a response
16216 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016217
16218 @param pWDICtx: pointer to the WLAN DAL context
16219 pEventData: pointer to the event information structure
16220
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 @see
16222 @return Result of the function call
16223*/
16224WDI_Status
16225WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016226(
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 WDI_ControlBlockType* pWDICtx,
16228 WDI_EventInfoType* pEventData
16229)
16230{
16231 WDI_Status wdiStatus;
16232 WDI_StopRspCb wdiStopRspCb = NULL;
16233
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16236
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 -------------------------------------------------------------------------*/
16241 if (( NULL == pEventData ) ||
16242 ( NULL == pEventData->pEventData) ||
16243 ( NULL == wdiStopRspCb ))
16244 {
16245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 }
16250
16251 /*-------------------------------------------------------------------------
16252 Extract response and send it to UMAC
16253 -------------------------------------------------------------------------*/
16254 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16255 {
16256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016257 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016258 pEventData->uEventDataSize);
16259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016261 }
16262
16263 /*-------------------------------------------------------------------------
16264 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016267 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16268 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 sizeof(halMacStopRspMsg.stopRspParams));
16270
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016272
16273 wpalMutexAcquire(&pWDICtx->wptMutex);
16274
16275 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 --------------------------------------------------------------------------*/
16278 if ( WDI_STATUS_SUCCESS != wdiStatus )
16279 {
16280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16281 "Failed to stop the device with status %s (%d)",
16282 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16283 halMacStopRspMsg.stopRspParams.status);
16284
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016286 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016287
Jeff Johnson295189b2012-06-20 16:38:30 -070016288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016291
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16293
16294 /*Transition now as WDI may get preempted imediately after it sends
16295 up the Stop Response and it will not get to process the state transition
16296 from Main Rsp function*/
16297 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16298 wpalMutexRelease(&pWDICtx->wptMutex);
16299
16300 /*! TO DO: - STOP the Data transport */
16301
16302 /*Notify UMAC*/
16303 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16304
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016306}/*WDI_ProcessStopRsp*/
16307
16308/**
16309 @brief Process Close Rsp function (called when a response
16310 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016311
16312 @param pWDICtx: pointer to the WLAN DAL context
16313 pEventData: pointer to the event information structure
16314
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 @see
16316 @return Result of the function call
16317*/
16318WDI_Status
16319WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016320(
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 WDI_ControlBlockType* pWDICtx,
16322 WDI_EventInfoType* pEventData
16323)
16324{
16325 /*There is no close response comming from HAL - function just kept for
16326 simmetry */
16327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016329}/*WDI_ProcessCloseRsp*/
16330
16331
16332/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016333 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016334============================================================================*/
16335
16336/**
16337 @brief Process Init Scan Rsp function (called when a response
16338 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016339
16340 @param pWDICtx: pointer to the WLAN DAL context
16341 pEventData: pointer to the event information structure
16342
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 @see
16344 @return Result of the function call
16345*/
16346WDI_Status
16347WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016348(
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 WDI_ControlBlockType* pWDICtx,
16350 WDI_EventInfoType* pEventData
16351)
16352{
16353 WDI_Status wdiStatus;
16354 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016355 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016356 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16358
16359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 -------------------------------------------------------------------------*/
16362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16363 ( NULL == pEventData->pEventData))
16364 {
16365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 }
16370
16371 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16372 if( NULL == wdiInitScanRspCb)
16373 {
16374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016375 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 }
16379
16380 /*-------------------------------------------------------------------------
16381 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16385 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 sizeof(halInitScanRspMsg.initScanRspParams));
16387
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016389
16390 if ( pWDICtx->bInBmps )
16391 {
16392 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016393 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16394 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016396 "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 -080016397 WDI_ASSERT(0);
16398 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016399 }
16400
16401 /*Notify UMAC*/
16402 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16403
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016405}/*WDI_ProcessInitScanRsp*/
16406
16407
16408/**
16409 @brief Process Start Scan Rsp function (called when a response
16410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016411
16412 @param pWDICtx: pointer to the WLAN DAL context
16413 pEventData: pointer to the event information structure
16414
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 @see
16416 @return Result of the function call
16417*/
16418WDI_Status
16419WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016420(
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 WDI_ControlBlockType* pWDICtx,
16422 WDI_EventInfoType* pEventData
16423)
16424{
16425 WDI_StartScanRspParamsType wdiStartScanParams;
16426 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016427
16428 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16430
16431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 -------------------------------------------------------------------------*/
16434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16435 ( NULL == pEventData->pEventData))
16436 {
16437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 }
16442
16443 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16444 if( NULL == wdiStartScanRspCb)
16445 {
16446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016447 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 }
16451
16452 /*-------------------------------------------------------------------------
16453 Extract response and send it to UMAC
16454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016457 sizeof(halStartScanRspMsg.startScanRspParams));
16458
16459 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16460 halStartScanRspMsg.startScanRspParams.status);
16461#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 halStartScanRspMsg.startScanRspParams.startTSF,
16466 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016467#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016468
16469 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16470 {
16471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16472 "Start scan failed with status %s (%d)",
16473 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16474 halStartScanRspMsg.startScanRspParams.status);
16475 /* send the status to UMAC, don't return from here*/
16476 }
16477
16478 /*Notify UMAC*/
16479 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16480
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482
16483}/*WDI_ProcessStartScanRsp*/
16484
16485
16486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016487 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016489
16490 @param pWDICtx: pointer to the WLAN DAL context
16491 pEventData: pointer to the event information structure
16492
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 @see
16494 @return Result of the function call
16495*/
16496WDI_Status
16497WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016498(
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 WDI_ControlBlockType* pWDICtx,
16500 WDI_EventInfoType* pEventData
16501)
16502{
16503 WDI_Status wdiStatus;
16504 tHalEndScanRspMsg halEndScanRspMsg;
16505 WDI_EndScanRspCb wdiEndScanRspCb;
16506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16507
16508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 -------------------------------------------------------------------------*/
16511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16512 ( NULL == pEventData->pEventData))
16513 {
16514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016515 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 }
16519
16520 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16521
16522 /*-------------------------------------------------------------------------
16523 Extract response and send it to UMAC
16524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16526 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 sizeof(halEndScanRspMsg.endScanRspParams));
16528
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016530
16531 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16532 {
16533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16534 "End Scan failed with status %s (%d )",
16535 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16536 halEndScanRspMsg.endScanRspParams.status);
16537 /* send the status to UMAC, don't return from here*/
16538 }
16539
16540 /*Notify UMAC*/
16541 wdiEndScanRspCb( 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_ProcessEndScanRsp*/
16545
16546
16547/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016550
16551 @param pWDICtx: pointer to the WLAN DAL context
16552 pEventData: pointer to the event information structure
16553
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 @see
16555 @return Result of the function call
16556*/
16557WDI_Status
16558WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016559(
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 WDI_ControlBlockType* pWDICtx,
16561 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016562)
Jeff Johnson295189b2012-06-20 16:38:30 -070016563{
16564 WDI_Status wdiStatus;
16565 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566
16567 tHalFinishScanRspMsg halFinishScanRspMsg;
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 ) || ( NULL == pEventData ) ||
16574 ( NULL == pEventData->pEventData))
16575 {
16576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 }
16581
16582 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16583
16584 /*-------------------------------------------------------------------------
16585 Extract response and send it to UMAC
16586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16588 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16590
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016592
16593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 halFinishScanRspMsg.finishScanRspParams.status);
16596
16597 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16598 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16599 {
16600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16601 "Finish Scan failed with status %s (%d)",
16602 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16603 halFinishScanRspMsg.finishScanRspParams.status);
16604 /* send the status to UMAC, don't return from here*/
16605 }
16606
16607 /*Notify UMAC*/
16608 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16609
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016611}/*WDI_ProcessFinishScanRsp*/
16612
16613/**
16614 @brief Process Join Response function (called when a response
16615 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016616
16617 @param pWDICtx: pointer to the WLAN DAL context
16618 pEventData: pointer to the event information structure
16619
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 @see
16621 @return Result of the function call
16622*/
16623WDI_Status
16624WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016625(
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 WDI_ControlBlockType* pWDICtx,
16627 WDI_EventInfoType* pEventData
16628)
16629{
16630 WDI_Status wdiStatus;
16631 WDI_JoinRspCb wdiJoinRspCb;
16632 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016633
16634 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16636
16637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 -------------------------------------------------------------------------*/
16640 if (( NULL == pWDICtx ) ||
16641 ( NULL == pWDICtx->pfncRspCB ) ||
16642 ( NULL == pEventData ) ||
16643 ( NULL == pEventData->pEventData))
16644 {
16645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 }
16650
16651 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16652
16653 /*-------------------------------------------------------------------------
16654 Extract response and send it to UMAC
16655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016656 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16657 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 sizeof(halJoinRspMsg.joinRspParams));
16659
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016661
16662 wpalMutexAcquire(&pWDICtx->wptMutex);
16663
16664 /*-----------------------------------------------------------------------
16665 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16670 {
16671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16673 "association no longer in progress %d - mysterious HAL response",
16674 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016675
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 }
16680
16681 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16682
16683 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 -----------------------------------------------------------------------*/
16686 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16687 {
16688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16689 "Join only allowed in Joining state - failure state is %d "
16690 "strange HAL response", pBSSSes->wdiAssocState);
16691
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16693
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016696 }
16697
16698
16699 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 -----------------------------------------------------------------------*/
16702 if ( WDI_STATUS_SUCCESS != wdiStatus )
16703 {
16704 /*Association was failed by HAL - remove session*/
16705 WDI_DeleteSession(pWDICtx, pBSSSes);
16706
16707 /*Association no longer in progress */
16708 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16709
16710 /*Association no longer in progress - prepare pending assoc for processing*/
16711 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016712
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 }
16714 else
16715 {
16716 /*Transition to state Joining - this may be redundant as we are supposed
16717 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 }
16720
16721 wpalMutexRelease(&pWDICtx->wptMutex);
16722
16723 /*Notify UMAC*/
16724 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16725
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016727}/*WDI_ProcessJoinRsp*/
16728
16729
16730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016733
16734 @param pWDICtx: pointer to the WLAN DAL context
16735 pEventData: pointer to the event information structure
16736
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 @see
16738 @return Result of the function call
16739*/
16740WDI_Status
16741WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016742(
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 WDI_ControlBlockType* pWDICtx,
16744 WDI_EventInfoType* pEventData
16745)
16746{
16747 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16748 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 WDI_BSSSessionType* pBSSSes = NULL;
16751
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16754 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016755
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16757
16758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 -------------------------------------------------------------------------*/
16761 if (( NULL == pEventData ) ||
16762 ( NULL == pEventData->pEventData))
16763 {
16764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 }
16769
16770 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16771
16772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16776 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 sizeof(halConfigBssRspMsg.configBssRspParams));
16778
16779 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16780 halConfigBssRspMsg.configBssRspParams.status);
16781 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16782 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16785 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016788
16789 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016791
16792 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016794
Jeff Johnson295189b2012-06-20 16:38:30 -070016795 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016796
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016798 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16800 #endif
16801 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16802 halConfigBssRspMsg.configBssRspParams.staMac,
16803 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016804
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 wpalMutexAcquire(&pWDICtx->wptMutex);
16806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16810 wdiConfigBSSParams.macBSSID,
16811 &pBSSSes);
16812
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 /*-----------------------------------------------------------------------
16814 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 -----------------------------------------------------------------------*/
16817 if ( NULL == pBSSSes )
16818 {
16819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16820 "Association sequence for this BSS does not yet exist "
16821 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016822
16823 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16824
Jeff Johnson295189b2012-06-20 16:38:30 -070016825 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016828
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 /*Save data for this BSS*/
16830 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16831 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016836 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16842 pBSSSes->bcastStaIdx =
16843 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
Jeff Johnson295189b2012-06-20 16:38:30 -070016845 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016846
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 /*-------------------------------------------------------------------------
16848 Add Peer STA
16849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16852 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016853
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016855 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 wdiAddSTAParam.ucHTCapable =
16858 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16859 wdiAddSTAParam.ucStaType =
16860 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16861
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16864 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016866
16867 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16868 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16869 WDI_MAC_ADDR_LEN);
16870
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016876 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016880 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016882 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016883 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016884
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16886 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016887
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16889 /*-------------------------------------------------------------------------
16890 Add Broadcast STA only in AP mode
16891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016893 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 {
16895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16896 "Add BCAST STA to table for index: %d",
16897 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016898
16899 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016901
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16903 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16904 }
16905 wpalMutexRelease(&pWDICtx->wptMutex);
16906 }
16907 else
16908 {
16909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16910 "Config BSS RSP failed with status : %s(%d)",
16911 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 halConfigBssRspMsg.configBssRspParams.status);
16914
Jeff Johnsone7245742012-09-05 17:12:55 -070016915
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 /*Association was failed by HAL - remove session*/
16917 WDI_DeleteSession(pWDICtx, pBSSSes);
16918
16919 /*Association no longer in progress */
16920 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16921
16922 /*Association no longer in progress - prepare pending assoc for processing*/
16923 WDI_DequeueAssocRequest(pWDICtx);
16924
16925 }
16926
16927 /*Notify UMAC*/
16928 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16929
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016931}/*WDI_ProcessConfigBSSRsp*/
16932
16933
16934/**
16935 @brief Process Del BSS Response function (called when a response
16936 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016937
16938 @param pWDICtx: pointer to the WLAN DAL context
16939 pEventData: pointer to the event information structure
16940
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 @see
16942 @return Result of the function call
16943*/
16944WDI_Status
16945WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016946(
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 WDI_ControlBlockType* pWDICtx,
16948 WDI_EventInfoType* pEventData
16949)
16950{
16951 WDI_DelBSSRspParamsType wdiDelBSSParams;
16952 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 WDI_BSSSessionType* pBSSSes = NULL;
16955
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16958
16959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 -------------------------------------------------------------------------*/
16962 if (( NULL == pEventData ) ||
16963 ( NULL == pEventData->pEventData))
16964 {
16965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 }
16970
16971 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16972
16973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16977 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 sizeof(halDelBssRspMsg.deleteBssRspParams));
16979
16980
16981 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016983
16984 wpalMutexAcquire(&pWDICtx->wptMutex);
16985
16986 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16990 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16991 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016992
16993 /*-----------------------------------------------------------------------
16994 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016995 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 -----------------------------------------------------------------------*/
16997 if ( NULL == pBSSSes )
16998 {
16999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17000 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017001 "association no longer in progress - mysterious HAL response");
17002
17003 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17004
17005 wpalMutexRelease(&pWDICtx->wptMutex);
17006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017008
17009 /*Extract BSSID for the response to UMAC*/
17010 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17011 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17012
17013 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17014
17015 /*-----------------------------------------------------------------------
17016 The current session will be deleted
17017 -----------------------------------------------------------------------*/
17018 WDI_DeleteSession(pWDICtx, pBSSSes);
17019
17020
17021 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017022 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17023 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017025 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017026 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017027
17028 /* Delete the STA's in this BSS */
17029 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17030
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 wpalMutexRelease(&pWDICtx->wptMutex);
17032
17033 /*Notify UMAC*/
17034 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17035
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017037}/*WDI_ProcessDelBSSRsp*/
17038
17039/**
17040 @brief Process Post Assoc Rsp function (called when a response
17041 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017042
17043 @param pWDICtx: pointer to the WLAN DAL context
17044 pEventData: pointer to the event information structure
17045
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 @see
17047 @return Result of the function call
17048*/
17049WDI_Status
17050WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017051(
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 WDI_ControlBlockType* pWDICtx,
17053 WDI_EventInfoType* pEventData
17054)
17055{
17056 WDI_PostAssocRspParamsType wdiPostAssocParams;
17057 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17062
17063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 -------------------------------------------------------------------------*/
17066 if (( NULL == pEventData ) ||
17067 ( NULL == pEventData->pEventData))
17068 {
17069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 }
17074
17075 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17076
17077 /*-------------------------------------------------------------------------
17078 Extract response and send it to UMAC
17079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17081 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 sizeof(halPostAssocRspMsg.postAssocRspParams));
17083
17084 /*Extract the Post Assoc STA Params */
17085
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17092
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 wdiPostAssocParams.wdiStatus =
17094 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017095
17096 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17097 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017098 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17099 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 WDI_MAC_ADDR_LEN);
17101
17102 /* Extract Post Assoc BSS Params */
17103
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17105 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17106 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017107
17108 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17109 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17112 .macSTA, WDI_MAC_ADDR_LEN);
17113
Jeff Johnsone7245742012-09-05 17:12:55 -070017114 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17116
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17119
17120 wdiPostAssocParams.bssParams.ucBSSIdx =
17121 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17122
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17125
17126 wpalMutexAcquire(&pWDICtx->wptMutex);
17127
17128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017129 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017130 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017134
17135 /*-----------------------------------------------------------------------
17136 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 -----------------------------------------------------------------------*/
17139 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17142 {
17143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17144 "Association sequence for this BSS does not yet exist or "
17145 "association no longer in progress - mysterious HAL response");
17146
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 }
17152
17153 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 -----------------------------------------------------------------------*/
17156 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17157 {
17158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17159 "Post Assoc not allowed before JOIN - failing request "
17160 "strange HAL response");
17161
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17163
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 }
17167
17168 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 -----------------------------------------------------------------------*/
17171 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17172 {
17173 /*Association was failed by HAL - remove session*/
17174 WDI_DeleteSession(pWDICtx, pBSSSes);
17175 }
17176 else
17177 {
17178 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017180
17181 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17190
Jeff Johnsone7245742012-09-05 17:12:55 -070017191 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17193 }
17194
17195 /*Association no longer in progress */
17196 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17197
17198 /*Association no longer in progress - prepare pending assoc for processing*/
17199 WDI_DequeueAssocRequest(pWDICtx);
17200
17201 wpalMutexRelease(&pWDICtx->wptMutex);
17202
17203 /*Notify UMAC*/
17204 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17205
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017207}/*WDI_ProcessPostAssocRsp*/
17208
17209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017210 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017211 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017212
17213 @param pWDICtx: pointer to the WLAN DAL context
17214 pEventData: pointer to the event information structure
17215
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 @see
17217 @return Result of the function call
17218*/
17219WDI_Status
17220WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017221(
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 WDI_ControlBlockType* pWDICtx,
17223 WDI_EventInfoType* pEventData
17224)
17225{
17226 WDI_DelSTARspParamsType wdiDelSTARsp;
17227 WDI_DelSTARspCb wdiDelSTARspCb;
17228 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17231
17232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 -------------------------------------------------------------------------*/
17235 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17236 ( NULL == pEventData->pEventData))
17237 {
17238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 }
17243
17244 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17245
17246 /*-------------------------------------------------------------------------
17247 Extract response and send it to UMAC
17248 -------------------------------------------------------------------------*/
17249 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 sizeof(halDelStaRspMsg.delStaRspParams));
17252
17253 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wdiDelSTARsp.wdiStatus =
17255 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017256
17257 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17258
17259 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17260 if(staType == WDI_STA_ENTRY_SELF)
17261 {
17262 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17263
17264 /* At this point add the self-STA */
17265
17266 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17267 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17268 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17269
17270#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17271#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17272
17273 //all DPU indices are the same for self STA
17274 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17275 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17276 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17277 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17278 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17279 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017280
17281 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017282 }
17283 else
17284 {
17285 //Delete the station in the table
17286 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17287 }
17288
17289 /*Notify UMAC*/
17290 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17291
Jeff Johnsone7245742012-09-05 17:12:55 -070017292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017293}/*WDI_ProcessDelSTARsp*/
17294
17295
17296/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017297 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017298==========================================================================*/
17299
17300/**
17301 @brief Process Set BSS Key Rsp function (called when a response
17302 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017303
17304 @param pWDICtx: pointer to the WLAN DAL context
17305 pEventData: pointer to the event information structure
17306
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 @see
17308 @return Result of the function call
17309*/
17310WDI_Status
17311WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017312(
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 WDI_ControlBlockType* pWDICtx,
17314 WDI_EventInfoType* pEventData
17315)
17316{
17317 WDI_Status wdiStatus;
17318 eHalStatus halStatus;
17319 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17321
17322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 -------------------------------------------------------------------------*/
17325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17326 ( NULL == pEventData->pEventData))
17327 {
17328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 }
17333
17334 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17335
17336 /*-------------------------------------------------------------------------
17337 Extract response and send it to UMAC
17338 -------------------------------------------------------------------------*/
17339 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017340 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017341
17342 if ( eHAL_STATUS_SUCCESS != halStatus )
17343 {
17344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17345 "Set BSS Key failed with status %s (%d)",
17346 WDI_getHALStatusMsgString(halStatus),
17347 halStatus);
17348 /* send the status to UMAC, don't return from here*/
17349 }
17350
17351 /*Notify UMAC*/
17352 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17353
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017355}/*WDI_ProcessSetBssKeyRsp*/
17356
17357/**
17358 @brief Process Remove BSS Key Rsp function (called when a response
17359 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017360
17361 @param pWDICtx: pointer to the WLAN DAL context
17362 pEventData: pointer to the event information structure
17363
Jeff Johnson295189b2012-06-20 16:38:30 -070017364 @see
17365 @return Result of the function call
17366*/
17367WDI_Status
17368WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017369(
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 WDI_ControlBlockType* pWDICtx,
17371 WDI_EventInfoType* pEventData
17372)
17373{
17374 WDI_Status wdiStatus;
17375 eHalStatus halStatus;
17376 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17378
17379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 -------------------------------------------------------------------------*/
17382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17383 ( NULL == pEventData->pEventData))
17384 {
17385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 }
17390
17391 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17392
17393 /*-------------------------------------------------------------------------
17394 Extract response and send it to UMAC
17395 -------------------------------------------------------------------------*/
17396 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017398
17399 if ( eHAL_STATUS_SUCCESS != halStatus )
17400 {
17401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17402 "Remove BSS Key failed with status %s (%d )",
17403 WDI_getHALStatusMsgString(halStatus),
17404 halStatus);
17405 /* send the status to UMAC, don't return from here*/
17406 }
17407
17408 /*Notify UMAC*/
17409 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17410
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017412}/*WDI_ProcessSetBssKeyRsp*/
17413
17414
17415/**
17416 @brief Process Set STA Key Rsp function (called when a response
17417 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017418
17419 @param pWDICtx: pointer to the WLAN DAL context
17420 pEventData: pointer to the event information structure
17421
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 @see
17423 @return Result of the function call
17424*/
17425WDI_Status
17426WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017427(
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ControlBlockType* pWDICtx,
17429 WDI_EventInfoType* pEventData
17430)
17431{
17432 WDI_Status wdiStatus;
17433 eHalStatus halStatus;
17434 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17436
17437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 -------------------------------------------------------------------------*/
17440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17441 ( NULL == pEventData->pEventData))
17442 {
17443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 }
17448
17449 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17450
17451 /*-------------------------------------------------------------------------
17452 Extract response and send it to UMAC
17453 -------------------------------------------------------------------------*/
17454 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017456
17457 if ( eHAL_STATUS_SUCCESS != halStatus )
17458 {
17459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17460 "Set STA Key failed with status %s (%d)",
17461 WDI_getHALStatusMsgString(halStatus),
17462 halStatus);
17463 /* send the status to UMAC, don't return from here*/
17464 }
17465
17466 /*Notify UMAC*/
17467 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17468
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017470}/*WDI_ProcessSetSTAKeyRsp*/
17471
17472/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017473 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017475
17476 @param pWDICtx: pointer to the WLAN DAL context
17477 pEventData: pointer to the event information structure
17478
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 @see
17480 @return Result of the function call
17481*/
17482WDI_Status
17483WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017484(
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 WDI_ControlBlockType* pWDICtx,
17486 WDI_EventInfoType* pEventData
17487)
17488{
17489 WDI_Status wdiStatus;
17490 eHalStatus halStatus;
17491 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17493
17494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 -------------------------------------------------------------------------*/
17497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17498 ( NULL == pEventData->pEventData))
17499 {
17500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 }
17505
17506 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17507
17508 /*-------------------------------------------------------------------------
17509 Extract response and send it to UMAC
17510 -------------------------------------------------------------------------*/
17511 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017513
17514 if ( eHAL_STATUS_SUCCESS != halStatus )
17515 {
17516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17517 "Remove STA Key failed with status %s (%d)",
17518 WDI_getHALStatusMsgString(halStatus),
17519 halStatus);
17520 /* send the status to UMAC, don't return from here*/
17521 }
17522
17523 /*Notify UMAC*/
17524 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17525
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017527}/*WDI_ProcessRemoveStaKeyRsp*/
17528
17529/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017530 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017531 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017532
17533 @param pWDICtx: pointer to the WLAN DAL context
17534 pEventData: pointer to the event information structure
17535
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 @see
17537 @return Result of the function call
17538*/
17539WDI_Status
17540WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017541(
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 WDI_ControlBlockType* pWDICtx,
17543 WDI_EventInfoType* pEventData
17544)
17545{
17546 WDI_Status wdiStatus;
17547 eHalStatus halStatus;
17548 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17550
17551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017553 -------------------------------------------------------------------------*/
17554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17555 ( NULL == pEventData->pEventData))
17556 {
17557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 }
17562
17563 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17564
17565 /*-------------------------------------------------------------------------
17566 Extract response and send it to UMAC
17567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 wpalMemoryCopy( &halStatus,
17569 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 sizeof(halStatus));
17571
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017573
17574 if ( eHAL_STATUS_SUCCESS != halStatus )
17575 {
17576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17577 "Set STA Key failed with status %s (%d)",
17578 WDI_getHALStatusMsgString(halStatus),
17579 halStatus);
17580 /* send the status to UMAC, don't return from here*/
17581 }
17582
17583 /*Notify UMAC*/
17584 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17585
Jeff Johnsone7245742012-09-05 17:12:55 -070017586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017587}/*WDI_ProcessSetSTABcastKeyRsp*/
17588
17589/**
17590 @brief Process Remove STA Bcast Key Rsp function (called when a
17591 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017592
17593 @param pWDICtx: pointer to the WLAN DAL context
17594 pEventData: pointer to the event information structure
17595
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 @see
17597 @return Result of the function call
17598*/
17599WDI_Status
17600WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017601(
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 WDI_ControlBlockType* pWDICtx,
17603 WDI_EventInfoType* pEventData
17604)
17605{
17606 WDI_Status wdiStatus;
17607 eHalStatus halStatus;
17608 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17610
17611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 -------------------------------------------------------------------------*/
17614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17615 ( NULL == pEventData->pEventData))
17616 {
17617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 }
17622
17623 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17624
17625 /*-------------------------------------------------------------------------
17626 Extract response and send it to UMAC
17627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 wpalMemoryCopy( &halStatus,
17629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 sizeof(halStatus));
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017633
17634 if ( eHAL_STATUS_SUCCESS != halStatus )
17635 {
17636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17637 "Remove STA Key failed with status %s (%d)",
17638 WDI_getHALStatusMsgString(halStatus),
17639 halStatus);
17640 /* send the status to UMAC, don't return from here*/
17641 }
17642
17643 /*Notify UMAC*/
17644 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17645
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017647}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17648
17649
17650/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017651 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017652==========================================================================*/
17653
17654/**
17655 @brief Process Add TSpec Rsp function (called when a response
17656 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017657
17658 @param pWDICtx: pointer to the WLAN DAL context
17659 pEventData: pointer to the event information structure
17660
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 @see
17662 @return Result of the function call
17663*/
17664WDI_Status
17665WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017666(
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 WDI_ControlBlockType* pWDICtx,
17668 WDI_EventInfoType* pEventData
17669)
17670{
17671 WDI_Status wdiStatus;
17672 eHalStatus halStatus;
17673 WDI_AddTsRspCb wdiAddTsRspCb;
17674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17675
17676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 -------------------------------------------------------------------------*/
17679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17680 ( NULL == pEventData->pEventData))
17681 {
17682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017683 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017684 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 }
17687
17688 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17689
17690 /*-------------------------------------------------------------------------
17691 Extract response and send it to UMAC
17692 -------------------------------------------------------------------------*/
17693 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017695
17696 /*Notify UMAC*/
17697 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17698
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017700}/*WDI_ProcessAddTSpecRsp*/
17701
17702
Sunil Duttbd736ed2014-05-26 21:19:41 +053017703
17704#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17705
17706WDI_Status
17707WDI_ProcessLLStatsSetRsp
17708(
17709 WDI_ControlBlockType* pWDICtx,
17710 WDI_EventInfoType* pEventData
17711)
17712{
17713 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17714
17715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17716 "%s: Enter ", __func__);
17717 /*-------------------------------------------------------------------------
17718 Sanity check
17719 -------------------------------------------------------------------------*/
17720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17721 ( NULL == pEventData->pEventData))
17722 {
17723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17724 "%s: Invalid parameters", __func__);
17725 WDI_ASSERT(0);
17726 return WDI_STATUS_E_FAILURE;
17727 }
17728
17729 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17730
17731 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17732
17733 return WDI_STATUS_SUCCESS;
17734}
17735
17736WDI_Status
17737WDI_ProcessLLStatsGetRsp
17738(
17739 WDI_ControlBlockType* pWDICtx,
17740 WDI_EventInfoType* pEventData
17741)
17742{
17743 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17744
17745 /*-------------------------------------------------------------------------
17746 Sanity check
17747 -------------------------------------------------------------------------*/
17748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17749 ( NULL == pEventData->pEventData))
17750 {
17751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17752 "%s: Invalid parameters", __func__);
17753 WDI_ASSERT(0);
17754 return WDI_STATUS_E_FAILURE;
17755 }
17756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17757 "%s: Enter ", __func__);
17758
17759 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17760
17761 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17762
17763 return WDI_STATUS_SUCCESS;
17764}
17765
17766WDI_Status
17767WDI_ProcessLLStatsClearRsp
17768(
17769 WDI_ControlBlockType* pWDICtx,
17770 WDI_EventInfoType* pEventData
17771)
17772{
17773 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17774
17775 /*-------------------------------------------------------------------------
17776 Sanity check
17777 -------------------------------------------------------------------------*/
17778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17779 ( NULL == pEventData->pEventData))
17780 {
17781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17782 "%s: Invalid parameters", __func__);
17783 WDI_ASSERT(0);
17784 return WDI_STATUS_E_FAILURE;
17785 }
17786
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17788 "%s: CLEAR RESPONSE CALL BACK", __func__);
17789 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17790
17791 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17792
17793 return WDI_STATUS_SUCCESS;
17794}
17795#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17796
Jeff Johnson295189b2012-06-20 16:38:30 -070017797/**
17798 @brief Process Del TSpec Rsp function (called when a response
17799 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017800
17801 @param pWDICtx: pointer to the WLAN DAL context
17802 pEventData: pointer to the event information structure
17803
Jeff Johnson295189b2012-06-20 16:38:30 -070017804 @see
17805 @return Result of the function call
17806*/
17807WDI_Status
17808WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017809(
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 WDI_ControlBlockType* pWDICtx,
17811 WDI_EventInfoType* pEventData
17812)
17813{
17814 WDI_Status wdiStatus;
17815 eHalStatus halStatus;
17816 WDI_DelTsRspCb wdiDelTsRspCb;
17817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17818
17819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 -------------------------------------------------------------------------*/
17822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17823 ( NULL == pEventData->pEventData))
17824 {
17825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 }
17830
17831 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17832
17833 /*-------------------------------------------------------------------------
17834 Extract response and send it to UMAC
17835 -------------------------------------------------------------------------*/
17836 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017837 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017838
17839 /*Notify UMAC*/
17840 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17841
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017843}/*WDI_ProcessDelTSpecRsp*/
17844
17845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017846 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017848
17849 @param pWDICtx: pointer to the WLAN DAL context
17850 pEventData: pointer to the event information structure
17851
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 @see
17853 @return Result of the function call
17854*/
17855WDI_Status
17856WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017857(
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 WDI_ControlBlockType* pWDICtx,
17859 WDI_EventInfoType* pEventData
17860)
17861{
17862 WDI_Status wdiStatus;
17863 eHalStatus halStatus;
17864 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17866
17867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 -------------------------------------------------------------------------*/
17870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17871 ( NULL == pEventData->pEventData))
17872 {
17873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 }
17878
17879 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17880
17881 /*-------------------------------------------------------------------------
17882 Extract response and send it to UMAC
17883 -------------------------------------------------------------------------*/
17884 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017886
17887 /*Notify UMAC*/
17888 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17889
Jeff Johnsone7245742012-09-05 17:12:55 -070017890 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017891}/*WDI_ProcessUpdateEDCAParamsRsp*/
17892
17893
17894/**
17895 @brief Process Add BA Rsp function (called when a response
17896 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017897
17898 @param pWDICtx: pointer to the WLAN DAL context
17899 pEventData: pointer to the event information structure
17900
Jeff Johnson295189b2012-06-20 16:38:30 -070017901 @see
17902 @return Result of the function call
17903*/
17904WDI_Status
17905WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017906(
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 WDI_ControlBlockType* pWDICtx,
17908 WDI_EventInfoType* pEventData
17909)
17910{
17911 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17912
17913 tAddBASessionRspParams halBASessionRsp;
17914 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17915
Jeff Johnsone7245742012-09-05 17:12:55 -070017916
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17918
17919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 -------------------------------------------------------------------------*/
17922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17923 ( NULL == pEventData->pEventData))
17924 {
17925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 }
17930
17931 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17932
17933 /*-------------------------------------------------------------------------
17934 Extract response and send it to UMAC
17935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 wpalMemoryCopy( &halBASessionRsp,
17937 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 sizeof(halBASessionRsp));
17939
17940 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17941
Jeff Johnson43971f52012-07-17 12:26:56 -070017942 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 {
17944 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17945 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17946 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17947 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17948 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17949 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17950 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17951 }
17952
17953 /*Notify UMAC*/
17954 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17955
Jeff Johnsone7245742012-09-05 17:12:55 -070017956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017957}/*WDI_ProcessAddSessionBARsp*/
17958
17959
17960/**
17961 @brief Process Del BA Rsp function (called when a response
17962 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017963
17964 @param pWDICtx: pointer to the WLAN DAL context
17965 pEventData: pointer to the event information structure
17966
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 @see
17968 @return Result of the function call
17969*/
17970WDI_Status
17971WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017972(
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 WDI_ControlBlockType* pWDICtx,
17974 WDI_EventInfoType* pEventData
17975)
17976{
17977 WDI_Status wdiStatus;
17978 eHalStatus halStatus;
17979 WDI_DelBARspCb wdiDelBARspCb;
17980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17981
17982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017983 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 -------------------------------------------------------------------------*/
17985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17986 ( NULL == pEventData->pEventData))
17987 {
17988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 }
17993
17994 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17995
17996 /*-------------------------------------------------------------------------
17997 Extract response and send it to UMAC
17998 -------------------------------------------------------------------------*/
17999 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018000 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018001
18002 if ( eHAL_STATUS_SUCCESS == halStatus )
18003 {
18004 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18005 }
18006
18007 /*Notify UMAC*/
18008 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18009
Jeff Johnsone7245742012-09-05 17:12:55 -070018010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018011}/*WDI_ProcessDelBARsp*/
18012
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018013#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018014/**
18015 @brief Process TSM Stats Rsp function (called when a response
18016 is being received over the bus from HAL)
18017
18018 @param pWDICtx: pointer to the WLAN DAL context
18019 pEventData: pointer to the event information structure
18020
18021 @see
18022 @return Result of the function call
18023*/
18024WDI_Status
18025WDI_ProcessTsmStatsRsp
18026(
18027 WDI_ControlBlockType* pWDICtx,
18028 WDI_EventInfoType* pEventData
18029)
18030{
18031 WDI_TsmRspCb wdiTsmStatsRspCb;
18032 tTsmStatsRspMsg halTsmStatsRspMsg;
18033 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18035
18036 /*-------------------------------------------------------------------------
18037 Sanity check
18038 -------------------------------------------------------------------------*/
18039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18040 ( NULL == pEventData->pEventData))
18041 {
18042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ASSERT(0);
18045 return WDI_STATUS_E_FAILURE;
18046 }
18047
18048 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18049
18050 /*-------------------------------------------------------------------------
18051 Unpack HAL Response Message - the header was already extracted by the
18052 main Response Handling procedure
18053 -------------------------------------------------------------------------*/
18054 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18055 pEventData->pEventData,
18056 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18057
18058 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18059 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18060 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18061 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18062 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18063 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18064 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18065 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18066 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18067 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18068 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18069 halTsmStatsRspMsg.tsmStatsRspParams.status);
18070
18071 /*Notify UMAC*/
18072 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18073
18074 return WDI_STATUS_SUCCESS;
18075}/*WDI_ProcessTsmStatsRsp*/
18076
18077#endif
18078
18079
18080
18081/**
18082 @brief Process Flush AC Rsp function (called when a response
18083 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018084
18085 @param pWDICtx: pointer to the WLAN DAL context
18086 pEventData: pointer to the event information structure
18087
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 @see
18089 @return Result of the function call
18090*/
18091WDI_Status
18092WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018093(
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 WDI_ControlBlockType* pWDICtx,
18095 WDI_EventInfoType* pEventData
18096)
18097{
18098 WDI_Status wdiStatus;
18099 eHalStatus halStatus;
18100 WDI_FlushAcRspCb wdiFlushAcRspCb;
18101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18102
18103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 -------------------------------------------------------------------------*/
18106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18107 ( NULL == pEventData->pEventData))
18108 {
18109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 }
18114
18115 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18116
18117 /*-------------------------------------------------------------------------
18118 Extract response and send it to UMAC
18119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018120 wpalMemoryCopy( &halStatus,
18121 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 sizeof(halStatus));
18123
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018125
18126 /*Notify UMAC*/
18127 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18128
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018130}/*WDI_ProcessFlushAcRsp*/
18131
18132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018135
18136 @param pWDICtx: pointer to the WLAN DAL context
18137 pEventData: pointer to the event information structure
18138
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 @see
18140 @return Result of the function call
18141*/
18142WDI_Status
18143WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018144(
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 WDI_ControlBlockType* pWDICtx,
18146 WDI_EventInfoType* pEventData
18147)
18148{
18149 WDI_Status wdiStatus;
18150 eHalStatus halStatus;
18151 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18153
18154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 }
18165
18166 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18167
18168 /*-------------------------------------------------------------------------
18169 Extract response and send it to UMAC
18170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 wpalMemoryCopy( &halStatus,
18172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 sizeof(halStatus));
18174
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018176
18177 /*Notify UMAC*/
18178 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18179
Jeff Johnsone7245742012-09-05 17:12:55 -070018180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018181}/*WDI_ProcessBtAmpEventRsp*/
18182
18183
18184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018186 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018187
18188 @param pWDICtx: pointer to the WLAN DAL context
18189 pEventData: pointer to the event information structure
18190
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 @see
18192 @return Result of the function call
18193*/
18194WDI_Status
18195WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018196(
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 WDI_ControlBlockType* pWDICtx,
18198 WDI_EventInfoType* pEventData
18199)
18200{
18201 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18202 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18203 tAddStaSelfRspMsg halAddStaSelfRsp;
18204 WDI_AddStaParams wdiAddSTAParam = {0};
18205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18206
18207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 -------------------------------------------------------------------------*/
18210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18211 ( NULL == pEventData->pEventData))
18212 {
18213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 }
18218
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18221
18222 /*-------------------------------------------------------------------------
18223 Extract response and send it to UMAC
18224 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018225 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18226 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18228
18229
Jeff Johnsone7245742012-09-05 17:12:55 -070018230 wdiAddSTASelfParams.wdiStatus =
18231 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018232
Jeff Johnsone7245742012-09-05 17:12:55 -070018233 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018237 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18239
18240 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18241 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18242 WDI_MAC_ADDR_LEN);
18243
18244
18245#ifdef HAL_SELF_STA_PER_BSS
18246
18247 /* At this point add the self-STA */
18248
18249 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18250 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18251 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18252
18253 //all DPU indices are the same for self STA
18254
18255 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18258 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18259 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18260 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18261 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18262
18263 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18264 WDI_MAC_ADDR_LEN);
18265
18266 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18267 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18268
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18271 {
18272 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18273 }
18274#endif
18275
18276 /*Notify UMAC*/
18277 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18278
Jeff Johnsone7245742012-09-05 17:12:55 -070018279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280}/*WDI_ProcessAddSTASelfRsp*/
18281
18282
18283
18284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018287
18288 @param pWDICtx: pointer to the WLAN DAL context
18289 pEventData: pointer to the event information structure
18290
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 @see
18292 @return Result of the function call
18293*/
18294WDI_Status
18295WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018296(
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 WDI_ControlBlockType* pWDICtx,
18298 WDI_EventInfoType* pEventData
18299)
18300{
18301 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18302 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18303 tDelStaSelfRspParams delStaSelfRspParams;
18304 wpt_uint8 ucStaIdx;
18305
18306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18307
18308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 -------------------------------------------------------------------------*/
18311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18312 ( NULL == pEventData->pEventData))
18313 {
18314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 }
18319
18320 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18321
18322 /*-------------------------------------------------------------------------
18323 Extract response and send it to UMAC
18324 -------------------------------------------------------------------------*/
18325
Jeff Johnsone7245742012-09-05 17:12:55 -070018326 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 (wpt_uint8*)pEventData->pEventData,
18328 sizeof(tDelStaSelfRspParams));
18329
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 wdiDelStaSelfRspParams.wdiStatus =
18331 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018332
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18335 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18336 {
18337 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 delStaSelfRspParams.selfMacAddr,
18340 &ucStaIdx);
18341 if(WDI_STATUS_E_FAILURE == wdiStatus)
18342 {
18343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018344 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347 }
18348 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18349 }
18350
18351 /*Notify UMAC*/
18352 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18353
18354 return WDI_STATUS_SUCCESS;
18355}
18356
Jeff Johnsone7245742012-09-05 17:12:55 -070018357#ifdef FEATURE_OEM_DATA_SUPPORT
18358/**
18359 @brief Start Oem Data Rsp function (called when a
18360 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018361
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 @param pWDICtx: pointer to the WLAN DAL context
18363 pEventData: pointer to the event information structure
18364
18365 @see
18366 @return Result of the function call
18367*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018368
18369WDI_Status
18370WDI_ProcessStartOemDataRsp
18371(
18372 WDI_ControlBlockType* pWDICtx,
18373 WDI_EventInfoType* pEventData
18374)
18375{
18376 WDI_oemDataRspCb wdiOemDataRspCb;
18377 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18378 tStartOemDataRspParams* halStartOemDataRspParams;
18379
18380 /*-------------------------------------------------------------------------
18381 Sanity check
18382 -------------------------------------------------------------------------*/
18383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18384 ( NULL == pEventData->pEventData))
18385 {
18386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018387 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 WDI_ASSERT(0);
18389 return WDI_STATUS_E_FAILURE;
18390 }
18391
18392 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18393
18394 /*-------------------------------------------------------------------------
18395 Extract response and send it to UMAC
18396 -------------------------------------------------------------------------*/
18397 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18398
18399
18400 //It is the responsibility of the application code to check for failure
18401 //conditions!
18402
18403 //Allocate memory for WDI OEM DATA RSP structure
18404 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18405
18406 if(NULL == wdiOemDataRspParams)
18407 {
18408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018409 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 pWDICtx, pEventData, pEventData->pEventData);
18411 WDI_ASSERT(0);
18412 return WDI_STATUS_E_FAILURE;
18413 }
18414
18415 /* Populate WDI structure members */
18416 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18417
18418 /*Notify UMAC*/
18419 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18420
18421 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18422 wpalMemoryFree(wdiOemDataRspParams);
18423
18424 return WDI_STATUS_SUCCESS;
18425}/*WDI_PrcoessStartOemDataRsp*/
18426#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018427
18428/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018429 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018430===========================================================================*/
18431
18432/**
18433 @brief Process Channel Switch Rsp function (called when a response
18434 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018435
18436 @param pWDICtx: pointer to the WLAN DAL context
18437 pEventData: pointer to the event information structure
18438
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 @see
18440 @return Result of the function call
18441*/
18442WDI_Status
18443WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018444(
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 WDI_ControlBlockType* pWDICtx,
18446 WDI_EventInfoType* pEventData
18447)
18448{
18449 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18450 WDI_SwitchChRspCb wdiChSwitchRspCb;
18451 tSwitchChannelRspParams halSwitchChannelRsp;
18452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18453
18454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 -------------------------------------------------------------------------*/
18457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18458 ( NULL == pEventData->pEventData))
18459 {
18460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 }
18465
18466 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18467
18468 /*-------------------------------------------------------------------------
18469 Extract response and send it to UMAC
18470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 (wpt_uint8*)pEventData->pEventData,
18473 sizeof(halSwitchChannelRsp));
18474
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 wdiSwitchChRsp.wdiStatus =
18476 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18478
18479#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018480 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018481#endif
18482
18483 /*Notify UMAC*/
18484 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18485
Jeff Johnsone7245742012-09-05 17:12:55 -070018486 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018487}/*WDI_ProcessChannelSwitchRsp*/
18488
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018489/**
18490 @brief Process Channel Switch Rsp function (called when a response
18491 is being received over the bus from HAL against
18492 WDI_ProcessChannelSwitchReq_V1)
18493
18494 @param pWDICtx: pointer to the WLAN DAL context
18495 pEventData: pointer to the event information structure
18496
18497 @see
18498 @return Result of the function call
18499*/
18500
18501WDI_Status
18502WDI_ProcessChannelSwitchRsp_V1
18503(
18504 WDI_ControlBlockType* pWDICtx,
18505 WDI_EventInfoType* pEventData
18506)
18507{
18508 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18509 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18510 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18512
18513 /*-------------------------------------------------------------------------
18514 Sanity check
18515 -------------------------------------------------------------------------*/
18516 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18517 ( NULL == pEventData->pEventData))
18518 {
18519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18520 "%s: Invalid parameters", __func__);
18521 WDI_ASSERT(0);
18522 return WDI_STATUS_E_FAILURE;
18523 }
18524
18525 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18526
18527 /*-------------------------------------------------------------------------
18528 Extract response and send it to UMAC
18529 -------------------------------------------------------------------------*/
18530 wpalMemoryCopy( &halSwitchChannelRsp,
18531 (wpt_uint8*)pEventData->pEventData,
18532 sizeof(halSwitchChannelRsp));
18533
18534 wdiSwitchChRsp.wdiStatus =
18535 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18536 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18537
18538#ifdef WLAN_FEATURE_VOWIFI
18539 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18540#endif
18541
18542 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18543 if (( NULL == wdiChSwitchRspCb ) )
18544 {
18545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18546 "%s: ### Call back function is null", __func__);
18547 WDI_ASSERT(0);
18548 return WDI_STATUS_E_FAILURE;
18549 }
18550 /*Notify UMAC*/
18551 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18552
18553 return WDI_STATUS_SUCCESS;
18554}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018555
18556/**
18557 @brief Process Config STA Rsp function (called when a response
18558 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
18560 @param pWDICtx: pointer to the WLAN DAL context
18561 pEventData: pointer to the event information structure
18562
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 @see
18564 @return Result of the function call
18565*/
18566WDI_Status
18567WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018568(
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ControlBlockType* pWDICtx,
18570 WDI_EventInfoType* pEventData
18571)
18572{
18573 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18574 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18575 WDI_AddStaParams wdiAddSTAParam;
18576
18577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018578 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018579
Jeff Johnsone7245742012-09-05 17:12:55 -070018580 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18582
18583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 -------------------------------------------------------------------------*/
18586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18587 ( NULL == pEventData->pEventData))
18588 {
18589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 }
18594
18595 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18596
18597 /*-------------------------------------------------------------------------
18598 Extract response and send it to UMAC
18599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18601 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 sizeof(halConfigStaRsp.configStaRspParams));
18603
18604
18605 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18606 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18607 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18608 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18609 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18610
18611 /* MAC Address of STA - take from cache as it does not come back in the
18612 response*/
18613 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018616
18617 wdiCfgSTAParams.wdiStatus =
18618 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
18620 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18621 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18622 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18623
18624 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18625 {
18626 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18627 {
18628 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018629 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18631 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018632
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018634 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 wdiAddSTAParam.ucHTCapable =
18637 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18638 wdiAddSTAParam.ucStaType =
18639 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018640 wdiAddSTAParam.ucRmfEnabled =
18641 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018642
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18645 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018647
18648 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18649 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18650 WDI_MAC_ADDR_LEN);
18651
18652 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18653 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18654 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018655
18656 if ( NULL == pBSSSes )
18657 {
18658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18659 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018660
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 }
18664
18665 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018666 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018675
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18677 }
18678 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18679 {
18680 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18681
Jeff Johnsone7245742012-09-05 17:12:55 -070018682 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018683 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018686 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018690 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 halConfigStaRsp.configStaRspParams.ucUcastSig;
18696 }
18697 }
18698
18699 /*Notify UMAC*/
18700 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18701
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703}/*WDI_ProcessConfigStaRsp*/
18704
18705
18706/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018708 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018709
18710 @param pWDICtx: pointer to the WLAN DAL context
18711 pEventData: pointer to the event information structure
18712
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 @see
18714 @return Result of the function call
18715*/
18716WDI_Status
18717WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018718(
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 WDI_ControlBlockType* pWDICtx,
18720 WDI_EventInfoType* pEventData
18721)
18722{
18723 WDI_Status wdiStatus;
18724 eHalStatus halStatus;
18725 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18726
18727 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018728 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18730
18731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 -------------------------------------------------------------------------*/
18734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18735 ( NULL == pEventData->pEventData))
18736 {
18737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 }
18742
18743 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18744
18745 wpalMutexAcquire(&pWDICtx->wptMutex);
18746
18747 /*If the link is being transitioned to idle - the BSS is to be deleted
18748 - this type of ending a session is possible when UMAC has failed an
18749 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18752 {
18753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18757 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18758 &pBSSSes);
18759
Jeff Johnson295189b2012-06-20 16:38:30 -070018760 /*-----------------------------------------------------------------------
18761 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 -----------------------------------------------------------------------*/
18764 if ( NULL == pBSSSes )
18765 {
18766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18767 "Set link response received outside association session");
18768 }
18769 else
18770 {
18771 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18772 will be del BSS coming after this to stop the beaconing & cleaning up the
18773 sessions*/
18774 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18775 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18776 {
18777 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018778 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018779 -----------------------------------------------------------------------*/
18780 WDI_DeleteSession(pWDICtx, pBSSSes);
18781
18782 /*-----------------------------------------------------------------------
18783 Check to see if this association is in progress - if so disable the
18784 flag as this has ended
18785 -----------------------------------------------------------------------*/
18786 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 /*Association no longer in progress */
18789 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18790 /*Association no longer in progress - prepare pending assoc for processing*/
18791 WDI_DequeueAssocRequest(pWDICtx);
18792 }
18793 }
18794 }
18795 }
18796 /* If the link state has been set to POST ASSOC, reset the "association in
18797 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018798 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18800 {
18801 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18802 WDI_DequeueAssocRequest(pWDICtx);
18803 }
18804
18805 wpalMutexRelease(&pWDICtx->wptMutex);
18806
18807 /*-------------------------------------------------------------------------
18808 Extract response and send it to UMAC
18809 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018810 wpalMemoryCopy( &halStatus,
18811 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018812 sizeof(halStatus));
18813
Jeff Johnsone7245742012-09-05 17:12:55 -070018814 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018815
18816 /*Notify UMAC*/
18817 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18818
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018820}/*WDI_ProcessSetLinkStateRsp*/
18821
18822/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018823 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018825
18826 @param pWDICtx: pointer to the WLAN DAL context
18827 pEventData: pointer to the event information structure
18828
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 @see
18830 @return Result of the function call
18831*/
18832WDI_Status
18833WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018834(
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 WDI_ControlBlockType* pWDICtx,
18836 WDI_EventInfoType* pEventData
18837)
18838{
18839 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18840 WDI_GetStatsRspCb wdiGetStatsRspCb;
18841 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018842
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18844
18845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 -------------------------------------------------------------------------*/
18848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18849 ( NULL == pEventData->pEventData))
18850 {
18851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 }
18856
18857 /*-------------------------------------------------------------------------
18858 Extract response and send it to UMAC
18859 -------------------------------------------------------------------------*/
18860 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18861
18862 /*allocate the stats response buffer */
18863 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18864 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18865 + sizeof(WDI_GetStatsRspParamsType));
18866
18867 if(NULL == wdiGetStatsRsp)
18868 {
18869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018870 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 pWDICtx, pEventData, pEventData->pEventData);
18872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018874 }
18875
18876 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18877
18878 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18879 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18880 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18881 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18882 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18883 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18884
18885 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18886 wpalMemoryCopy(wdiGetStatsRsp + 1,
18887 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18888 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18889
18890 /*Notify UMAC*/
18891 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18892
18893 wpalMemoryFree(wdiGetStatsRsp);
18894
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018896}/*WDI_ProcessGetStatsRsp*/
18897
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018898#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018899/**
18900 @brief Process Get Roam Rssi Rsp function (called when a response is
18901 being received over the bus from HAL)
18902
18903 @param pWDICtx: pointer to the WLAN DAL context
18904 pEventData: pointer to the event information structure
18905
18906 @see
18907 @return Result of the function call
18908*/
18909WDI_Status
18910WDI_ProcessGetRoamRssiRsp
18911(
18912 WDI_ControlBlockType* pWDICtx,
18913 WDI_EventInfoType* pEventData
18914)
18915{
18916 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18917 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18918 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18920
18921 /*-------------------------------------------------------------------------
18922 Sanity check
18923 -------------------------------------------------------------------------*/
18924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18925 ( NULL == pEventData->pEventData))
18926 {
18927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18928 "%s: Invalid parameters", __func__);
18929 WDI_ASSERT(0);
18930 return WDI_STATUS_E_FAILURE;
18931 }
18932
18933 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18934 if(NULL == wdiGetRoamRssiRspCb)
18935 {
18936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18937 "%s: call back function is NULL", __func__);
18938 WDI_ASSERT(0);
18939 return WDI_STATUS_E_FAILURE;
18940 }
18941
18942 /*-------------------------------------------------------------------------
18943 Extract response and send it to UMAC
18944 -------------------------------------------------------------------------*/
18945 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18946 pEventData->pEventData,
18947 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18948
18949 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18950 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18951 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18952
18953 /*Notify UMAC*/
18954 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18955
18956 return WDI_STATUS_SUCCESS;
18957}/*WDI_ProcessGetRoamRssiRsp*/
18958#endif
18959
Jeff Johnson295189b2012-06-20 16:38:30 -070018960
18961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018964
18965 @param pWDICtx: pointer to the WLAN DAL context
18966 pEventData: pointer to the event information structure
18967
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 @see
18969 @return Result of the function call
18970*/
18971WDI_Status
18972WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018973(
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 WDI_ControlBlockType* pWDICtx,
18975 WDI_EventInfoType* pEventData
18976)
18977{
18978 WDI_Status wdiStatus;
18979 eHalStatus halStatus;
18980 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18982
18983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 -------------------------------------------------------------------------*/
18986 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18987 ( NULL == pEventData->pEventData))
18988 {
18989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018990 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 }
18994
18995 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18996
18997 /*-------------------------------------------------------------------------
18998 Extract response and send it to UMAC
18999 -------------------------------------------------------------------------*/
19000 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019001 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019002
19003 /*Notify UMAC*/
19004 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19005
Jeff Johnsone7245742012-09-05 17:12:55 -070019006 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019007}/*WDI_ProcessUpdateCfgRsp*/
19008
19009
19010
19011/**
19012 @brief Process Add BA Rsp function (called when a response
19013 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019014
19015 @param pWDICtx: pointer to the WLAN DAL context
19016 pEventData: pointer to the event information structure
19017
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 @see
19019 @return Result of the function call
19020*/
19021WDI_Status
19022WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019023(
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 WDI_ControlBlockType* pWDICtx,
19025 WDI_EventInfoType* pEventData
19026)
19027{
19028 WDI_AddBARspCb wdiAddBARspCb;
19029
19030 tAddBARspParams halAddBARsp;
19031 WDI_AddBARspinfoType wdiAddBARsp;
19032
19033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19034
19035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019037 -------------------------------------------------------------------------*/
19038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19039 ( NULL == pEventData->pEventData))
19040 {
19041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 }
19046
19047 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19048
19049 /*-------------------------------------------------------------------------
19050 Extract response and send it to UMAC
19051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 wpalMemoryCopy( &halAddBARsp,
19053 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 sizeof(halAddBARsp));
19055
19056 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19057
Jeff Johnson43971f52012-07-17 12:26:56 -070019058 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 {
19060 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19061 }
19062
19063 /*Notify UMAC*/
19064 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19065
Jeff Johnsone7245742012-09-05 17:12:55 -070019066 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019067}/*WDI_ProcessAddSessionBARsp*/
19068
19069/**
19070 @brief Process Add BA Rsp function (called when a response
19071 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019072
19073 @param pWDICtx: pointer to the WLAN DAL context
19074 pEventData: pointer to the event information structure
19075
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 @see
19077 @return Result of the function call
19078*/
19079WDI_Status
19080WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019081(
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 WDI_ControlBlockType* pWDICtx,
19083 WDI_EventInfoType* pEventData
19084)
19085{
19086 WDI_TriggerBARspCb wdiTriggerBARspCb;
19087
19088 tTriggerBARspParams* halTriggerBARsp;
19089 tTriggerBaRspCandidate* halBaCandidate;
19090 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19091 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19092 wpt_uint16 index;
19093 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019094 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19096
19097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 -------------------------------------------------------------------------*/
19100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19101 ( NULL == pEventData->pEventData))
19102 {
19103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 }
19108
19109 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19110
19111 /*-------------------------------------------------------------------------
19112 Extract response and send it to UMAC
19113 -------------------------------------------------------------------------*/
19114 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19115
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019116 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19117
19118 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19119 {
19120 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019123
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019124 if(NULL == wdiTriggerBARsp)
19125 {
19126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019127 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019128 pWDICtx, pEventData, pEventData->pEventData);
19129 WDI_ASSERT(0);
19130 return WDI_STATUS_E_FAILURE;
19131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019132
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019133 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19134
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19138
19139 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19140 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19141
19142 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19143 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19146 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19147 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019150 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019151 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19152 }
19153 wdiTriggerBARspCandidate++;
19154 halBaCandidate++;
19155 }
19156 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019157 else
19158 {
19159 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19160
19161 if(NULL == wdiTriggerBARsp)
19162 {
19163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019164 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019165 pWDICtx, pEventData, pEventData->pEventData);
19166 WDI_ASSERT(0);
19167 return WDI_STATUS_E_FAILURE;
19168 }
19169
19170 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19171
19172 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019173
19174 /*Notify UMAC*/
19175 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19176
19177 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019179}/*WDI_ProcessAddSessionBARsp*/
19180
19181/**
19182 @brief Process Update Beacon Params Rsp function (called when a response
19183 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019184
19185 @param pWDICtx: pointer to the WLAN DAL context
19186 pEventData: pointer to the event information structure
19187
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 @see
19189 @return Result of the function call
19190*/
19191WDI_Status
19192WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019193(
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 WDI_ControlBlockType* pWDICtx,
19195 WDI_EventInfoType* pEventData
19196)
19197{
19198 WDI_Status wdiStatus;
19199 eHalStatus halStatus;
19200 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19202
19203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 -------------------------------------------------------------------------*/
19206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19207 ( NULL == pEventData->pEventData))
19208 {
19209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 }
19214
19215 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19216
19217 /*-------------------------------------------------------------------------
19218 Extract response and send it to UMAC
19219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019220 wpalMemoryCopy( &halStatus,
19221 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 sizeof(halStatus));
19223
Jeff Johnsone7245742012-09-05 17:12:55 -070019224 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019225
19226 /*Notify UMAC*/
19227 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19228
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019230}/*WDI_ProcessUpdateBeaconParamsRsp*/
19231
19232/**
19233 @brief Process Send Beacon template Rsp function (called when a response
19234 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019235
19236 @param pWDICtx: pointer to the WLAN DAL context
19237 pEventData: pointer to the event information structure
19238
Jeff Johnson295189b2012-06-20 16:38:30 -070019239 @see
19240 @return Result of the function call
19241*/
19242WDI_Status
19243WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019244(
Jeff Johnson295189b2012-06-20 16:38:30 -070019245 WDI_ControlBlockType* pWDICtx,
19246 WDI_EventInfoType* pEventData
19247)
19248{
19249 WDI_Status wdiStatus;
19250 eHalStatus halStatus;
19251 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19253
19254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 -------------------------------------------------------------------------*/
19257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19258 ( NULL == pEventData->pEventData))
19259 {
19260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 }
19265
19266 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19267
19268 /*-------------------------------------------------------------------------
19269 Extract response and send it to UMAC
19270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019271 wpalMemoryCopy( &halStatus,
19272 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 sizeof(halStatus));
19274
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019276
19277 /*Notify UMAC*/
19278 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19279
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019281}/*WDI_ProcessSendBeaconParamsRsp*/
19282
Jeff Johnsone7245742012-09-05 17:12:55 -070019283
Jeff Johnson295189b2012-06-20 16:38:30 -070019284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019285 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019287
19288 @param pWDICtx: pointer to the WLAN DAL context
19289 pEventData: pointer to the event information structure
19290
Jeff Johnson295189b2012-06-20 16:38:30 -070019291 @see
19292 @return Result of the function call
19293*/
19294WDI_Status
19295WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019296(
Jeff Johnson295189b2012-06-20 16:38:30 -070019297 WDI_ControlBlockType* pWDICtx,
19298 WDI_EventInfoType* pEventData
19299)
19300{
19301 WDI_Status wdiStatus;
19302 eHalStatus halStatus;
19303 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19305
19306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 -------------------------------------------------------------------------*/
19309 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19310 ( NULL == pEventData->pEventData))
19311 {
19312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 }
19317
19318 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19319
19320 /*-------------------------------------------------------------------------
19321 Extract response and send it to UMAC
19322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 wpalMemoryCopy( &halStatus,
19324 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 sizeof(halStatus));
19326
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019328
19329 /*Notify UMAC*/
19330 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19331
Jeff Johnsone7245742012-09-05 17:12:55 -070019332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019333}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19334
19335 /**
19336 @brief Process Set Max Tx Power Rsp function (called when a response
19337 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019338
19339 @param pWDICtx: pointer to the WLAN DAL context
19340 pEventData: pointer to the event information structure
19341
Jeff Johnson295189b2012-06-20 16:38:30 -070019342 @see
19343 @return Result of the function call
19344*/
19345WDI_Status
19346WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019347(
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 WDI_ControlBlockType* pWDICtx,
19349 WDI_EventInfoType* pEventData
19350)
19351{
19352 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019353
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019355
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19358
19359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019361 -------------------------------------------------------------------------*/
19362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19363 ( NULL == pEventData->pEventData))
19364 {
19365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 }
19370
19371 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19372
19373 /*-------------------------------------------------------------------------
19374 Extract response and send it to UMAC
19375 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19377 pEventData->pEventData,
19378 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019379
19380 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19381 {
19382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19383 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 }
19386
Jeff Johnsone7245742012-09-05 17:12:55 -070019387 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390
19391 /*Notify UMAC*/
19392 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19393
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019395}
19396
schang86c22c42013-03-13 18:41:24 -070019397 /**
19398 @brief Process Set Tx Power Rsp function (called when a response
19399 is being received over the bus from HAL)
19400
19401 @param pWDICtx: pointer to the WLAN DAL context
19402 pEventData: pointer to the event information structure
19403
19404 @see
19405 @return Result of the function call
19406*/
19407WDI_Status
19408WDI_ProcessSetTxPowerRsp
19409(
19410 WDI_ControlBlockType* pWDICtx,
19411 WDI_EventInfoType* pEventData
19412)
19413{
19414 tSetTxPwrRspMsg halTxpowerrsp;
19415 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19416 WDA_SetTxPowerRspCb wdiReqStatusCb;
19417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19418
19419 /*-------------------------------------------------------------------------
19420 Sanity check
19421 -------------------------------------------------------------------------*/
19422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19423 ( NULL == pEventData->pEventData))
19424 {
19425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19426 "%s: Invalid parameters", __func__);
19427 WDI_ASSERT(0);
19428 return WDI_STATUS_E_FAILURE;
19429 }
19430
19431 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19432
19433 /*-------------------------------------------------------------------------
19434 Extract response and send it to UMAC
19435 -------------------------------------------------------------------------*/
19436 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19437 pEventData->pEventData,
19438 sizeof(halTxpowerrsp.setTxPwrRspParams));
19439
19440 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19441 {
19442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19443 "Error status returned in Set Tx Power Response ");
19444 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19445 return WDI_STATUS_E_FAILURE;
19446 }
19447
19448 wdiSetTxPowerRspMsg.wdiStatus =
19449 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19450
19451 /*Notify UMAC*/
19452 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19453
19454 return WDI_STATUS_SUCCESS;
19455}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019456
19457/**
19458 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19459 is being received over the bus from HAL)
19460
19461 @param pWDICtx: pointer to the WLAN DAL context
19462 pEventData: pointer to the event information structure
19463
19464 @see
19465 @return Result of the function call
19466*/
19467WDI_Status
19468WDI_ProcessSetMaxTxPowerPerBandRsp
19469(
19470 WDI_ControlBlockType* pWDICtx,
19471 WDI_EventInfoType* pEventData
19472)
19473{
19474 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19475 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19476 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19478
19479 /*-------------------------------------------------------------------------
19480 Sanity check
19481 -------------------------------------------------------------------------*/
19482 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19483 ( NULL == pEventData->pEventData))
19484 {
19485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19486 "%s: Invalid parameters", __func__);
19487 WDI_ASSERT(0);
19488 return WDI_STATUS_E_FAILURE;
19489 }
19490
19491 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19492
19493 /*-------------------------------------------------------------------------
19494 Extract response and send it to UMAC
19495 -------------------------------------------------------------------------*/
19496 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19497 pEventData->pEventData,
19498 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19499
19500 if (eHAL_STATUS_SUCCESS !=
19501 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19502 {
19503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19504 "Error status returned in Set Max Tx Power Per Band Response");
19505 return WDI_STATUS_E_FAILURE;
19506 }
19507
19508 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19509 WDI_HAL_2_WDI_STATUS(
19510 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19511
19512 /* Notify UMAC */
19513 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19514
19515 return WDI_STATUS_SUCCESS;
19516}
19517
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019518#ifdef FEATURE_WLAN_TDLS
19519/**
19520 @brief Process TDLS Link Establish Rsp function (called
19521 when a response is being received over the bus from HAL)
19522
19523 @param pWDICtx: pointer to the WLAN DAL context
19524 pEventData: pointer to the event information structure
19525
19526 @see
19527 @return Result of the function call
19528*/
19529WDI_Status
19530WDI_ProcessLinkEstablishReqRsp
19531(
19532 WDI_ControlBlockType* pWDICtx,
19533 WDI_EventInfoType* pEventData
19534)
19535{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019536 eHalStatus halStatus;
19537 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019538 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19539 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19540
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19542
19543 /*-------------------------------------------------------------------------
19544 Sanity check
19545 -------------------------------------------------------------------------*/
19546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19547 ( NULL == pEventData->pEventData))
19548 {
19549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19550 "%s: Invalid parameters", __func__);
19551 WDI_ASSERT(0);
19552 return WDI_STATUS_E_FAILURE;
19553 }
19554
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019555 /*-------------------------------------------------------------------------
19556 Extract indication and send it to UMAC
19557 -------------------------------------------------------------------------*/
19558 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19559 pEventData->pEventData,
19560 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19561
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019562 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19563
19564 /*-------------------------------------------------------------------------
19565 Extract response and send it to UMAC
19566 -------------------------------------------------------------------------*/
19567 wpalMemoryCopy( &halStatus,
19568 pEventData->pEventData,
19569 sizeof(halStatus));
19570
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019571 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19572 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019573
19574 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019575 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019576
19577 return WDI_STATUS_SUCCESS;
19578}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019579
19580
19581
19582/**
19583 @brief Process TDLS Chan switch Rsp function (called
19584 when a response is being received over the bus from HAL)
19585
19586 @param pWDICtx: pointer to the WLAN DAL context
19587 pEventData: pointer to the event information structure
19588
19589 @see
19590 @return Result of the function call
19591*/
19592WDI_Status
19593WDI_ProcessChanSwitchReqRsp
19594(
19595 WDI_ControlBlockType* pWDICtx,
19596 WDI_EventInfoType* pEventData
19597)
19598{
19599 eHalStatus halStatus;
19600 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19601 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19602 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19603
19604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19605
19606 /*-------------------------------------------------------------------------
19607 Sanity check
19608 -------------------------------------------------------------------------*/
19609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19610 ( NULL == pEventData->pEventData))
19611 {
19612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19613 "%s: Invalid parameters", __func__);
19614 WDI_ASSERT(0);
19615 return WDI_STATUS_E_FAILURE;
19616 }
19617
19618 /*-------------------------------------------------------------------------
19619 Extract indication and send it to UMAC
19620 -------------------------------------------------------------------------*/
19621 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19622 pEventData->pEventData,
19623 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19624
19625 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19626
19627 /*-------------------------------------------------------------------------
19628 Extract response and send it to UMAC
19629 -------------------------------------------------------------------------*/
19630 wpalMemoryCopy( &halStatus,
19631 pEventData->pEventData,
19632 sizeof(halStatus));
19633
19634 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19635 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19636
19637 /*Notify UMAC*/
19638 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19639
19640 return WDI_STATUS_SUCCESS;
19641}/*WDI_ProcessChanSwitchReqRsp*/
19642
19643
19644
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019645#endif
schang86c22c42013-03-13 18:41:24 -070019646
Jeff Johnson295189b2012-06-20 16:38:30 -070019647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019648 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019650
19651 @param pWDICtx: pointer to the WLAN DAL context
19652 pEventData: pointer to the event information structure
19653
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 @see
19655 @return Result of the function call
19656*/
19657WDI_Status
19658WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019659(
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 WDI_ControlBlockType* pWDICtx,
19661 WDI_EventInfoType* pEventData
19662)
19663{
19664 WDI_Status wdiStatus;
19665 eHalStatus halStatus;
19666 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19668
19669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 -------------------------------------------------------------------------*/
19672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19673 ( NULL == pEventData->pEventData))
19674 {
19675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 }
19680
19681 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19682
19683 /*-------------------------------------------------------------------------
19684 Extract response and send it to UMAC
19685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 wpalMemoryCopy( &halStatus,
19687 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 sizeof(halStatus));
19689
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019691
19692 /*Notify UMAC*/
19693 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19694
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019696}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019700
19701 @param pWDICtx: pointer to the WLAN DAL context
19702 pEventData: pointer to the event information structure
19703
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 @see
19705 @return Result of the function call
19706*/
19707WDI_Status
19708WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019709(
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 WDI_ControlBlockType* pWDICtx,
19711 WDI_EventInfoType* pEventData
19712)
19713{
19714 WDI_Status wdiStatus;
19715 eHalStatus halStatus;
19716 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019717 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19719
19720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 -------------------------------------------------------------------------*/
19723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19724 ( NULL == pEventData->pEventData))
19725 {
19726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 }
19731
19732 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19733
19734 /*-------------------------------------------------------------------------
19735 Extract response and send it to UMAC
19736 -------------------------------------------------------------------------*/
19737 halStatus = *((eHalStatus*)pEventData->pEventData);
19738
Jeff Johnsone7245742012-09-05 17:12:55 -070019739 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019740
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019741 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19742 * Other module states are taken care by PMC.
19743 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19744 */
19745 if (wdiStatus != WDI_STATUS_SUCCESS) {
19746
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19748 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19749 halStatus);
19750 /* Call Back is not required as we are putting the DXE in FULL
19751 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019752 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19753
19754 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019756 "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 -080019757 WDI_ASSERT(0);
19758 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019759 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 /*Notify UMAC*/
19761 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19762
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764}/*WDI_ProcessEnterImpsRsp*/
19765
19766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019769
19770 @param pWDICtx: pointer to the WLAN DAL context
19771 pEventData: pointer to the event information structure
19772
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 @see
19774 @return Result of the function call
19775*/
19776WDI_Status
19777WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019778(
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 WDI_ControlBlockType* pWDICtx,
19780 WDI_EventInfoType* pEventData
19781)
19782{
19783 WDI_Status wdiStatus;
19784 eHalStatus halStatus;
19785 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019786 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19788
19789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 -------------------------------------------------------------------------*/
19792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19793 ( NULL == pEventData->pEventData))
19794 {
19795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 }
19800
19801 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19802
19803 /*-------------------------------------------------------------------------
19804 Extract response and send it to UMAC
19805 -------------------------------------------------------------------------*/
19806 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019808
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019809 if (halStatus != eHAL_STATUS_SUCCESS)
19810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19811 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19812
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019814 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19815 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19816 {
19817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019818 "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 -080019819 WDI_ASSERT(0);
19820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 /*Notify UMAC*/
19822 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19823
Jeff Johnsone7245742012-09-05 17:12:55 -070019824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019825}/*WDI_ProcessExitImpsRsp*/
19826
19827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019830
19831 @param pWDICtx: pointer to the WLAN DAL context
19832 pEventData: pointer to the event information structure
19833
Jeff Johnson295189b2012-06-20 16:38:30 -070019834 @see
19835 @return Result of the function call
19836*/
19837WDI_Status
19838WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019839(
Jeff Johnson295189b2012-06-20 16:38:30 -070019840 WDI_ControlBlockType* pWDICtx,
19841 WDI_EventInfoType* pEventData
19842)
19843{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019844 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19845 tHalEnterBmpsRspParams halEnterBmpsRsp;
19846 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19847 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019848 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19850
19851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 -------------------------------------------------------------------------*/
19854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19855 ( NULL == pEventData->pEventData))
19856 {
19857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019861 }
19862
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019864 Extract response and send it to UMAC
19865 -------------------------------------------------------------------------*/
19866 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19867 {
19868 wpalMemoryCopy( &halEnterBmpsRsp,
19869 pEventData->pEventData,
19870 sizeof(halEnterBmpsRsp));
19871
19872 //Used to print debug message
19873 halStatus = halEnterBmpsRsp.status;
19874 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19875 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19876 }
19877 else
19878 {
19879 halStatus = *((eHalStatus*)pEventData->pEventData);
19880 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19881 }
19882
19883 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019884
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019885 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19886 * Other module states are taken care by PMC.
19887 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19888 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019889 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19890 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019891
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019893 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19894 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019895 /* Call Back is not required as we are putting the DXE in FULL
19896 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019897 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19898 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19899 {
19900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019901 "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 -080019902 WDI_ASSERT(0);
19903 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019904 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019905 }
19906
Jeff Johnson295189b2012-06-20 16:38:30 -070019907 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019908 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019909
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019911}/*WDI_ProcessEnterBmpsRsp*/
19912
19913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019914 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019916
19917 @param pWDICtx: pointer to the WLAN DAL context
19918 pEventData: pointer to the event information structure
19919
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 @see
19921 @return Result of the function call
19922*/
19923WDI_Status
19924WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019925(
Jeff Johnson295189b2012-06-20 16:38:30 -070019926 WDI_ControlBlockType* pWDICtx,
19927 WDI_EventInfoType* pEventData
19928)
19929{
Jeff Johnson295189b2012-06-20 16:38:30 -070019930 eHalStatus halStatus;
19931 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019932 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019933 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19934 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19936
19937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 -------------------------------------------------------------------------*/
19940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19941 ( NULL == pEventData->pEventData))
19942 {
19943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 }
19948
19949 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19950
19951 /*-------------------------------------------------------------------------
19952 Extract response and send it to UMAC
19953 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019954
19955 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19956 {
19957 wpalMemoryCopy( &halExitBmpsRsp,
19958 pEventData->pEventData,
19959 sizeof(halExitBmpsRsp));
19960
19961 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19962 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19963 }
19964 else
19965 {
19966 halStatus = *((eHalStatus*)pEventData->pEventData);
19967 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19968 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019969
19970 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019971 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19972 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19973 {
19974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019975 "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 -080019976 WDI_ASSERT(0);
19977 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19979
19980 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019981 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019982
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019984}/*WDI_ProcessExitBmpsRsp*/
19985
19986/**
19987 @brief Process Enter UAPSD Rsp function (called when a response
19988 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019989
19990 @param pWDICtx: pointer to the WLAN DAL context
19991 pEventData: pointer to the event information structure
19992
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 @see
19994 @return Result of the function call
19995*/
19996WDI_Status
19997WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019998(
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 WDI_ControlBlockType* pWDICtx,
20000 WDI_EventInfoType* pEventData
20001)
20002{
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020004 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020006 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20007
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20009
20010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 -------------------------------------------------------------------------*/
20013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20014 ( NULL == pEventData->pEventData))
20015 {
20016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 }
20021
20022 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20023
20024 /*-------------------------------------------------------------------------
20025 Extract response and send it to UMAC
20026 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020027 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20028 {
20029 wpalMemoryCopy( &halEnterUapsdRsp,
20030 pEventData->pEventData,
20031 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020032
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020033 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20034 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20035 }
20036 else
20037 {
20038 halStatus = *((eHalStatus*)pEventData->pEventData);
20039 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20040 }
20041
20042 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 {
20044 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20045 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20046 // the traffic to decide when to suspend the trigger frames when there is no traffic
20047 // activity on the trigger enabled ACs
20048 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20049
20050#ifdef WLAN_PERF
20051 // Increment the BD signature to refresh the fast path BD utilization
20052 pWDICtx->uBdSigSerialNum++;
20053#endif
20054 }
20055
20056 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020057 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020058
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020060}/*WDI_ProcessEnterUapsdRsp*/
20061
20062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020063 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020065
20066 @param pWDICtx: pointer to the WLAN DAL context
20067 pEventData: pointer to the event information structure
20068
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 @see
20070 @return Result of the function call
20071*/
20072WDI_Status
20073WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020074(
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 WDI_ControlBlockType* pWDICtx,
20076 WDI_EventInfoType* pEventData
20077)
20078{
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 eHalStatus halStatus;
20080 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020081 tHalExitUapsdRspParams halExitUapsdRsp;
20082 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20084
20085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 -------------------------------------------------------------------------*/
20088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20089 ( NULL == pEventData->pEventData))
20090 {
20091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 }
20096
20097 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20098
20099 /*-------------------------------------------------------------------------
20100 Extract response and send it to UMAC
20101 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020102 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20103 {
20104 wpalMemoryCopy( &halExitUapsdRsp,
20105 pEventData->pEventData,
20106 sizeof(halExitUapsdRsp));
20107
20108 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20109 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20110 }
20111 else
20112 {
20113 halStatus = *((eHalStatus*)pEventData->pEventData);
20114 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20115 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20117 // directly instead of the FW WQ.
20118 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20119
20120#ifdef WLAN_PERF
20121 // Increment the BD signature to refresh the fast path BD utilization
20122 pWDICtx->uBdSigSerialNum++;
20123#endif
20124
20125 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020126 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020127
Jeff Johnsone7245742012-09-05 17:12:55 -070020128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020129}/*WDI_ProcessExitUapsdRsp*/
20130
20131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
20135 @param pWDICtx: pointer to the WLAN DAL context
20136 pEventData: pointer to the event information structure
20137
Jeff Johnson295189b2012-06-20 16:38:30 -070020138 @see
20139 @return Result of the function call
20140*/
20141WDI_Status
20142WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020143(
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 WDI_ControlBlockType* pWDICtx,
20145 WDI_EventInfoType* pEventData
20146)
20147{
20148 WDI_Status wdiStatus;
20149 eHalStatus halStatus;
20150 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20152
20153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 -------------------------------------------------------------------------*/
20156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20157 ( NULL == pEventData->pEventData))
20158 {
20159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020163 }
20164
20165 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20166
20167 /*-------------------------------------------------------------------------
20168 Extract response and send it to UMAC
20169 -------------------------------------------------------------------------*/
20170 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020172
20173 /*Notify UMAC*/
20174 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20175
Jeff Johnsone7245742012-09-05 17:12:55 -070020176 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020177}/*WDI_ProcessSetUapsdAcParamsRsp*/
20178
20179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020180 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020181 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020182
20183 @param pWDICtx: pointer to the WLAN DAL context
20184 pEventData: pointer to the event information structure
20185
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 @see
20187 @return Result of the function call
20188*/
20189WDI_Status
20190WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020191(
Jeff Johnson295189b2012-06-20 16:38:30 -070020192 WDI_ControlBlockType* pWDICtx,
20193 WDI_EventInfoType* pEventData
20194)
20195{
20196 WDI_Status wdiStatus;
20197 eHalStatus halStatus;
20198 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20200
20201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 -------------------------------------------------------------------------*/
20204 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20205 ( NULL == pEventData->pEventData))
20206 {
20207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 }
20212
20213 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20214
20215 /*-------------------------------------------------------------------------
20216 Extract response and send it to UMAC
20217 -------------------------------------------------------------------------*/
20218 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020219 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020220
20221 /*Notify UMAC*/
20222 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20223
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225}/*WDI_ProcessUpdateUapsdParamsRsp*/
20226
20227/**
20228 @brief Process Configure RXP filter Rsp function (called when a
20229 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020230
20231 @param pWDICtx: pointer to the WLAN DAL context
20232 pEventData: pointer to the event information structure
20233
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 @see
20235 @return Result of the function call
20236*/
20237WDI_Status
20238WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020239(
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 WDI_ControlBlockType* pWDICtx,
20241 WDI_EventInfoType* pEventData
20242)
20243{
20244 WDI_Status wdiStatus;
20245 eHalStatus halStatus;
20246 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20248
20249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 -------------------------------------------------------------------------*/
20252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20253 ( NULL == pEventData->pEventData))
20254 {
20255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 }
20260
20261 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20262
20263 /*-------------------------------------------------------------------------
20264 Extract response and send it to UMAC
20265 -------------------------------------------------------------------------*/
20266 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020267 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020268
20269 /*Notify UMAC*/
20270 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20271
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020273}/*WDI_ProcessConfigureRxpFilterRsp*/
20274
20275/**
20276 @brief Process Set beacon filter Rsp function (called when a
20277 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020278
20279 @param pWDICtx: pointer to the WLAN DAL context
20280 pEventData: pointer to the event information structure
20281
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 @see
20283 @return Result of the function call
20284*/
20285WDI_Status
20286WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020287(
Jeff Johnson295189b2012-06-20 16:38:30 -070020288 WDI_ControlBlockType* pWDICtx,
20289 WDI_EventInfoType* pEventData
20290)
20291{
20292 WDI_Status wdiStatus;
20293 eHalStatus halStatus;
20294 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20296
20297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 -------------------------------------------------------------------------*/
20300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20301 ( NULL == pEventData->pEventData))
20302 {
20303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 }
20308
20309 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20310
20311 /*-------------------------------------------------------------------------
20312 Extract response and send it to UMAC
20313 -------------------------------------------------------------------------*/
20314 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020315 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020316
20317 /*Notify UMAC*/
20318 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20319
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321}/*WDI_ProcessSetBeaconFilterRsp*/
20322
20323/**
20324 @brief Process remove beacon filter Rsp function (called when a
20325 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020326
20327 @param pWDICtx: pointer to the WLAN DAL context
20328 pEventData: pointer to the event information structure
20329
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 @see
20331 @return Result of the function call
20332*/
20333WDI_Status
20334WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020335(
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 WDI_ControlBlockType* pWDICtx,
20337 WDI_EventInfoType* pEventData
20338)
20339{
20340 WDI_Status wdiStatus;
20341 eHalStatus halStatus;
20342 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20344
20345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 -------------------------------------------------------------------------*/
20348 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20349 ( NULL == pEventData->pEventData))
20350 {
20351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020352 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 }
20356
20357 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20358
20359 /*-------------------------------------------------------------------------
20360 Extract response and send it to UMAC
20361 -------------------------------------------------------------------------*/
20362 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020363 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020364
20365 /*Notify UMAC*/
20366 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20367
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369}/*WDI_ProcessRemBeaconFilterRsp*/
20370
20371/**
20372 @brief Process set RSSI thresholds Rsp function (called when a
20373 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020374
20375 @param pWDICtx: pointer to the WLAN DAL context
20376 pEventData: pointer to the event information structure
20377
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 @see
20379 @return Result of the function call
20380*/
20381WDI_Status
20382WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020383(
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 WDI_ControlBlockType* pWDICtx,
20385 WDI_EventInfoType* pEventData
20386)
20387{
20388 WDI_Status wdiStatus;
20389 eHalStatus halStatus;
20390 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20392
20393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 -------------------------------------------------------------------------*/
20396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20397 ( NULL == pEventData->pEventData))
20398 {
20399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 }
20404
20405 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20406
20407 /*-------------------------------------------------------------------------
20408 Extract response and send it to UMAC
20409 -------------------------------------------------------------------------*/
20410 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020411 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020412
20413 /*Notify UMAC*/
20414 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20415
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020417}/*WDI_ProcessSetRSSIThresoldsRsp*/
20418
20419/**
20420 @brief Process host offload Rsp function (called when a
20421 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020422
20423 @param pWDICtx: pointer to the WLAN DAL context
20424 pEventData: pointer to the event information structure
20425
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 @see
20427 @return Result of the function call
20428*/
20429WDI_Status
20430WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020431(
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 WDI_ControlBlockType* pWDICtx,
20433 WDI_EventInfoType* pEventData
20434)
20435{
20436 WDI_Status wdiStatus;
20437 eHalStatus halStatus;
20438 WDI_HostOffloadCb wdiHostOffloadCb;
20439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20440
20441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 -------------------------------------------------------------------------*/
20444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20445 ( NULL == pEventData->pEventData))
20446 {
20447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 }
20452
20453 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20454
20455 /*-------------------------------------------------------------------------
20456 Extract response and send it to UMAC
20457 -------------------------------------------------------------------------*/
20458 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020459 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020460
20461 /*Notify UMAC*/
20462 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20463
Jeff Johnsone7245742012-09-05 17:12:55 -070020464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020465}/*WDI_ProcessHostOffloadRsp*/
20466
20467/**
20468 @brief Process keep alive Rsp function (called when a
20469 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020470
20471 @param pWDICtx: pointer to the WLAN DAL context
20472 pEventData: pointer to the event information structure
20473
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 @see
20475 @return Result of the function call
20476*/
20477WDI_Status
20478WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020479(
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 WDI_ControlBlockType* pWDICtx,
20481 WDI_EventInfoType* pEventData
20482)
20483{
20484 WDI_Status wdiStatus;
20485 eHalStatus halStatus;
20486 WDI_KeepAliveCb wdiKeepAliveCb;
20487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20489 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20490
20491
20492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 -------------------------------------------------------------------------*/
20495 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20496 ( NULL == pEventData->pEventData))
20497 {
20498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020502 }
20503
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20505
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 /*-------------------------------------------------------------------------
20507 Extract response and send it to UMAC
20508 -------------------------------------------------------------------------*/
20509 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020511
20512 /*Notify UMAC*/
20513 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20514
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020516}/*WDI_ProcessKeepAliveRsp*/
20517
20518/**
20519 @brief Process wowl add ptrn Rsp function (called when a
20520 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020521
20522 @param pWDICtx: pointer to the WLAN DAL context
20523 pEventData: pointer to the event information structure
20524
Jeff Johnson295189b2012-06-20 16:38:30 -070020525 @see
20526 @return Result of the function call
20527*/
20528WDI_Status
20529WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020530(
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 WDI_ControlBlockType* pWDICtx,
20532 WDI_EventInfoType* pEventData
20533)
20534{
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 eHalStatus halStatus;
20536 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020537 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20538 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20539
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20541
20542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 -------------------------------------------------------------------------*/
20545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20546 ( NULL == pEventData->pEventData))
20547 {
20548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 }
20553
20554 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20555
20556 /*-------------------------------------------------------------------------
20557 Extract response and send it to UMAC
20558 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020559 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20560 {
20561 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20562 pEventData->pEventData,
20563 sizeof(halAddWowlBcastPtrRsp));
20564
20565 wdiWowlAddBcPtrRsp.wdiStatus =
20566 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20567 }
20568 else
20569 {
20570 halStatus = *((eHalStatus*)pEventData->pEventData);
20571 wdiWowlAddBcPtrRsp.wdiStatus =
20572 WDI_HAL_2_WDI_STATUS(halStatus);
20573 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020574
20575 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020576 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020577
Jeff Johnsone7245742012-09-05 17:12:55 -070020578 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020579}/*WDI_ProcessWowlAddBcPtrnRsp*/
20580
20581/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020584
20585 @param pWDICtx: pointer to the WLAN DAL context
20586 pEventData: pointer to the event information structure
20587
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 @see
20589 @return Result of the function call
20590*/
20591WDI_Status
20592WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020593(
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 WDI_ControlBlockType* pWDICtx,
20595 WDI_EventInfoType* pEventData
20596)
20597{
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 eHalStatus halStatus;
20599 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020600 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20601 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20603
20604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 -------------------------------------------------------------------------*/
20607 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20608 ( NULL == pEventData->pEventData))
20609 {
20610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 }
20615
20616 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20617
20618 /*-------------------------------------------------------------------------
20619 Extract response and send it to UMAC
20620 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020621 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20622 {
20623 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20624 pEventData->pEventData,
20625 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020626
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020627 wdiWowlDelBcstPtrRsp.wdiStatus =
20628 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20629 }
20630 else
20631 {
20632 halStatus = *((eHalStatus*)pEventData->pEventData);
20633 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20634 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020636 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020637
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020639}/*WDI_ProcessWowlDelBcPtrnRsp*/
20640
20641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020644
20645 @param pWDICtx: pointer to the WLAN DAL context
20646 pEventData: pointer to the event information structure
20647
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 @see
20649 @return Result of the function call
20650*/
20651WDI_Status
20652WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020653(
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 WDI_ControlBlockType* pWDICtx,
20655 WDI_EventInfoType* pEventData
20656)
20657{
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 eHalStatus halStatus;
20659 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020660 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20661 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20663
20664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 -------------------------------------------------------------------------*/
20667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20668 ( NULL == pEventData->pEventData))
20669 {
20670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 }
20675
20676 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20677
20678 /*-------------------------------------------------------------------------
20679 Extract response and send it to UMAC
20680 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020681 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20682 {
20683 wpalMemoryCopy( &halEnterWowlRspParams,
20684 (wpt_uint8*)pEventData->pEventData,
20685 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020686
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020687 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20688 wdiwowlEnterRsp.status =
20689 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20690 }
20691 else
20692 {
20693 halStatus = *((eHalStatus*)pEventData->pEventData);
20694 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20695 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020697 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020698
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020700}/*WDI_ProcessWowlEnterRsp*/
20701
20702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020705
20706 @param pWDICtx: pointer to the WLAN DAL context
20707 pEventData: pointer to the event information structure
20708
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 @see
20710 @return Result of the function call
20711*/
20712WDI_Status
20713WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020714(
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 WDI_ControlBlockType* pWDICtx,
20716 WDI_EventInfoType* pEventData
20717)
20718{
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 eHalStatus halStatus;
20720 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020721 tHalExitWowlRspParams halExitWowlRspParams;
20722 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20723
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20725
20726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 -------------------------------------------------------------------------*/
20729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20730 ( NULL == pEventData->pEventData))
20731 {
20732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 }
20737
20738 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20739
20740 /*-------------------------------------------------------------------------
20741 Extract response and send it to UMAC
20742 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020743 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20744 {
20745 wpalMemoryCopy( &halExitWowlRspParams,
20746 pEventData->pEventData,
20747 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020749 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20750 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20751
20752 }
20753 else
20754 {
20755 halStatus = *((eHalStatus*)pEventData->pEventData);
20756 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20757 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020759 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020760
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020762}/*WDI_ProcessWowlExitRsp*/
20763
20764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020765 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 (called when a response is being received over the bus
20767 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020768
20769 @param pWDICtx: pointer to the WLAN DAL context
20770 pEventData: pointer to the event information structure
20771
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 @see
20773 @return Result of the function call
20774*/
20775WDI_Status
20776WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020777(
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 WDI_ControlBlockType* pWDICtx,
20779 WDI_EventInfoType* pEventData
20780)
20781{
20782 WDI_Status wdiStatus;
20783 eHalStatus halStatus;
20784 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20786
20787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 -------------------------------------------------------------------------*/
20790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20791 ( NULL == pEventData->pEventData))
20792 {
20793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 }
20798
20799 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20800
20801 /*-------------------------------------------------------------------------
20802 Extract response and send it to UMAC
20803 -------------------------------------------------------------------------*/
20804 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020806
20807 /*Notify UMAC*/
20808 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20809
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020811}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20812
20813
20814/**
20815 @brief Process Nv download(called when a response
20816 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020817
20818 @param pWDICtx: pointer to the WLAN DAL context
20819 pEventData: pointer to the event information structure
20820
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 @see
20822 @return Result of the function call
20823*/
20824WDI_Status
20825WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020826(
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 WDI_ControlBlockType* pWDICtx,
20828 WDI_EventInfoType* pEventData
20829)
20830{
20831
20832 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20833 tHalNvImgDownloadRspParams halNvDownloadRsp;
20834 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20835
20836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020837 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 -------------------------------------------------------------------------*/
20839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20840 ( NULL == pEventData->pEventData))
20841 {
20842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020843 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 }
20847
20848 /*-------------------------------------------------------------------------
20849 Extract response and send it to UMAC
20850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 wpalMemoryCopy( &halNvDownloadRsp,
20852 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 sizeof(halNvDownloadRsp));
20854
20855 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20856
20857 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20859 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 {
20861 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 }
20864 else
20865 {
20866 /*Reset the Nv related global information in WDI context information */
20867 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20868 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20869 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20870 /*call WDA callback function for last fragment */
20871 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20872 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20873 }
20874
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876}
20877#ifdef WLAN_FEATURE_VOWIFI_11R
20878/**
20879 @brief Process Add TSpec Rsp function (called when a response
20880 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020881
20882 @param pWDICtx: pointer to the WLAN DAL context
20883 pEventData: pointer to the event information structure
20884
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 @see
20886 @return Result of the function call
20887*/
20888WDI_Status
20889WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020890(
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 WDI_ControlBlockType* pWDICtx,
20892 WDI_EventInfoType* pEventData
20893)
20894{
20895 WDI_Status wdiStatus;
20896 tAggrAddTsRspParams aggrAddTsRsp;
20897 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20899
20900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 -------------------------------------------------------------------------*/
20903 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20904 ( NULL == pEventData->pEventData))
20905 {
20906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020907 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020909 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 }
20911
20912 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20913
20914 /*-------------------------------------------------------------------------
20915 Extract response and send it to UMAC
20916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 wpalMemoryCopy( &aggrAddTsRsp,
20918 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020919 sizeof(aggrAddTsRsp));
20920
20921 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020922 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020923
20924 /*Notify UMAC*/
20925 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20926
Jeff Johnsone7245742012-09-05 17:12:55 -070020927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020928}/*WDI_ProcessAddTSpecRsp*/
20929#endif /* WLAN_FEATURE_VOWIFI_11R */
20930
20931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020934
20935 @param pWDICtx: pointer to the WLAN DAL context
20936 pEventData: pointer to the event information structure
20937
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 @see
20939 @return Result of the function call
20940*/
20941WDI_Status
20942WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020943(
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 WDI_ControlBlockType* pWDICtx,
20945 WDI_EventInfoType* pEventData
20946)
20947{
20948 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20949 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20950 tHalHostResumeRspParams hostResumeRspMsg;
20951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20952
20953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 -------------------------------------------------------------------------*/
20956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20957 ( NULL == pEventData->pEventData))
20958 {
20959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 }
20964
20965 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20966
20967 /*-------------------------------------------------------------------------
20968 Extract response and send it to UMAC
20969 -------------------------------------------------------------------------*/
20970
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 (wpt_uint8*)pEventData->pEventData,
20973 sizeof(hostResumeRspMsg));
20974
Jeff Johnsone7245742012-09-05 17:12:55 -070020975 wdiResumeRspParams.wdiStatus =
20976 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020977
20978 /*Notify UMAC*/
20979 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20980
20981 return WDI_STATUS_SUCCESS;
20982}
20983
20984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020987
20988 @param pWDICtx: pointer to the WLAN DAL context
20989 pEventData: pointer to the event information structure
20990
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 @see
20992 @return Result of the function call
20993*/
20994WDI_Status
20995WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020996(
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 WDI_ControlBlockType* pWDICtx,
20998 WDI_EventInfoType* pEventData
20999)
21000{
21001 WDI_Status wdiStatus;
21002 eHalStatus halStatus;
21003 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21005
21006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021008 -------------------------------------------------------------------------*/
21009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21010 ( NULL == pEventData->pEventData))
21011 {
21012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021017
21018 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021019
21020 /*-------------------------------------------------------------------------
21021 Extract response and send it to UMAC
21022 -------------------------------------------------------------------------*/
21023 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021025
21026 /*Notify UMAC*/
21027 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21028
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030}/*WDI_ProcessSetTxPerTrackingRsp*/
21031
21032/*==========================================================================
21033 Indications from HAL
21034 ==========================================================================*/
21035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 indication of this kind is being received over the bus
21038 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021039
21040 @param pWDICtx: pointer to the WLAN DAL context
21041 pEventData: pointer to the event information structure
21042
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 @see
21044 @return Result of the function call
21045*/
21046WDI_Status
21047WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021048(
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 WDI_ControlBlockType* pWDICtx,
21050 WDI_EventInfoType* pEventData
21051)
21052{
21053 WDI_LowLevelIndType wdiInd;
21054 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21056
21057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 -------------------------------------------------------------------------*/
21060 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21061 ( NULL == pEventData->pEventData))
21062 {
21063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021064 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 }
21068
21069 /*-------------------------------------------------------------------------
21070 Extract indication and send it to UMAC
21071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021072 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21073 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 sizeof(tHalRSSINotification));
21075
21076 /*Fill in the indication parameters*/
21077 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21078 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21079 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21080 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21081 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21082 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21083 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21084 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21085 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21086 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21087 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21088 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21089 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021090 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21091 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021092
ltimariub77f24b2013-01-24 18:54:33 -080021093 if ( pWDICtx->wdiLowLevelIndCB )
21094 {
21095 /*Notify UMAC of indication*/
21096 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21097 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021098
21099 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021100}/*WDI_ProcessLowRSSIInd*/
21101
21102
21103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 an indication of this kind is being received over the
21106 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021107
21108 @param pWDICtx: pointer to the WLAN DAL context
21109 pEventData: pointer to the event information structure
21110
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 @see
21112 @return Result of the function call
21113*/
21114WDI_Status
21115WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021116(
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ControlBlockType* pWDICtx,
21118 WDI_EventInfoType* pEventData
21119)
21120{
21121 WDI_Status wdiStatus;
21122 eHalStatus halStatus;
21123 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021124 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21126
21127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 -------------------------------------------------------------------------*/
21130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21131 ( NULL == pEventData->pEventData))
21132 {
21133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021138 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 /*-------------------------------------------------------------------------
21140 Extract indication and send it to UMAC
21141 -------------------------------------------------------------------------*/
21142 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21143 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021144 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021145
21146 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021147 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021148 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21149 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021150 if ( pWDICtx->wdiLowLevelIndCB )
21151 {
21152 /*Notify UMAC*/
21153 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21154 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021155
21156 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021157}/*WDI_ProcessMissedBeaconInd*/
21158
21159
21160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021161 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021162 an indication of this kind is being received over the
21163 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021164
21165 @param pWDICtx: pointer to the WLAN DAL context
21166 pEventData: pointer to the event information structure
21167
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 @see
21169 @return Result of the function call
21170*/
21171WDI_Status
21172WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021173(
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 WDI_ControlBlockType* pWDICtx,
21175 WDI_EventInfoType* pEventData
21176)
21177{
21178 WDI_Status wdiStatus;
21179 eHalStatus halStatus;
21180 WDI_LowLevelIndType wdiInd;
21181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21182
21183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 -------------------------------------------------------------------------*/
21186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21187 ( NULL == pEventData->pEventData))
21188 {
21189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021193 }
21194
21195 /*-------------------------------------------------------------------------
21196 Extract indication and send it to UMAC
21197 -------------------------------------------------------------------------*/
21198 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21199 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021201
21202 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021203 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 /* ! TO DO - fill in from HAL struct:
21205 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21206
ltimariub77f24b2013-01-24 18:54:33 -080021207 if ( pWDICtx->wdiLowLevelIndCB )
21208 {
21209 /*Notify UMAC*/
21210 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21211 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021212
21213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021214}/*WDI_ProcessUnkAddrFrameInd*/
21215
21216
21217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021219 indication of this kind is being received over the bus
21220 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021221
21222 @param pWDICtx: pointer to the WLAN DAL context
21223 pEventData: pointer to the event information structure
21224
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 @see
21226 @return Result of the function call
21227*/
21228WDI_Status
21229WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021230(
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 WDI_ControlBlockType* pWDICtx,
21232 WDI_EventInfoType* pEventData
21233)
21234{
21235 WDI_LowLevelIndType wdiInd;
21236 tpSirMicFailureInd pHalMicFailureInd;
21237
21238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21239
21240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 -------------------------------------------------------------------------*/
21243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21244 ( NULL == pEventData->pEventData))
21245 {
21246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021251
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21253 /*-------------------------------------------------------------------------
21254 Extract indication and send it to UMAC
21255 -------------------------------------------------------------------------*/
21256
21257 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021258 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21260 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21261 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21262 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21263 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21264 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21265 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21266 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 pHalMicFailureInd->info.keyId;
21273 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21274 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21275 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21276 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021277
21278 if ( pWDICtx->wdiLowLevelIndCB )
21279 {
21280 /*Notify UMAC*/
21281 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21282 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021283
21284 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021285}/*WDI_ProcessMicFailureInd*/
21286
21287
21288/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 an indication of this kind is being received over the
21291 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021292
21293 @param pWDICtx: pointer to the WLAN DAL context
21294 pEventData: pointer to the event information structure
21295
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 @see
21297 @return Result of the function call
21298*/
21299WDI_Status
21300WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021301(
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 WDI_ControlBlockType* pWDICtx,
21303 WDI_EventInfoType* pEventData
21304)
21305{
21306 WDI_Status wdiStatus;
21307 eHalStatus halStatus;
21308 WDI_LowLevelIndType wdiInd;
21309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21310
21311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 -------------------------------------------------------------------------*/
21314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21315 ( NULL == pEventData->pEventData))
21316 {
21317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 }
21322
21323 /*-------------------------------------------------------------------------
21324 Extract indication and send it to UMAC
21325 -------------------------------------------------------------------------*/
21326
21327 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21328 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021329 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021330
21331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21332 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021333
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21336 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
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_ProcessFatalErrorInd*/
21346
21347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 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_ProcessDelSTAInd
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 tDeleteStaContextParams halDelSTACtx;
21366 WDI_LowLevelIndType wdiInd;
21367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21368
21369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 -------------------------------------------------------------------------*/
21372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21373 ( NULL == pEventData->pEventData))
21374 {
21375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 }
21380
21381 /*-------------------------------------------------------------------------
21382 Extract indication and send it to UMAC
21383 -------------------------------------------------------------------------*/
21384
21385 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 wpalMemoryCopy( &halDelSTACtx,
21387 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 sizeof(halDelSTACtx));
21389
21390 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392
21393 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21394 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21395 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21396 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21397
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021399 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021402 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21403 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021404
ltimariub77f24b2013-01-24 18:54:33 -080021405 if ( pWDICtx->wdiLowLevelIndCB )
21406 {
21407 /*Notify UMAC*/
21408 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21409 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021410
21411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021412}/*WDI_ProcessDelSTAInd*/
21413
21414/**
21415*@brief Process Coex Indication function (called when
21416 an indication of this kind is being received over the
21417 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021418
21419 @param pWDICtx: pointer to the WLAN DAL context
21420 pEventData: pointer to the event information structure
21421
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 @see
21423 @return Result of the function call
21424*/
21425WDI_Status
21426WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021427(
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 WDI_ControlBlockType* pWDICtx,
21429 WDI_EventInfoType* pEventData
21430)
21431{
21432 WDI_LowLevelIndType wdiInd;
21433 tCoexIndMsg halCoexIndMsg;
21434 wpt_uint32 index;
21435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21436
21437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 -------------------------------------------------------------------------*/
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 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 }
21448
21449 /*-------------------------------------------------------------------------
21450 Extract indication and send it to UMAC
21451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21453 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 sizeof(halCoexIndMsg.coexIndParams) );
21455
21456 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 wdiInd.wdiIndicationType = WDI_COEX_IND;
21458 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21460 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 }
21463
21464 // DEBUG
21465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21466 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21468 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21469 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21470 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21471 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021472
ltimariub77f24b2013-01-24 18:54:33 -080021473 if ( pWDICtx->wdiLowLevelIndCB )
21474 {
21475 /*Notify UMAC*/
21476 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21477 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021478
21479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480}/*WDI_ProcessCoexInd*/
21481
21482/**
21483*@brief Process Tx Complete Indication function (called when
21484 an indication of this kind is being received over the
21485 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021486
21487 @param pWDICtx: pointer to the WLAN DAL context
21488 pEventData: pointer to the event information structure
21489
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 @see
21491 @return Result of the function call
21492*/
21493WDI_Status
21494WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021495(
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 WDI_ControlBlockType* pWDICtx,
21497 WDI_EventInfoType* pEventData
21498)
21499{
21500 WDI_LowLevelIndType wdiInd;
21501 tTxComplIndMsg halTxComplIndMsg;
21502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21503
21504 /*-------------------------------------------------------------------------
21505 Sanity check
21506 -------------------------------------------------------------------------*/
21507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21508 ( NULL == pEventData->pEventData ))
21509 {
21510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 WDI_ASSERT( 0 );
21513 return WDI_STATUS_E_FAILURE;
21514 }
21515
21516 /*-------------------------------------------------------------------------
21517 Extract indication and send it to UMAC
21518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21520 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 sizeof(halTxComplIndMsg.txComplParams) );
21522
21523 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021525
21526 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21527 &halTxComplIndMsg.txComplParams,
21528 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021529
ltimariub77f24b2013-01-24 18:54:33 -080021530 if ( pWDICtx->wdiLowLevelIndCB )
21531 {
21532 /*Notify UMAC*/
21533 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21534 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021535
21536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021538#ifdef FEATURE_WLAN_TDLS
21539/**
21540*@brief Process TDLS Indication function (called when
21541 an indication of this kind is being received over the
21542 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021543
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021544 @param pWDICtx: pointer to the WLAN DAL context
21545 pEventData: pointer to the event information structure
21546
21547 @see
21548 @return Result of the function call
21549*/
21550WDI_Status
21551WDI_ProcessTdlsInd
21552(
21553 WDI_ControlBlockType* pWDICtx,
21554 WDI_EventInfoType* pEventData
21555)
21556{
21557 WDI_LowLevelIndType wdiInd;
21558 tTdlsIndMsg halTdlsIndMsg;
21559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21560
21561 /*-------------------------------------------------------------------------
21562 Sanity check
21563 -------------------------------------------------------------------------*/
21564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21565 ( NULL == pEventData->pEventData ))
21566 {
21567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21568 "%s: Invalid parameters", __func__);
21569 WDI_ASSERT( 0 );
21570 return WDI_STATUS_E_FAILURE;
21571 }
21572
21573 /*-------------------------------------------------------------------------
21574 Extract indication and send it to UMAC
21575 -------------------------------------------------------------------------*/
21576 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21577 pEventData->pEventData,
21578 sizeof(halTdlsIndMsg.tdlsIndParams) );
21579
21580 /*Fill in the indication parameters*/
21581 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21582
21583 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21584 = halTdlsIndMsg.tdlsIndParams.status;
21585
21586 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21587 = halTdlsIndMsg.tdlsIndParams.staIdx;
21588
21589 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21590 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21591
Atul Mittalbb2aad02014-09-22 19:09:36 +053021592 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21593 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021594 /*Notify UMAC*/
21595 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21596
21597 return WDI_STATUS_SUCCESS;
21598}/*WDI_ProcessTdlsInd*/
21599#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021600/**
Viral Modid86bde22012-12-10 13:09:21 -080021601*@brief Process Noa Start Indication function (called when
21602 an indication of this kind is being received over the
21603 bus from HAL)
21604
21605 @param pWDICtx: pointer to the WLAN DAL context
21606 pEventData: pointer to the event information structure
21607
21608 @see
21609 @return Result of the function call
21610*/
21611WDI_Status
21612WDI_ProcessP2pNoaStartInd
21613(
21614 WDI_ControlBlockType* pWDICtx,
21615 WDI_EventInfoType* pEventData
21616)
21617{
21618 WDI_LowLevelIndType wdiInd;
21619 tNoaStartIndMsg halNoaStartIndMsg;
21620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21621
21622 /*-------------------------------------------------------------------------
21623 Sanity check
21624 -------------------------------------------------------------------------*/
21625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21626 ( NULL == pEventData->pEventData ))
21627 {
21628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21629 "%s: Invalid parameters", __func__);
21630 WDI_ASSERT( 0 );
21631 return WDI_STATUS_E_FAILURE;
21632 }
21633
21634 /*-------------------------------------------------------------------------
21635 Extract indication and send it to UMAC
21636 -------------------------------------------------------------------------*/
21637 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21638 pEventData->pEventData,
21639 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21640
21641 /*Fill in the indication parameters*/
21642 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21643
21644 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21645 = halNoaStartIndMsg.noaStartIndParams.status;
21646
21647 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21648 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21649
21650 /*Notify UMAC*/
21651 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21652
21653 return WDI_STATUS_SUCCESS;
21654}/*WDI_ProcessNoaAttrInd*/
21655
21656/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021657*@brief Process Noa Attr Indication function (called when
21658 an indication of this kind is being received over the
21659 bus from HAL)
21660
21661 @param pWDICtx: pointer to the WLAN DAL context
21662 pEventData: pointer to the event information structure
21663
21664 @see
21665 @return Result of the function call
21666*/
21667WDI_Status
21668WDI_ProcessP2pNoaAttrInd
21669(
21670 WDI_ControlBlockType* pWDICtx,
21671 WDI_EventInfoType* pEventData
21672)
21673{
21674 WDI_LowLevelIndType wdiInd;
21675 tNoaAttrIndMsg halNoaAttrIndMsg;
21676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21677
21678 /*-------------------------------------------------------------------------
21679 Sanity check
21680 -------------------------------------------------------------------------*/
21681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21682 ( NULL == pEventData->pEventData ))
21683 {
21684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 WDI_ASSERT( 0 );
21687 return WDI_STATUS_E_FAILURE;
21688 }
21689
21690 /*-------------------------------------------------------------------------
21691 Extract indication and send it to UMAC
21692 -------------------------------------------------------------------------*/
21693 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21694 pEventData->pEventData,
21695 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21696
21697 /*Fill in the indication parameters*/
21698 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021699
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21701 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021702
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21704 = halNoaAttrIndMsg.noaAttrIndParams.index;
21705 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21706 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21707 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21708 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021709
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21711 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21712 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21713 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21714 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21715 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21716 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21717 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021718
Jeff Johnson295189b2012-06-20 16:38:30 -070021719 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21720 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21721 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21722 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21723 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21724 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21725 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21726 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21727
ltimariub77f24b2013-01-24 18:54:33 -080021728 if ( pWDICtx->wdiLowLevelIndCB )
21729 {
21730 /*Notify UMAC*/
21731 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21732 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021733
21734 return WDI_STATUS_SUCCESS;
21735}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021736
21737/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 an indication of this kind is being received over the
21740 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021741
21742 @param pWDICtx: pointer to the WLAN DAL context
21743 pEventData: pointer to the event information structure
21744
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 @see
21746 @return Result of the function call
21747*/
21748WDI_Status
21749WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021750(
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 WDI_ControlBlockType* pWDICtx,
21752 WDI_EventInfoType* pEventData
21753)
21754{
21755 WDI_LowLevelIndType wdiInd;
21756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021757
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 /*-------------------------------------------------------------------------
21759 Extract indication and send it to UMAC
21760 -------------------------------------------------------------------------*/
21761 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21763
ltimariub77f24b2013-01-24 18:54:33 -080021764 if ( pWDICtx->wdiLowLevelIndCB )
21765 {
21766 /*Notify UMAC*/
21767 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21768 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021769
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771}/*WDI_ProcessTxPerHitInd*/
21772
Jeff Johnson295189b2012-06-20 16:38:30 -070021773/**
Yue Mab9c86f42013-08-14 15:59:08 -070021774 @brief Process Periodic Tx Pattern Fw Indication function
21775
21776 @param pWDICtx: pointer to the WLAN DAL context
21777 pEventData: pointer to the event information structure
21778
21779 @see
21780 @return Result of the function call
21781*/
21782WDI_Status
21783WDI_ProcessPeriodicTxPtrnFwInd
21784(
21785 WDI_ControlBlockType* pWDICtx,
21786 WDI_EventInfoType* pEventData
21787)
21788{
21789 WDI_LowLevelIndType wdiInd;
21790
21791 /*-------------------------------------------------------------------------
21792 Sanity check
21793 -------------------------------------------------------------------------*/
21794 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21795 (NULL == pEventData->pEventData))
21796 {
21797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21798 "%s: Invalid parameters", __func__);
21799 WDI_ASSERT(0);
21800 return WDI_STATUS_E_FAILURE;
21801 }
21802
21803 /*-------------------------------------------------------------------------
21804 Extract indication and send it to UMAC
21805 -------------------------------------------------------------------------*/
21806 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21807 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21808 sizeof(tHalPeriodicTxPtrnFwInd));
21809
21810 if (pWDICtx->wdiLowLevelIndCB)
21811 {
21812 /*Notify UMAC*/
21813 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21814 }
21815
21816 return WDI_STATUS_SUCCESS;
21817}
21818
21819/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021820 @brief WDI_ProcessFTMCommandReq
21821 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021822
21823 @param pWDICtx: pointer to the WLAN DAL context
21824 pEventData: pointer to the event information structure
21825
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 @see
21827 @return Result of the function call
21828*/
21829WDI_Status
21830WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021831(
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 WDI_ControlBlockType* pWDICtx,
21833 WDI_EventInfoType* pEventData
21834)
21835{
21836 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21837 wpt_uint8 *ftmCommandBuffer = NULL;
21838 wpt_uint16 dataOffset;
21839 wpt_uint16 bufferSize;
21840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 -------------------------------------------------------------------------*/
21843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21844 ( NULL == pEventData->pEventData))
21845
21846 {
21847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 }
21852
21853 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21854
21855 /* Get MSG Buffer */
21856 WDI_GetMessageBuffer(pWDICtx,
21857 WDI_FTM_CMD_REQ,
21858 ftmCommandReq->bodyLength,
21859 &ftmCommandBuffer,
21860 &dataOffset,
21861 &bufferSize);
21862
21863 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21864 ftmCommandReq->FTMCommandBody,
21865 ftmCommandReq->bodyLength);
21866
21867 /* Send MSG */
21868 return WDI_SendMsg(pWDICtx,
21869 ftmCommandBuffer,
21870 bufferSize,
21871 pEventData->pCBfnc,
21872 pEventData->pUserData,
21873 WDI_FTM_CMD_RESP);
21874}
21875
21876/**
21877 @brief WDI_ProcessFTMCommandRsp
21878 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021879
21880 @param pWDICtx: pointer to the WLAN DAL context
21881 pEventData: pointer to the event information structure
21882
Jeff Johnson295189b2012-06-20 16:38:30 -070021883 @see
21884 @return Result of the function call
21885*/
21886WDI_Status
21887WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021888(
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 WDI_ControlBlockType* pWDICtx,
21890 WDI_EventInfoType* pEventData
21891)
21892{
21893 WDI_FTMCommandRspCb ftmCMDRspCb;
21894 tProcessPttRspParams *ftmCMDRspData = NULL;
21895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21896
21897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 -------------------------------------------------------------------------*/
21900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21901 ( NULL == pEventData->pEventData))
21902 {
21903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 }
21908
21909 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21910
21911 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21912
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21914 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21916
21917 /*Notify UMAC*/
21918 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21919
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921}
Jeff Johnson295189b2012-06-20 16:38:30 -070021922/**
21923 @brief WDI_ProcessHalDumpCmdReq
21924 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021925
21926 @param pWDICtx: pointer to the WLAN DAL context
21927 pEventData: pointer to the event information structure
21928
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 @see
21930 @return Result of the function call
21931*/
21932WDI_Status
21933WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021934(
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 WDI_ControlBlockType* pWDICtx,
21936 WDI_EventInfoType* pEventData
21937)
21938{
21939 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21940 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21941 wpt_uint16 usDataOffset = 0;
21942 wpt_uint16 usSendSize = 0;
21943 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021945
21946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 -------------------------------------------------------------------------*/
21949 if (( NULL == pEventData ) ||
21950 ( NULL == pEventData->pEventData) ||
21951 ( NULL == pEventData->pCBfnc ))
21952 {
21953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 }
21958
21959 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21960 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21961
21962 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021967 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021970 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021971 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021973
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 /*-----------------------------------------------------------------------
21975 Get message buffer
21976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21979 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21982 {
21983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021984 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 }
21989
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 wpalMemoryCopy( pSendBuffer+usDataOffset,
21991 &halDumpCmdReqMsg.dumpCmdReqParams,
21992 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021993
21994 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021995 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021996
21997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022000 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22001 wdiHALDumpCmdRspCb, pEventData->pUserData,
22002 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022003}
22004
22005/**
22006 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 Process hal Dump Command Response from HAL, simply route to HDD
22008
22009 @param pWDICtx: pointer to the WLAN DAL context
22010 pEventData: pointer to the event information structure
22011
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 @see
22013 @return Result of the function call
22014*/
22015WDI_Status
22016WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022017(
Jeff Johnson295189b2012-06-20 16:38:30 -070022018 WDI_ControlBlockType* pWDICtx,
22019 WDI_EventInfoType* pEventData
22020)
22021{
22022 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022023 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22025
22026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 -------------------------------------------------------------------------*/
22029 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22030 ( NULL == pEventData->pEventData))
22031 {
22032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 }
22037
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022039
22040 /*Initialize the WDI Response structure */
22041 wdiHALDumpCmdRsp.usBufferLen = 0;
22042 wdiHALDumpCmdRsp.pBuffer = NULL;
22043
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022044 wpalMemoryCopy( &halDumpCmdRspParams,
22045 pEventData->pEventData,
22046 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022047
22048 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022049 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022050
22051 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022052 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 {
22054 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022055 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22056 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22057
22058 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22059 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022060 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022061 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022062
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 /*Notify UMAC*/
22064 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22065
22066 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22067 {
22068 /* Free the allocated buffer */
22069 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22070 }
22071 return WDI_STATUS_SUCCESS;
22072}
22073
22074/*==========================================================================
22075 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022076
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022078 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022079==========================================================================*/
22080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022081 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022082 when it wishes to send up a notification like the ones
22083 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022084
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022086
22087 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022088 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 wctsNotifyCBData: the callback data of the user
22090
Jeff Johnson295189b2012-06-20 16:38:30 -070022091 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022092
22093 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022094*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022095void
Jeff Johnson295189b2012-06-20 16:38:30 -070022096WDI_NotifyMsgCTSCB
22097(
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 WCTS_NotifyEventType wctsEvent,
22100 void* wctsNotifyCBData
22101)
22102{
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22105
22106 if (NULL == pWDICtx )
22107 {
22108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 }
22113
22114 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22115 {
22116 /* callback presumably occurred after close */
22117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022118 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 }
22121
22122 if ( WCTS_EVENT_OPEN == wctsEvent )
22123 {
22124 /*Flag must be set atomically as it is checked from incoming request
22125 functions*/
22126 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022127 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022128
22129 /*Nothing to do - so try to dequeue any pending request that may have
22130 occurred while we were trying to establish this*/
22131 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 {
22136 /*Flag must be set atomically as it is checked from incoming request
22137 functions*/
22138 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022140
22141 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 wpalMutexRelease(&pWDICtx->wptMutex);
22144
22145 /*Notify that the Control Channel is closed */
22146 wpalEventSet(&pWDICtx->wctsActionEvent);
22147 }
22148
22149}/*WDI_NotifyMsgCTSCB*/
22150
22151
22152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 when it wishes to send up a packet received over the
22155 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022156
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022158
22159 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 pMsg: the packet
22161 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022162 wctsRxMsgCBData: the callback data of the user
22163
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022165
22166 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022167*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022168void
22169WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022170(
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 void* pMsg,
22173 wpt_uint32 uLen,
22174 void* wctsRxMsgCBData
22175)
22176{
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 tHalMsgHeader *pHalMsgHeader;
22178 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22181
22182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022183 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 ( uLen < sizeof(tHalMsgHeader)))
22187 {
22188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 }
22193
22194 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22195 {
22196 /* callback presumably occurred after close */
22197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022198 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022199 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022200 }
22201
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 context - so no serialization is necessary here
22204 ! - revisit this assumption */
22205
22206 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22207
22208 if ( uLen != pHalMsgHeader->msgLen )
22209 {
22210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22211 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022213 wpalWlanReload();
22214
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 }
22217
22218 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22219
22220 /*The message itself starts after the header*/
22221 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22222 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22223 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22224 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22225
22226
22227 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22228 {
22229 /*Stop the timer as the response was received */
22230 /*!UT - check for potential race conditions between stop and response */
22231 wpalTimerStop(&pWDICtx->wptResponseTimer);
22232 }
22233 /* Check if we receive a response message which is not expected */
22234 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22235 {
22236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22237 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22238 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22241 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022242
22243 if (gWDICb.bEnableSSR == false)
22244 {
22245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22246 "SSR is not enabled on WDI timeout");
22247 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22248 return;
22249 }
22250 wpalWcnssResetIntr();
22251 /* if this timer fires, it means Riva did not receive the FIQ */
22252 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22253
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 return;
22255 }
22256
22257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22258 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22259
22260 /*Post response event to the state machine*/
22261 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22262
22263}/*WDI_RXMsgCTSCB*/
22264
22265
22266/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022268========================================================================*/
22269
22270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022273
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 @param pWDICtx - pointer to the control block
22275
22276 @return Result of the function call
22277*/
22278WPT_INLINE WDI_Status
22279WDI_CleanCB
22280(
22281 WDI_ControlBlockType* pWDICtx
22282)
22283{
22284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22285
22286 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022288
Jeff Johnsone7245742012-09-05 17:12:55 -070022289 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22291 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22292
22293 WDI_ResetAssocSessions( pWDICtx );
22294
22295 return WDI_STATUS_SUCCESS;
22296}/*WDI_CleanCB*/
22297
22298
22299/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302
22303 @param pWDICtx: pointer to the WLAN DAL context
22304 pEventData: pointer to the event information structure
22305
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 @see
22307 @return Result of the function call
22308*/
22309WPT_INLINE WDI_Status
22310WDI_ProcessRequest
22311(
22312 WDI_ControlBlockType* pWDICtx,
22313 WDI_EventInfoType* pEventData
22314)
22315{
22316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22317
Jeff Johnsone7245742012-09-05 17:12:55 -070022318 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022319 already checked these pointers*/
22320
22321 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22322 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022325 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 WDI_getReqMsgString(pEventData->wdiRequest),
22327 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22328 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22329 }
22330 else
22331 {
22332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022333 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 pEventData->wdiRequest);
22335 return WDI_STATUS_E_NOT_IMPLEMENT;
22336 }
22337}/*WDI_ProcessRequest*/
22338
22339
22340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 prefixes it with a send message header
22344
22345 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 wdiReqType: type of the request being sent
22347 uBufferLen: message buffer len
22348 pMsgBuffer: resulting allocated buffer
22349 pusDataOffset: offset in the buffer where the caller
22350 can start copying its message data
22351 puBufferSize: the resulting buffer size (offset+buff
22352 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022353
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 @see
22355 @return Result of the function call
22356*/
22357WDI_Status
22358WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022359(
22360 WDI_ControlBlockType* pWDICtx,
22361 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022363 wpt_uint8** pMsgBuffer,
22364 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 wpt_uint16* pusBufferSize
22366)
22367{
22368 tHalMsgHeader halMsgHeader;
22369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22370
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 again*/
22373
22374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22379 if ( NULL == *pMsgBuffer )
22380 {
22381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22382 "Unable to allocate message buffer for req %s (%d)",
22383 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022387 }
22388
22389 /*-------------------------------------------------------------------------
22390 Fill in the message header
22391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22393 /* Fill msgVersion */
22394#ifdef WLAN_FEATURE_11AC
22395 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022396 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 else
22398#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022399 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22402 *pusDataOffset = sizeof(halMsgHeader);
22403 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22404
22405 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022406}/*WDI_GetMessageBuffer*/
22407
22408
22409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 the CB
22413
22414 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022416
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 usSendSize size of the buffer to be sent
22418 pRspCb: response callback - save in the WDI
22419 CB
22420 pUserData: user data associated with the
22421 callback
22422 wdiExpectedResponse: the code of the response that is
22423 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022424
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 @see
22426 @return Result of the function call
22427*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022428WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022429WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022430(
22431 WDI_ControlBlockType* pWDICtx,
22432 wpt_uint8* pSendBuffer,
22433 wpt_uint32 usSendSize,
22434 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 void* pUserData,
22436 WDI_ResponseEnumType wdiExpectedResponse
22437)
22438{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022439 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022440 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22442
22443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022444 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022445 ------------------------------------------------------------------------*/
22446 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 pWDICtx->pfncRspCB = pRspCb;
22448 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449
22450 /*-----------------------------------------------------------------------
22451 Call the CTS to send this message over - free message afterwards
22452 - notify transport failure
22453 Note: CTS is reponsible for freeing the message buffer.
22454 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022455 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22456 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22457 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022460 "Failed to send message with expected response %s (%d)"
22461 " over the bus - catastrophic failure",
22462 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22463 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022464
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022465 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22466 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022468 else
22469 {
22470 /* even when message was placed in CTS deferred Q, we will treat it
22471 success but log this info
22472 */
22473 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22474 {
22475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22476 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22477 "response %s (%d)",
22478 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22479 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022480 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022481 }
22482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022483
Jeff Johnsond13512a2012-07-17 11:42:19 -070022484 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 if ( NULL != pWDICtx->wdiReqStatusCB )
22486 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022487 /*Inform originator whether request went through or not*/
22488 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22489 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 pWDICtx->wdiReqStatusCB = NULL;
22491 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022492 callback(wdiStatus, callbackContext);
22493
22494 /*For WDI requests which have registered a request callback,
22495 inform the WDA caller of the same via setting the return value
22496 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22497 end up repeating the functonality in the req callback for the
22498 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022499 if (wdiStatus != WDI_STATUS_SUCCESS)
22500 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022501 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022502 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 }
22504
Jeff Johnsond13512a2012-07-17 11:42:19 -070022505 if ( wdiStatus == WDI_STATUS_SUCCESS )
22506 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022507 /*Start timer for the expected response */
22508 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022509
22510 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022511 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022512 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022513 }
22514 else
22515 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022516 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022517 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22518 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022519
Jeff Johnsond13512a2012-07-17 11:42:19 -070022520 return wdiStatus;
22521
Jeff Johnson295189b2012-06-20 16:38:30 -070022522}/*WDI_SendMsg*/
22523
22524
22525
22526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022527 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 the bus using the control transport and saves some info
22529 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022530
22531 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 pSendBuffer: buffer to be sent
22533 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022534
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 @see
22536 @return Result of the function call
22537*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022538WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022539WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022540(
22541 WDI_ControlBlockType* pWDICtx,
22542 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 wpt_uint32 usSendSize
22544)
22545{
22546 wpt_uint32 uStatus ;
22547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22548
22549 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 Note: CTS is reponsible for freeing the message buffer.
22552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022553 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 (void*)pSendBuffer, usSendSize );
22555
22556 /*Inform Upper MAC about the outcome of the request*/
22557 if ( NULL != pWDICtx->wdiReqStatusCB )
22558 {
22559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22560 "Send indication status : %d", uStatus);
22561
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022562 /* even if CTS placed indication into its deferred Q, we treat it
22563 * as success and let CTS drain its queue as per smd interrupt to CTS
22564 */
22565 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 -070022566 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 }
22568
22569 /*If sending of the message failed - it is considered catastrophic and
22570 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022571 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22572 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22573
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 {
22575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022577
22578 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22579 return WDI_STATUS_E_FAILURE;
22580 }
22581
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022583}/*WDI_SendIndication*/
22584
22585
22586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 @brief WDI_DetectedDeviceError - called internally by DAL when
22588 it has detected a failure in the device
22589
22590 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022591 usErrorCode: error code detected by WDI or received
22592 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022593
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022596*/
22597void
22598WDI_DetectedDeviceError
22599(
22600 WDI_ControlBlockType* pWDICtx,
22601 wpt_uint16 usErrorCode
22602)
22603{
22604 WDI_LowLevelIndType wdiInd;
22605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22606
22607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22608 "Device Error detected code: %d - transitioning to stopped state",
22609 usErrorCode);
22610
Katya Nigamf02ad012014-05-05 16:12:49 +053022611 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22612
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 wpalMutexAcquire(&pWDICtx->wptMutex);
22614
22615 WDI_STATableStop(pWDICtx);
22616
22617 WDI_ResetAssocSessions(pWDICtx);
22618
22619 /*Set the expected state transition to stopped - because the device
22620 experienced a failure*/
22621 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22622
22623 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022625
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022627
22628 /*TO DO: - there should be an attempt to reset the device here*/
22629
22630 wpalMutexRelease(&pWDICtx->wptMutex);
22631
22632 /*------------------------------------------------------------------------
22633 Notify UMAC if a handler is registered
22634 ------------------------------------------------------------------------*/
22635 if (pWDICtx->wdiLowLevelIndCB)
22636 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022637 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22638 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022639
22640 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22641 }
22642}/*WDI_DetectedDeviceError*/
22643
22644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 we started on send message has expire - this should
22647 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 reply - trigger catastrophic failure
22649 @param
22650
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022652
22653 @see
22654 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022655*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022656void
Jeff Johnson295189b2012-06-20 16:38:30 -070022657WDI_ResponseTimerCB
22658(
22659 void *pUserData
22660)
22661{
22662 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22664
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022665 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 }
22672
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022673 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022674 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022675 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022676
22677 /* If response timer is running at this time that means this timer
22678 * event is not for the last request but rather last-to-last request and
22679 * this timer event has come after we recevied respone for last-to-last
22680 * message
22681 */
22682 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22683 {
22684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22685 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022686 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022687 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22689 "uArchTimeStampTmrStart: %llu seconds, "
22690 "uArchTimeStampTmrExp: %llu seconds",
22691 pWDICtx->uArchTimeStampRspTmrStart,
22692 pWDICtx->uArchTimeStampRspTmrExp);
22693
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022694 return;
22695 }
22696
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022697 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 {
22699
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022702 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022704 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22705 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22707 "uArchTimeStampTmrStart: %llu seconds, "
22708 "uArchTimeStampTmrExp: %llu seconds",
22709 pWDICtx->uArchTimeStampRspTmrStart,
22710 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022711
22712 /* WDI timeout means Riva is not responding or SMD communication to Riva
22713 * is not happening. The only possible way to recover from this error
22714 * is to initiate SSR from APPS.
22715 * There is also an option to re-enable wifi, which will eventually
22716 * trigger SSR
22717 */
22718 if (gWDICb.bEnableSSR == false)
22719 {
22720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22721 "SSR is not enabled on WDI timeout");
22722 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22723 return;
22724 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022725#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022726 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053022727 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053022728 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022729 if(wpalIsSsrPanicOnFailure())
22730 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022731 } else {
22732 /* if this timer fires, it means Riva did not receive the FIQ */
22733 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022734 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022735#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022736 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22737 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022738#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 }
22740 else
22741 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022743 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022744 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022745 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22746 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22748 "uArchTimeStampTmrStart: %llu seconds, "
22749 "uArchTimeStampTmrExp: %llu seconds",
22750 pWDICtx->uArchTimeStampRspTmrStart,
22751 pWDICtx->uArchTimeStampRspTmrExp);
22752
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 }
22754
22755 return;
22756
22757}/*WDI_ResponseTimerCB*/
22758
22759
22760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022762
Jeff Johnsone7245742012-09-05 17:12:55 -070022763
22764 @param pWDICtx: pointer to the WLAN DAL context
22765 pEventData: pointer to the event information structure
22766
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 @see
22768 @return Result of the function call
22769*/
22770WPT_INLINE WDI_Status
22771WDI_ProcessResponse
22772(
22773 WDI_ControlBlockType* pWDICtx,
22774 WDI_EventInfoType* pEventData
22775)
22776{
22777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22778
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 already checked these pointers
22781 ! - revisit this assumption */
22782 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22783 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022786 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 WDI_getRespMsgString(pEventData->wdiResponse),
22788 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22789 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22790 }
22791 else
22792 {
22793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 pEventData->wdiResponse);
22796 return WDI_STATUS_E_NOT_IMPLEMENT;
22797 }
22798}/*WDI_ProcessResponse*/
22799
22800
22801/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022803=========================================================================*/
22804
22805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 @brief Utility function used by the DAL Core to help queue a
22807 request that cannot be processed right away.
22808 @param
22809
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 pWDICtx: - pointer to the WDI control block
22811 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 queued
22813
22814 @see
22815 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022816*/
22817WDI_Status
22818WDI_QueuePendingReq
22819(
22820 WDI_ControlBlockType* pWDICtx,
22821 WDI_EventInfoType* pEventData
22822)
22823{
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22828
22829 if ( NULL == pEventDataQueue )
22830 {
22831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 WDI_ASSERT(0);
22834 return WDI_STATUS_MEM_FAILURE;
22835 }
22836
22837 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22838 pEventDataQueue->pUserData = pEventData->pUserData;
22839 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22840 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022841 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842
22843 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22844 {
22845 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022846
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 if ( NULL == pEventInfo )
22848 {
22849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 WDI_ASSERT(0);
22852 wpalMemoryFree(pEventDataQueue);
22853 return WDI_STATUS_MEM_FAILURE;
22854 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022855
Jeff Johnson295189b2012-06-20 16:38:30 -070022856 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22857
22858 }
22859 pEventDataQueue->pEventData = pEventInfo;
22860
22861 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022862 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022863
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022864 if (eWLAN_PAL_STATUS_E_FAILURE ==
22865 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22866 {
22867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22868 "pEventDataQueue wpal_list_insert_back failed");
22869 WDI_ASSERT(0);
22870 wpalMemoryFree(pEventDataQueue);
22871 wpalMemoryFree(pEventInfo);
22872 return WDI_STATUS_MEM_FAILURE;
22873 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022874
22875 return WDI_STATUS_SUCCESS;
22876}/*WDI_QueuePendingReq*/
22877
22878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 @param
22882
22883 pMsg - pointer to the message
22884
22885 @see
22886 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022887*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022888void
Jeff Johnson295189b2012-06-20 16:38:30 -070022889WDI_PALCtrlMsgCB
22890(
22891 wpt_msg *pMsg
22892)
22893{
22894 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 WDI_ControlBlockType* pWDICtx = NULL;
22896 WDI_Status wdiStatus;
22897 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022898 void* pUserData;
22899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22900
22901 if (( NULL == pMsg )||
22902 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22903 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22904 {
22905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022906 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022908 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 }
22910
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022911 /*Access to the global state must be locked */
22912 wpalMutexAcquire(&pWDICtx->wptMutex);
22913
Jeff Johnson295189b2012-06-20 16:38:30 -070022914 /*Transition back to the state that we had before serialization
22915 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022916 */
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053022918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022919
22920 /*-----------------------------------------------------------------------
22921 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022922 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022923 -----------------------------------------------------------------------*/
22924 switch ( pEventData->wdiRequest )
22925 {
22926
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22929 break;
22930
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 case WDI_NV_DOWNLOAD_REQ:
22932 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22933 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22934 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22935 {
22936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022937 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22939 }
22940 else
22941 {
22942 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22943 }
22944
22945 break;
22946
22947 default:
22948 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22949 break;
22950 }/*switch ( pEventData->wdiRequest )*/
22951
22952 if ( WDI_STATUS_SUCCESS != wdiStatus )
22953 {
22954 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22955
22956 if ( NULL != pfnReqStatusCB )
22957 {
22958 /*Fail the request*/
22959 pfnReqStatusCB( wdiStatus, pUserData);
22960 }
22961 }
22962
22963 /* Free data - that was allocated when queueing*/
22964 if( pEventData != NULL )
22965 {
22966 if( pEventData->pEventData != NULL )
22967 {
22968 wpalMemoryFree(pEventData->pEventData);
22969 }
22970 wpalMemoryFree(pEventData);
22971 }
22972
22973 if( pMsg != NULL )
22974 {
22975 wpalMemoryFree(pMsg);
22976 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022977
Jeff Johnson295189b2012-06-20 16:38:30 -070022978}/*WDI_PALCtrlMsgCB*/
22979
22980/**
22981 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 and schedule for execution a pending request
22983 @param
22984
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 pWDICtx: - pointer to the WDI control block
22986 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 queued
22988
22989 @see
22990 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022991*/
22992WDI_Status
22993WDI_DequeuePendingReq
22994(
22995 WDI_ControlBlockType* pWDICtx
22996)
22997{
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023000 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23002
Jeff Johnsone7245742012-09-05 17:12:55 -070023003 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023004
23005 if ( NULL == pNode )
23006 {
23007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023008 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023009 return WDI_STATUS_SUCCESS;
23010 }
23011
23012 /*The node actually points to the 1st element inside the Event Data struct -
23013 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023015
23016 /*Serialize processing in the control thread
23017 !TO DO: - check to see if these are all the messages params that need
23018 to be filled in*/
23019 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23020
23021 if ( NULL == palMsg )
23022 {
23023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 palMsg->callback = WDI_PALCtrlMsgCB;
23030 palMsg->ptr = pEventData;
23031
23032 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023033 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023034 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023035
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 /*Transition back to BUSY as we need to handle a queued request*/
23037 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023038
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23040
23041 return WDI_STATUS_PENDING;
23042}/*WDI_DequeuePendingReq*/
23043
23044
23045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 away.- The assoc requests will be queued by BSSID
23049 @param
23050
Jeff Johnson295189b2012-06-20 16:38:30 -070023051 pWDICtx: - pointer to the WDI control block
23052 pEventData: pointer to the evnt info that needs to be queued
23053 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023054
23055 @see
23056 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023057*/
23058WDI_Status
23059WDI_QueueNewAssocRequest
23060(
23061 WDI_ControlBlockType* pWDICtx,
23062 WDI_EventInfoType* pEventData,
23063 wpt_macAddr macBSSID
23064)
23065{
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 wpt_uint8 i;
23067 WDI_BSSSessionType* pSession = NULL;
23068 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 void* pEventInfo;
23071 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023073
Jeff Johnsone7245742012-09-05 17:12:55 -070023074
23075 /*------------------------------------------------------------------------
23076 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 ------------------------------------------------------------------------*/
23078 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23079 {
23080 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23081 {
23082 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 pSession = &pWDICtx->aBSSSessions[i];
23084 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 }
23086 }
23087
23088 if ( i >= WDI_MAX_BSS_SESSIONS )
23089 {
23090 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023093
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 /*------------------------------------------------------------------------
23095 Fill in the BSSID for this session and set the usage flag
23096 ------------------------------------------------------------------------*/
23097 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023099
23100 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 ------------------------------------------------------------------------*/
23103 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23104 if ( NULL == pEventDataQueue )
23105 {
23106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023107 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 WDI_ASSERT(0);
23109 return WDI_STATUS_MEM_FAILURE;
23110 }
23111
23112 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23113 if ( NULL == pSessionIdElement )
23114 {
23115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023116 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 WDI_ASSERT(0);
23118 wpalMemoryFree(pEventDataQueue);
23119 return WDI_STATUS_MEM_FAILURE;
23120 }
23121
23122 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23123 if ( NULL == pEventInfo )
23124 {
23125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023126 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023127 WDI_ASSERT(0);
23128 wpalMemoryFree(pSessionIdElement);
23129 wpalMemoryFree(pEventDataQueue);
23130 return WDI_STATUS_MEM_FAILURE;
23131 }
23132
23133 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23134 pEventDataQueue->pUserData = pEventData->pUserData;
23135 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23136 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023137 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023138
23139 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23140 pEventDataQueue->pEventData = pEventInfo;
23141
23142 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023144
23145 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023146 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023147
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023148 if (eWLAN_PAL_STATUS_E_FAILURE ==
23149 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23150 {
23151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23152 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23153 WDI_ASSERT(0);
23154 wpalMemoryFree(pSessionIdElement);
23155 wpalMemoryFree(pEventDataQueue);
23156 wpalMemoryFree(pEventInfo);
23157 return WDI_STATUS_MEM_FAILURE;
23158 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023159
23160 /*We need to maintain a separate list that keeps track of the order in which
23161 the new assoc requests are being queued such that we can start processing
23162 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 pSessionIdElement->ucIndex = i;
23164 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023165
23166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23167 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023168 if (eWLAN_PAL_STATUS_E_FAILURE ==
23169 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23170 {
23171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23172 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23173 WDI_ASSERT(0);
23174 wpalMemoryFree(pSessionIdElement);
23175 wpalMemoryFree(pEventDataQueue);
23176 wpalMemoryFree(pEventInfo);
23177 return WDI_STATUS_MEM_FAILURE;
23178 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023179
23180 /*Return pending as this is what the status of the request is since it has
23181 been queued*/
23182 return WDI_STATUS_PENDING;
23183}/*WDI_QueueNewAssocRequest*/
23184
23185/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 away.- The assoc requests will be queued by BSSID
23189 @param
23190
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 pWDICtx: - pointer to the WDI control block
23192 pSession: - session in which to queue
23193 pEventData: pointer to the event info that needs to be
23194 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023195
23196 @see
23197 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023198*/
23199WDI_Status
23200WDI_QueueAssocRequest
23201(
23202 WDI_ControlBlockType* pWDICtx,
23203 WDI_BSSSessionType* pSession,
23204 WDI_EventInfoType* pEventData
23205)
23206{
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023211
23212 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 Sanity check
23214 ------------------------------------------------------------------------*/
23215 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23216 {
23217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023219
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023221 }
23222
23223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 ------------------------------------------------------------------------*/
23226 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23227 if ( NULL == pEventDataQueue )
23228 {
23229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023230 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 WDI_ASSERT(0);
23232 return WDI_STATUS_MEM_FAILURE;
23233 }
23234
23235 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23236 if ( NULL == pEventInfo )
23237 {
23238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23239 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023240 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 WDI_ASSERT(0);
23242 wpalMemoryFree(pEventDataQueue);
23243 return WDI_STATUS_MEM_FAILURE;
23244 }
23245
23246 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23247 pEventDataQueue->pUserData = pEventData->pUserData;
23248 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23249 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 pEventDataQueue->pEventData = pEventInfo;
23252
23253 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23254
23255 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023257
23258 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023259 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023260
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023261 if (eWLAN_PAL_STATUS_E_FAILURE ==
23262 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23263 {
23264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23265 "%s: Cannot allocate memory for queueing event data info",
23266 __func__);
23267 WDI_ASSERT(0);
23268 wpalMemoryFree(pEventDataQueue);
23269 wpalMemoryFree(pEventInfo);
23270 return WDI_STATUS_MEM_FAILURE;
23271 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023272
23273 /*The result of this operation is pending because the request has been
23274 queued and it will be processed at a later moment in time */
23275 return WDI_STATUS_PENDING;
23276}/*WDI_QueueAssocRequest*/
23277
23278/**
23279 @brief Utility function used by the DAL Core to help dequeue
23280 an association request that was pending
23281 The request will be queued up in front of the main
23282 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 @param
23284
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023286
23287
23288 @see
23289 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023290*/
23291WDI_Status
23292WDI_DequeueAssocRequest
23293(
23294 WDI_ControlBlockType* pWDICtx
23295)
23296{
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 wpt_list_node* pNode = NULL;
23298 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 WDI_BSSSessionType* pSession;
23300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023301
23302 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 Sanity check
23304 ------------------------------------------------------------------------*/
23305 if ( NULL == pWDICtx )
23306 {
23307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023309
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 }
23312
23313 /*------------------------------------------------------------------------
23314 An association has been completed => a new association can occur
23315 Check to see if there are any pending associations ->
23316 If so , transfer all the pending requests into the busy queue for
23317 processing
23318 These requests have arrived prior to the requests in the busy queue
23319 (bc they needed to be processed in order to be placed in this queue)
23320 => they will be placed at the front of the busy queue
23321 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023323
23324 if ( NULL == pNode )
23325 {
23326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 return WDI_STATUS_SUCCESS;
23329 }
23330
23331 /*The node actually points to the 1st element inside the Session Id struct -
23332 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023334
23335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23336 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23337
23338 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23339 {
23340 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023341
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 the front of the main waiting queue for subsequent execution*/
23344 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 while ( NULL != pNode )
23346 {
23347 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23349 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023351 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 }
23353 else
23354 {
23355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 WPAL_ASSERT(0);
23358 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023361
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23363 wpalMemoryFree(pSessionIdElement);
23364 return WDI_STATUS_SUCCESS;
23365}/*WDI_DequeueAssocRequest*/
23366
23367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 pending requests - all req cb will be called with
23370 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 @param
23372
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023374
23375 @see
23376 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023377*/
23378WDI_Status
23379WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023380(
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 WDI_ControlBlockType* pWDICtx
23382)
23383{
Jeff Johnsone7245742012-09-05 17:12:55 -070023384 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 void* pUserData;
23388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23389
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023391
23392 /*------------------------------------------------------------------------
23393 Go through all the requests and fail them - this will only be called
23394 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 ------------------------------------------------------------------------*/
23397 while( pNode )
23398 {
23399 /*The node actually points to the 1st element inside the Event Data struct -
23400 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023401 pEventDataQueue = (WDI_EventInfoType*)pNode;
23402
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23404 if ( NULL != pfnReqStatusCB )
23405 {
23406 /*Fail the request*/
23407 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23408 }
23409 /* Free data - that was allocated when queueing */
23410 if ( pEventDataQueue->pEventData != NULL )
23411 {
23412 wpalMemoryFree(pEventDataQueue->pEventData);
23413 }
23414 wpalMemoryFree(pEventDataQueue);
23415
23416 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23417 {
23418 break;
23419 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 }
23421
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 return WDI_STATUS_SUCCESS;
23423}/*WDI_ClearPendingRequests*/
23424
23425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 @brief Helper routine used to init the BSS Sessions in the WDI control block
23427
23428
23429 @param pWDICtx: pointer to the WLAN DAL context
23430
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 @see
23432*/
23433void
23434WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023435(
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 WDI_ControlBlockType* pWDICtx
23437)
23438{
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23441
23442 /*-------------------------------------------------------------------------
23443 No Sanity check
23444 -------------------------------------------------------------------------*/
23445 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23446 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23449 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23450 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23451 }
23452}/*WDI_ResetAssocSessions*/
23453
23454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023455 @brief Helper routine used to find a session based on the BSSID
23456
23457
23458 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 pSession: pointer to the session (if found)
23461
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023464*/
23465wpt_uint8
23466WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023467(
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 WDI_ControlBlockType* pWDICtx,
23469 wpt_macAddr macBSSID,
23470 WDI_BSSSessionType** ppSession
23471)
23472{
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23475
23476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 -------------------------------------------------------------------------*/
23479 if ( NULL == ppSession )
23480 {
23481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023482 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 }
23485
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 /*------------------------------------------------------------------------
23489 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 ------------------------------------------------------------------------*/
23491 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23492 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023493 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23494 (eWLAN_PAL_TRUE ==
23495 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23496 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 {
23498 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023499 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 return i;
23501 }
23502 }
23503
Jeff Johnsone7245742012-09-05 17:12:55 -070023504 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023505}/*WDI_FindAssocSession*/
23506
23507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023508 @brief Helper routine used to find a session based on the BSSID
23509
23510
23511 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 ucBSSIdx: BSS Index of the session
23513 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023514
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023516 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023517*/
23518wpt_uint8
23519WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023520(
Jeff Johnson295189b2012-06-20 16:38:30 -070023521 WDI_ControlBlockType* pWDICtx,
23522 wpt_uint16 ucBSSIdx,
23523 WDI_BSSSessionType** ppSession
23524)
23525{
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23528
23529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023531 -------------------------------------------------------------------------*/
23532 if ( NULL == ppSession )
23533 {
23534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023535 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 }
23538
Jeff Johnsone7245742012-09-05 17:12:55 -070023539 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023540
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 /*------------------------------------------------------------------------
23542 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 ------------------------------------------------------------------------*/
23544 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23545 {
23546 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23547 {
23548 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 return i;
23551 }
23552 }
23553
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023555}/*WDI_FindAssocSessionByBSSIdx*/
23556
23557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023558 @brief Helper routine used to find a session based on the BSSID
23559
23560
23561 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 ucBSSIdx: BSS Index of the session
23563 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023564
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023566 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023567*/
23568wpt_uint8
23569WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023570(
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 WDI_ControlBlockType* pWDICtx,
23572 wpt_uint16 usIdx,
23573 WDI_BSSSessionType** ppSession
23574)
23575{
23576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23577
23578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 -------------------------------------------------------------------------*/
23581 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23582 {
23583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023584 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 }
23587
23588 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023590
23591 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023592
Jeff Johnson295189b2012-06-20 16:38:30 -070023593}/*WDI_FindAssocSessionByBSSIdx*/
23594
23595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023598
23599
23600 @param pWDICtx: pointer to the WLAN DAL context
23601 pSession: pointer to the session (if found)
23602
Jeff Johnson295189b2012-06-20 16:38:30 -070023603 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023604 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023605*/
23606wpt_uint8
23607WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023608(
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 WDI_ControlBlockType* pWDICtx,
23610 WDI_BSSSessionType** ppSession
23611)
23612{
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 -------------------------------------------------------------------------*/
23618 if ( NULL == ppSession )
23619 {
23620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023621 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023623 }
23624
Jeff Johnsone7245742012-09-05 17:12:55 -070023625 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023626
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 /*------------------------------------------------------------------------
23628 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023629 ------------------------------------------------------------------------*/
23630 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23631 {
23632 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23633 {
23634 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 return i;
23637 }
23638 }
23639
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023641}/*WDI_FindEmptySession*/
23642
23643
23644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023646 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023647
23648
23649 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023650 macBSSID: pointer to BSSID. If NULL, get all the session.
23651 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23652 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23653 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 @see
23655 @return Number of sessions in use
23656*/
23657wpt_uint8
23658WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023659(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023660 WDI_ControlBlockType* pWDICtx,
23661 wpt_macAddr macBSSID,
23662 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023663)
23664{
Jeff Johnsone7245742012-09-05 17:12:55 -070023665 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023667
23668 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 Count all sessions in use
23670 ------------------------------------------------------------------------*/
23671 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23672 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023673 if ( macBSSID && skipBSSID &&
23674 (eWLAN_PAL_TRUE ==
23675 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23676 WDI_MAC_ADDR_LEN)))
23677 {
23678 continue;
23679 }
23680 else if ( pWDICtx->aBSSSessions[i].bInUse )
23681 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023683 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 }
23685
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023687}/*WDI_GetActiveSessionsCount*/
23688
23689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023692
23693
23694 @param pWDICtx: pointer to the WLAN DAL context
23695 pSession: pointer to the session (if found)
23696
Jeff Johnson295189b2012-06-20 16:38:30 -070023697 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023699*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023700void
Jeff Johnson295189b2012-06-20 16:38:30 -070023701WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023702(
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 WDI_ControlBlockType* pWDICtx,
23704 WDI_BSSSessionType* ppSession
23705)
23706{
23707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 -------------------------------------------------------------------------*/
23710 if ( NULL == ppSession )
23711 {
23712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023713 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 }
23716
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 /*------------------------------------------------------------------------
23718 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 ------------------------------------------------------------------------*/
23720 wpal_list_destroy(&ppSession->wptPendingQueue);
23721 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23723 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23725 wpal_list_init(&ppSession->wptPendingQueue);
23726
23727}/*WDI_DeleteSession*/
23728
23729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 @param
23733
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 WDI_AddStaParams: - pointer to the WDI Add STA params
23735 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023736
23737 @see
23738 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023739*/
23740void
23741WDI_AddBcastSTAtoSTATable
23742(
23743 WDI_ControlBlockType* pWDICtx,
23744 WDI_AddStaParams * staParams,
23745 wpt_uint16 usBcastStaIdx
23746)
23747{
23748 WDI_AddStaParams wdiAddSTAParam = {0};
23749 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23751
23752 /*---------------------------------------------------------------------
23753 Sanity check
23754 ---------------------------------------------------------------------*/
23755 if ( NULL == staParams )
23756 {
23757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023759
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 }
23762
23763 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23764 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23765 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23766 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23767 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23768 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23769 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23770 WDI_MAC_ADDR_LEN );
23771 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23772 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23773 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23774 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23775 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23776 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23777 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023778
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23780}
23781
23782/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 @brief NV blob will be divided into fragments of size 4kb and
23784 Sent to HAL
23785
23786 @param pWDICtx: pointer to the WLAN DAL context
23787 pEventData: pointer to the event information structure
23788
Jeff Johnson295189b2012-06-20 16:38:30 -070023789 @see
23790 @return Result of the function call
23791 */
23792
23793WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023794(
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 WDI_ControlBlockType* pWDICtx,
23796 WDI_EventInfoType* pEventData
23797)
23798{
23799
23800 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23801 wpt_uint8* pSendBuffer = NULL;
23802 wpt_uint16 usDataOffset = 0;
23803 wpt_uint16 usSendSize = 0;
23804 wpt_uint16 usCurrentFragmentSize =0;
23805 wpt_uint8* pSrcBuffer = NULL;
23806 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23807 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23808
23809 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23810 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23811 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23812
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23815
23816 /* Update the current Fragment Number */
23817 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23818
23819 /*Update the HAL REQ structure */
23820 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23821 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23822 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23823
23824 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 image will be sent to HAL*/
23827
Jeff Johnsone7245742012-09-05 17:12:55 -070023828 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023833 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23834 usCurrentFragmentSize = FRAGMENT_SIZE;
23835
23836 /*Update the HAL REQ structure */
23837 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23838 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23839
23840 }
23841 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 usCurrentFragmentSize = FRAGMENT_SIZE;
23844
23845 /*Update the HAL REQ structure */
23846 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23847 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23848 }
23849
23850 /*-----------------------------------------------------------------------
23851 Get message buffer
23852 -----------------------------------------------------------------------*/
23853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23854 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23855 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023857 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23858 {
23859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023860 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 pEventData, pwdiNvDownloadReqParams);
23862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 }
23865
23866 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23869
23870 /* Appending the NV image fragment */
23871 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23872 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23873 usCurrentFragmentSize);
23874
23875 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023877
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23879 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 WDI_NV_DOWNLOAD_RESP);
23881
23882}
Jeff Johnsone7245742012-09-05 17:12:55 -070023883/*============================================================================
23884 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 ============================================================================*/
23886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 @brief Helper routine used to find a session based on the BSSID
23888 @param pContext: pointer to the WLAN DAL context
23889 @param pDPContext: pointer to the Datapath context
23890
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023893*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023894WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023895WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23896{
23897 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23898
23899 pCB->pDPContext = pDPContext;
23900 return;
23901}
23902
23903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 @brief Helper routine used to find a session based on the BSSID
23905
23906
23907 @param pContext: pointer to the WLAN DAL context
23908
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 @see
23910 @return pointer to Datapath context
23911*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023912WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023913WDI_DS_GetDatapathContext (void *pContext)
23914{
23915 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23916 return pCB->pDPContext;
23917}
23918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 @brief Helper routine used to find a session based on the BSSID
23920
23921
23922 @param pContext: pointer to the WLAN DAL context
23923 @param pDTDriverContext: pointer to the Transport Driver context
23924
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 @see
23926 @return void
23927*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023928WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023929WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23930{
23931 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23932
23933 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023934 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023935}
23936
23937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 @brief Helper routine used to find a session based on the BSSID
23939
23940
23941 @param pWDICtx: pointer to the WLAN DAL context
23942
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023945*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023946WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023947WDT_GetTransportDriverContext (void *pContext)
23948{
23949 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023951}
23952
Jeff Johnsone7245742012-09-05 17:12:55 -070023953/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 Helper inline converters
23955 ============================================================================*/
23956/*Convert WDI driver type into HAL driver type*/
23957WPT_STATIC WPT_INLINE WDI_Status
23958WDI_HAL_2_WDI_STATUS
23959(
23960 eHalStatus halStatus
23961)
23962{
Jeff Johnsone7245742012-09-05 17:12:55 -070023963 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 the chances of getting inlined*/
23965 switch( halStatus )
23966 {
23967 case eHAL_STATUS_SUCCESS:
23968 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23969 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23970 return WDI_STATUS_SUCCESS;
23971 case eHAL_STATUS_FAILURE:
23972 return WDI_STATUS_E_FAILURE;
23973 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 return WDI_STATUS_MEM_FAILURE;
23975 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 default:
23978 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023980
Jeff Johnsone7245742012-09-05 17:12:55 -070023981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023982}/*WDI_HAL_2_WDI_STATUS*/
23983
23984/*Convert WDI request type into HAL request type*/
23985WPT_STATIC WPT_INLINE tHalHostMsgType
23986WDI_2_HAL_REQ_TYPE
23987(
23988 WDI_RequestEnumType wdiReqType
23989)
23990{
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 the chances of getting inlined*/
23993 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024000 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024001 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024006 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024009 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024014 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 return WLAN_HAL_RMV_STAKEY_REQ;
24030 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024031 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024032 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024035 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024036 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024038 case WDI_DEL_BA_REQ:
24039 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024040#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024041 case WDI_TSM_STATS_REQ:
24042 return WLAN_HAL_TSM_STATS_REQ;
24043#endif
24044 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024048 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 case WDI_ADD_BA_SESSION_REQ:
24055 return WLAN_HAL_ADD_BA_SESSION_REQ;
24056 case WDI_TRIGGER_BA_REQ:
24057 return WLAN_HAL_TRIGGER_BA_REQ;
24058 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024062 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24063 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24064 case WDI_SET_MAX_TX_POWER_REQ:
24065 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024066 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24067 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024068 case WDI_SET_TX_POWER_REQ:
24069 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24071 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024072#ifdef FEATURE_WLAN_TDLS
24073 case WDI_TDLS_LINK_ESTABLISH_REQ:
24074 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024075 case WDI_TDLS_CHAN_SWITCH_REQ:
24076 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024077#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024085 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024086 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024087 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 case WDI_REM_BEACON_FILTER_REQ:
24099 return WLAN_HAL_REM_BCN_FILTER_REQ;
24100 case WDI_SET_RSSI_THRESHOLDS_REQ:
24101 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24102 case WDI_HOST_OFFLOAD_REQ:
24103 return WLAN_HAL_HOST_OFFLOAD_REQ;
24104 case WDI_WOWL_ADD_BC_PTRN_REQ:
24105 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24106 case WDI_WOWL_DEL_BC_PTRN_REQ:
24107 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24108 case WDI_WOWL_ENTER_REQ:
24109 return WLAN_HAL_ENTER_WOWL_REQ;
24110 case WDI_WOWL_EXIT_REQ:
24111 return WLAN_HAL_EXIT_WOWL_REQ;
24112 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24113 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24114 case WDI_NV_DOWNLOAD_REQ:
24115 return WLAN_HAL_DOWNLOAD_NV_REQ;
24116 case WDI_FLUSH_AC_REQ:
24117 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24118 case WDI_BTAMP_EVENT_REQ:
24119 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24120#ifdef WLAN_FEATURE_VOWIFI_11R
24121 case WDI_AGGR_ADD_TS_REQ:
24122 return WLAN_HAL_AGGR_ADD_TS_REQ;
24123#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 case WDI_FTM_CMD_REQ:
24125 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 case WDI_ADD_STA_SELF_REQ:
24127 return WLAN_HAL_ADD_STA_SELF_REQ;
24128 case WDI_DEL_STA_SELF_REQ:
24129 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024130#ifdef FEATURE_OEM_DATA_SUPPORT
24131 case WDI_START_OEM_DATA_REQ:
24132 return WLAN_HAL_START_OEM_DATA_REQ;
24133#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 case WDI_HOST_RESUME_REQ:
24135 return WLAN_HAL_HOST_RESUME_REQ;
24136 case WDI_HOST_SUSPEND_IND:
24137 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024138 case WDI_TRAFFIC_STATS_IND:
24139 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024140#ifdef WLAN_FEATURE_11W
24141 case WDI_EXCLUDE_UNENCRYPTED_IND:
24142 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24143#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024144 case WDI_KEEP_ALIVE_REQ:
24145 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024146#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024147 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24148 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024149#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024150#ifdef FEATURE_WLAN_SCAN_PNO
24151 case WDI_SET_PREF_NETWORK_REQ:
24152 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24153 case WDI_SET_RSSI_FILTER_REQ:
24154 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24155 case WDI_UPDATE_SCAN_PARAMS_REQ:
24156 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24157#endif // FEATURE_WLAN_SCAN_PNO
24158 case WDI_SET_TX_PER_TRACKING_REQ:
24159 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24160#ifdef WLAN_FEATURE_PACKET_FILTERING
24161 case WDI_8023_MULTICAST_LIST_REQ:
24162 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24163 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024164 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24166 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24167 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24168 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24169#endif // WLAN_FEATURE_PACKET_FILTERING
24170 case WDI_HAL_DUMP_CMD_REQ:
24171 return WLAN_HAL_DUMP_COMMAND_REQ;
24172#ifdef WLAN_FEATURE_GTK_OFFLOAD
24173 case WDI_GTK_OFFLOAD_REQ:
24174 return WLAN_HAL_GTK_OFFLOAD_REQ;
24175 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24176 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24177#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24178
24179 case WDI_INIT_SCAN_CON_REQ:
24180 return WLAN_HAL_INIT_SCAN_CON_REQ;
24181 case WDI_SET_POWER_PARAMS_REQ:
24182 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24183 case WDI_SET_TM_LEVEL_REQ:
24184 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24185 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24186 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024187#ifdef WLAN_FEATURE_11AC
24188 case WDI_UPDATE_VHT_OP_MODE_REQ:
24189 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24190#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024191 case WDI_GET_ROAM_RSSI_REQ:
24192 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024193 case WDI_DHCP_START_IND:
24194 return WLAN_HAL_DHCP_START_IND;
24195 case WDI_DHCP_STOP_IND:
24196 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024197#ifdef FEATURE_WLAN_LPHB
24198 case WDI_LPHB_CFG_REQ:
24199 return WLAN_HAL_LPHB_CFG_REQ;
24200#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024201 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24202 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24203 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24204 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24205
Rajeev79dbe4c2013-10-05 11:03:42 +053024206#ifdef FEATURE_WLAN_BATCH_SCAN
24207 case WDI_SET_BATCH_SCAN_REQ:
24208 return WLAN_HAL_BATCHSCAN_SET_REQ;
24209 case WDI_STOP_BATCH_SCAN_IND:
24210 return WLAN_HAL_BATCHSCAN_STOP_IND;
24211 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24212 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24213#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024214 case WDI_RATE_UPDATE_IND:
24215 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024216 case WDI_START_HT40_OBSS_SCAN_IND:
24217 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24218 case WDI_STOP_HT40_OBSS_SCAN_IND:
24219 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024220 case WDI_UPDATE_CHAN_REQ:
24221 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024222 case WDI_CH_SWITCH_REQ_V1:
24223 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024224 case WDI_GET_BCN_MISS_RATE_REQ:
24225 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024226
24227#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24228 case WDI_LL_STATS_SET_REQ:
24229 return WLAN_HAL_LL_SET_STATS_REQ;
24230 case WDI_LL_STATS_GET_REQ:
24231 return WLAN_HAL_LL_GET_STATS_REQ;
24232 case WDI_LL_STATS_CLEAR_REQ:
24233 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24234#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024235#ifdef WLAN_FEATURE_EXTSCAN
24236 case WDI_EXTSCAN_START_REQ:
24237 return WLAN_HAL_EXT_SCAN_START_REQ;
24238 case WDI_EXTSCAN_STOP_REQ:
24239 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24240 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24241 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24242 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24243 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24244 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24245 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24246 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24247 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
24248 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
24249 return WLAN_HAL_SIG_RSSI_SET_REQ;
24250 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
24251 return WLAN_HAL_SIG_RSSI_RESET_REQ;
24252#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024253 case WDI_SPOOF_MAC_ADDR_REQ:
24254 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024255 case WDI_GET_FW_STATS_REQ:
24256 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024257 case WDI_ENCRYPT_MSG_REQ:
24258 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024259 case WDI_FW_LOGGING_INIT_REQ:
24260 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024261 case WDI_GET_FRAME_LOG_REQ:
24262 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024263 case WDI_NAN_REQUEST:
24264 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024265 case WDI_SET_RTS_CTS_HTVHT_IND:
24266 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024267 case WDI_MON_START_REQ:
24268 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24269 case WDI_MON_STOP_REQ:
24270 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024271 case WDI_FW_LOGGING_DXE_DONE_IND:
24272 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024273 case WDI_FATAL_EVENT_LOGGING_REQ:
24274 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
24275
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024279
Jeff Johnson295189b2012-06-20 16:38:30 -070024280}/*WDI_2_HAL_REQ_TYPE*/
24281
24282/*Convert WDI response type into HAL response type*/
24283WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24284HAL_2_WDI_RSP_TYPE
24285(
24286 tHalHostMsgType halMsg
24287)
24288{
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 the chances of getting inlined*/
24291 switch( halMsg )
24292 {
24293 case WLAN_HAL_START_RSP:
24294 return WDI_START_RESP;
24295 case WLAN_HAL_STOP_RSP:
24296 return WDI_STOP_RESP;
24297 case WLAN_HAL_INIT_SCAN_RSP:
24298 return WDI_INIT_SCAN_RESP;
24299 case WLAN_HAL_START_SCAN_RSP:
24300 return WDI_START_SCAN_RESP;
24301 case WLAN_HAL_END_SCAN_RSP:
24302 return WDI_END_SCAN_RESP;
24303 case WLAN_HAL_FINISH_SCAN_RSP:
24304 return WDI_FINISH_SCAN_RESP;
24305 case WLAN_HAL_CONFIG_STA_RSP:
24306 return WDI_CONFIG_STA_RESP;
24307 case WLAN_HAL_DELETE_STA_RSP:
24308 return WDI_DEL_STA_RESP;
24309 case WLAN_HAL_CONFIG_BSS_RSP:
24310 return WDI_CONFIG_BSS_RESP;
24311 case WLAN_HAL_DELETE_BSS_RSP:
24312 return WDI_DEL_BSS_RESP;
24313 case WLAN_HAL_JOIN_RSP:
24314 return WDI_JOIN_RESP;
24315 case WLAN_HAL_POST_ASSOC_RSP:
24316 return WDI_POST_ASSOC_RESP;
24317 case WLAN_HAL_SET_BSSKEY_RSP:
24318 return WDI_SET_BSS_KEY_RESP;
24319 case WLAN_HAL_SET_STAKEY_RSP:
24320 return WDI_SET_STA_KEY_RESP;
24321 case WLAN_HAL_RMV_BSSKEY_RSP:
24322 return WDI_RMV_BSS_KEY_RESP;
24323 case WLAN_HAL_RMV_STAKEY_RSP:
24324 return WDI_RMV_STA_KEY_RESP;
24325 case WLAN_HAL_SET_BCASTKEY_RSP:
24326 return WDI_SET_STA_BCAST_KEY_RESP;
24327 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24328 // return WDI_RMV_STA_BCAST_KEY_RESP;
24329 case WLAN_HAL_ADD_TS_RSP:
24330 return WDI_ADD_TS_RESP;
24331 case WLAN_HAL_DEL_TS_RSP:
24332 return WDI_DEL_TS_RESP;
24333 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24334 return WDI_UPD_EDCA_PRMS_RESP;
24335 case WLAN_HAL_ADD_BA_RSP:
24336 return WDI_ADD_BA_RESP;
24337 case WLAN_HAL_DEL_BA_RSP:
24338 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024339#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 case WLAN_HAL_TSM_STATS_RSP:
24341 return WDI_TSM_STATS_RESP;
24342#endif
24343 case WLAN_HAL_CH_SWITCH_RSP:
24344 return WDI_CH_SWITCH_RESP;
24345 case WLAN_HAL_SET_LINK_ST_RSP:
24346 return WDI_SET_LINK_ST_RESP;
24347 case WLAN_HAL_GET_STATS_RSP:
24348 return WDI_GET_STATS_RESP;
24349 case WLAN_HAL_UPDATE_CFG_RSP:
24350 return WDI_UPDATE_CFG_RESP;
24351 case WLAN_HAL_ADD_BA_SESSION_RSP:
24352 return WDI_ADD_BA_SESSION_RESP;
24353 case WLAN_HAL_TRIGGER_BA_RSP:
24354 return WDI_TRIGGER_BA_RESP;
24355 case WLAN_HAL_UPDATE_BEACON_RSP:
24356 return WDI_UPD_BCON_PRMS_RESP;
24357 case WLAN_HAL_SEND_BEACON_RSP:
24358 return WDI_SND_BCON_RESP;
24359 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24360 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24361 /*Indications*/
24362 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24363 return WDI_HAL_RSSI_NOTIFICATION_IND;
24364 case WLAN_HAL_MISSED_BEACON_IND:
24365 return WDI_HAL_MISSED_BEACON_IND;
24366 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24367 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24368 case WLAN_HAL_MIC_FAILURE_IND:
24369 return WDI_HAL_MIC_FAILURE_IND;
24370 case WLAN_HAL_FATAL_ERROR_IND:
24371 return WDI_HAL_FATAL_ERROR_IND;
24372 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24373 return WDI_HAL_DEL_STA_IND;
24374 case WLAN_HAL_COEX_IND:
24375 return WDI_HAL_COEX_IND;
24376 case WLAN_HAL_OTA_TX_COMPL_IND:
24377 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 case WLAN_HAL_P2P_NOA_ATTR_IND:
24379 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024380 case WLAN_HAL_P2P_NOA_START_IND:
24381 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024382 case WLAN_HAL_DEL_BA_IND:
24383 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 case WLAN_HAL_TX_PER_HIT_IND:
24385 return WDI_HAL_TX_PER_HIT_IND;
24386 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24387 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024388 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24389 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024390 case WLAN_HAL_SET_TX_POWER_RSP:
24391 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 case WLAN_HAL_SET_P2P_GONOA_RSP:
24393 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024394#ifdef FEATURE_WLAN_TDLS
24395 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24396 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024397 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24398 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024399 case WLAN_HAL_TDLS_IND:
24400 return WDI_HAL_TDLS_IND;
24401#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024404 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024406 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024407 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024413 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024417 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24421 return WDI_SET_BEACON_FILTER_RESP;
24422 case WLAN_HAL_REM_BCN_FILTER_RSP:
24423 return WDI_REM_BEACON_FILTER_RESP;
24424 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24425 return WDI_SET_RSSI_THRESHOLDS_RESP;
24426 case WLAN_HAL_HOST_OFFLOAD_RSP:
24427 return WDI_HOST_OFFLOAD_RESP;
24428 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24429 return WDI_WOWL_ADD_BC_PTRN_RESP;
24430 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24431 return WDI_WOWL_DEL_BC_PTRN_RESP;
24432 case WLAN_HAL_ENTER_WOWL_RSP:
24433 return WDI_WOWL_ENTER_RESP;
24434 case WLAN_HAL_EXIT_WOWL_RSP:
24435 return WDI_WOWL_EXIT_RESP;
24436 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24437 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24438 case WLAN_HAL_DOWNLOAD_NV_RSP:
24439 return WDI_NV_DOWNLOAD_RESP;
24440 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24441 return WDI_FLUSH_AC_RESP;
24442 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24443 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 case WLAN_HAL_PROCESS_PTT_RSP:
24445 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 case WLAN_HAL_ADD_STA_SELF_RSP:
24447 return WDI_ADD_STA_SELF_RESP;
24448case WLAN_HAL_DEL_STA_SELF_RSP:
24449 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024450#ifdef FEATURE_OEM_DATA_SUPPORT
24451 case WLAN_HAL_START_OEM_DATA_RSP:
24452 return WDI_START_OEM_DATA_RESP;
24453#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 case WLAN_HAL_HOST_RESUME_RSP:
24455 return WDI_HOST_RESUME_RESP;
24456 case WLAN_HAL_KEEP_ALIVE_RSP:
24457 return WDI_KEEP_ALIVE_RESP;
24458#ifdef FEATURE_WLAN_SCAN_PNO
24459 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24460 return WDI_SET_PREF_NETWORK_RESP;
24461 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024462 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024463 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24464 return WDI_UPDATE_SCAN_PARAMS_RESP;
24465 case WLAN_HAL_PREF_NETW_FOUND_IND:
24466 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24467#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024468#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024469 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24470 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024471#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24473 return WDI_SET_TX_PER_TRACKING_RESP;
24474#ifdef WLAN_FEATURE_PACKET_FILTERING
24475 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24476 return WDI_8023_MULTICAST_LIST_RESP;
24477 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24478 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24479 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24480 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24481 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24482 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24483#endif // WLAN_FEATURE_PACKET_FILTERING
24484
24485 case WLAN_HAL_DUMP_COMMAND_RSP:
24486 return WDI_HAL_DUMP_CMD_RESP;
24487 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24488 return WDI_SET_POWER_PARAMS_RESP;
24489#ifdef WLAN_FEATURE_VOWIFI_11R
24490 case WLAN_HAL_AGGR_ADD_TS_RSP:
24491 return WDI_AGGR_ADD_TS_RESP;
24492#endif
24493
24494#ifdef WLAN_FEATURE_GTK_OFFLOAD
24495 case WLAN_HAL_GTK_OFFLOAD_RSP:
24496 return WDI_GTK_OFFLOAD_RESP;
24497 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24498 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24499#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24500#ifdef WLAN_WAKEUP_EVENTS
24501 case WLAN_HAL_WAKE_REASON_IND:
24502 return WDI_HAL_WAKE_REASON_IND;
24503#endif // WLAN_WAKEUP_EVENTS
24504
24505 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24506 return WDI_SET_TM_LEVEL_RESP;
24507 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24508 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024509#ifdef WLAN_FEATURE_11AC
24510 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24511 return WDI_UPDATE_VHT_OP_MODE_RESP;
24512#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024513#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024514 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24515 return WDI_GET_ROAM_RSSI_RESP;
24516#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024517
Leo Chang9056f462013-08-01 19:21:11 -070024518#ifdef FEATURE_WLAN_LPHB
24519 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024520 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024521 case WLAN_HAL_LPHB_CFG_RSP:
24522 return WDI_LPHB_CFG_RESP;
24523#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024524
24525 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24526 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024527 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24528 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024529
Rajeev79dbe4c2013-10-05 11:03:42 +053024530#ifdef FEATURE_WLAN_BATCH_SCAN
24531 case WLAN_HAL_BATCHSCAN_SET_RSP:
24532 return WDI_SET_BATCH_SCAN_RESP;
24533 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24534 return WDI_BATCHSCAN_RESULT_IND;
24535#endif // FEATURE_WLAN_BATCH_SCAN
24536
Leo Chang0b0e45a2013-12-15 15:18:55 -080024537#ifdef FEATURE_WLAN_CH_AVOID
24538 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24539 return WDI_HAL_CH_AVOID_IND;
24540#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024541 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24542 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024543 case WLAN_HAL_PRINT_REG_INFO_IND:
24544 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024545 case WLAN_HAL_CH_SWITCH_V1_RSP:
24546 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024547 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24548 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024549#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24550 case WLAN_HAL_LL_SET_STATS_RSP:
24551 return WDI_LL_STATS_SET_RSP;
24552 case WLAN_HAL_LL_GET_STATS_RSP:
24553 return WDI_LL_STATS_GET_RSP;
24554 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24555 return WDI_LL_STATS_CLEAR_RSP;
24556 case WLAN_HAL_LL_NOTIFY_STATS:
24557 return WDI_HAL_LL_STATS_RESULTS_IND;
24558#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024559#ifdef WLAN_FEATURE_EXTSCAN
24560 case WLAN_HAL_EXT_SCAN_START_RSP:
24561 return WDI_EXTSCAN_START_RSP;
24562 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24563 return WDI_EXTSCAN_STOP_RSP;
24564 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24565 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24566 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24567 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24568 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24569 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24570 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24571 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24572 case WLAN_HAL_SIG_RSSI_SET_RSP:
24573 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24574 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24575 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24576 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24577 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24578 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24579 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24580 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24581 return WDI_HAL_EXTSCAN_RESULT_IND;
24582 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24583 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24584 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24585 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24586#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024587 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24588 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024589 case WLAN_HAL_FW_STATS_RSP:
24590 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024591 case WLAN_HAL_ENCRYPT_DATA_RSP:
24592 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024593 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24594 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024595 case WLAN_HAL_GET_FRAME_LOG_RSP:
24596 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024597 case WLAN_HAL_NAN_RSP:
24598 return WDI_NAN_RESPONSE;
24599 case WLAN_HAL_NAN_EVT:
24600 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024601 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24602 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024603 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24604 return WDI_MON_START_RSP;
24605 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24606 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024607 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24608 return WDI_FATAL_EVENT_LOGGING_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024610 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 }
24612
24613}/*HAL_2_WDI_RSP_TYPE*/
24614
24615
24616/*Convert WDI driver type into HAL driver type*/
24617WPT_STATIC WPT_INLINE tDriverType
24618WDI_2_HAL_DRV_TYPE
24619(
24620 WDI_DriverType wdiDriverType
24621)
24622{
Jeff Johnsone7245742012-09-05 17:12:55 -070024623 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024624 the chances of getting inlined*/
24625 switch( wdiDriverType )
24626 {
24627 case WDI_DRIVER_TYPE_PRODUCTION:
24628 return eDRIVER_TYPE_PRODUCTION;
24629 case WDI_DRIVER_TYPE_MFG:
24630 return eDRIVER_TYPE_MFG;
24631 case WDI_DRIVER_TYPE_DVT:
24632 return eDRIVER_TYPE_DVT;
24633 }
24634
Jeff Johnsone7245742012-09-05 17:12:55 -070024635 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024636}/*WDI_2_HAL_DRV_TYPE*/
24637
24638
24639/*Convert WDI stop reason into HAL stop reason*/
24640WPT_STATIC WPT_INLINE tHalStopType
24641WDI_2_HAL_STOP_REASON
24642(
24643 WDI_StopType wdiDriverType
24644)
24645{
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 the chances of getting inlined*/
24648 switch( wdiDriverType )
24649 {
24650 case WDI_STOP_TYPE_SYS_RESET:
24651 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024652 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24653 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024654 case WDI_STOP_TYPE_RF_KILL:
24655 return HAL_STOP_TYPE_RF_KILL;
24656 }
24657
Jeff Johnsone7245742012-09-05 17:12:55 -070024658 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024659}/*WDI_2_HAL_STOP_REASON*/
24660
24661
24662/*Convert WDI scan mode type into HAL scan mode type*/
24663WPT_STATIC WPT_INLINE eHalSysMode
24664WDI_2_HAL_SCAN_MODE
24665(
24666 WDI_ScanMode wdiScanMode
24667)
24668{
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024670 the chances of getting inlined*/
24671 switch( wdiScanMode )
24672 {
24673 case WDI_SCAN_MODE_NORMAL:
24674 return eHAL_SYS_MODE_NORMAL;
24675 case WDI_SCAN_MODE_LEARN:
24676 return eHAL_SYS_MODE_LEARN;
24677 case WDI_SCAN_MODE_SCAN:
24678 return eHAL_SYS_MODE_SCAN;
24679 case WDI_SCAN_MODE_PROMISC:
24680 return eHAL_SYS_MODE_PROMISC;
24681 case WDI_SCAN_MODE_SUSPEND_LINK:
24682 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024683 case WDI_SCAN_MODE_ROAM_SCAN:
24684 return eHAL_SYS_MODE_ROAM_SCAN;
24685 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24686 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 }
24688
Jeff Johnsone7245742012-09-05 17:12:55 -070024689 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024690}/*WDI_2_HAL_SCAN_MODE*/
24691
24692/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024693WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024694WDI_2_HAL_SEC_CH_OFFSET
24695(
24696 WDI_HTSecondaryChannelOffset wdiSecChOffset
24697)
24698{
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 the chances of getting inlined*/
24701 switch( wdiSecChOffset )
24702 {
24703 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024706 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24709#ifdef WLAN_FEATURE_11AC
24710 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24711 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24712 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24713 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24714 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24715 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24716 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24717 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24718 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24719 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24720 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24721 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24722 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24723 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24724#endif
24725 default:
24726 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024727 }
24728
Jeff Johnsone7245742012-09-05 17:12:55 -070024729 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024730}/*WDI_2_HAL_SEC_CH_OFFSET*/
24731
24732/*Convert WDI BSS type into HAL BSS type*/
24733WPT_STATIC WPT_INLINE tSirBssType
24734WDI_2_HAL_BSS_TYPE
24735(
24736 WDI_BssType wdiBSSType
24737)
24738{
Jeff Johnsone7245742012-09-05 17:12:55 -070024739 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 the chances of getting inlined*/
24741 switch( wdiBSSType )
24742 {
24743 case WDI_INFRASTRUCTURE_MODE:
24744 return eSIR_INFRASTRUCTURE_MODE;
24745 case WDI_INFRA_AP_MODE:
24746 return eSIR_INFRA_AP_MODE;
24747 case WDI_IBSS_MODE:
24748 return eSIR_IBSS_MODE;
24749 case WDI_BTAMP_STA_MODE:
24750 return eSIR_BTAMP_STA_MODE;
24751 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024752 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024753 case WDI_BSS_AUTO_MODE:
24754 return eSIR_AUTO_MODE;
24755 }
24756
Jeff Johnsone7245742012-09-05 17:12:55 -070024757 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024758}/*WDI_2_HAL_BSS_TYPE*/
24759
24760/*Convert WDI NW type into HAL NW type*/
24761WPT_STATIC WPT_INLINE tSirNwType
24762WDI_2_HAL_NW_TYPE
24763(
24764 WDI_NwType wdiNWType
24765)
24766{
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 the chances of getting inlined*/
24769 switch( wdiNWType )
24770 {
24771 case WDI_11A_NW_TYPE:
24772 return eSIR_11A_NW_TYPE;
24773 case WDI_11B_NW_TYPE:
24774 return eSIR_11B_NW_TYPE;
24775 case WDI_11G_NW_TYPE:
24776 return eSIR_11G_NW_TYPE;
24777 case WDI_11N_NW_TYPE:
24778 return eSIR_11N_NW_TYPE;
24779 }
24780
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024782}/*WDI_2_HAL_NW_TYPE*/
24783
24784/*Convert WDI chanel bonding type into HAL cb type*/
24785WPT_STATIC WPT_INLINE ePhyChanBondState
24786WDI_2_HAL_CB_STATE
24787(
24788 WDI_PhyChanBondState wdiCbState
24789)
24790{
Jeff Johnsone7245742012-09-05 17:12:55 -070024791 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 the chances of getting inlined*/
24793 switch ( wdiCbState )
24794 {
24795 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24796 return PHY_SINGLE_CHANNEL_CENTERED;
24797 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24798 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24799 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24800 return PHY_DOUBLE_CHANNEL_CENTERED;
24801 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24802 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024803#ifdef WLAN_FEATURE_11AC
24804 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24805 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24806 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24807 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24808 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24809 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24810 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24811 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24812 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24813 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24814 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24815 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24816 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24817 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24818#endif
24819 case WDI_MAX_CB_STATE:
24820 default:
24821 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024822 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024823
Jeff Johnson295189b2012-06-20 16:38:30 -070024824 return PHY_CHANNEL_BONDING_STATE_MAX;
24825}/*WDI_2_HAL_CB_STATE*/
24826
24827/*Convert WDI chanel bonding type into HAL cb type*/
24828WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24829WDI_2_HAL_HT_OPER_MODE
24830(
24831 WDI_HTOperatingMode wdiHTOperMode
24832)
24833{
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 the chances of getting inlined*/
24836 switch ( wdiHTOperMode )
24837 {
24838 case WDI_HT_OP_MODE_PURE:
24839 return eSIR_HT_OP_MODE_PURE;
24840 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24841 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24842 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24843 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24844 case WDI_HT_OP_MODE_MIXED:
24845 return eSIR_HT_OP_MODE_MIXED;
24846 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024847
Jeff Johnson295189b2012-06-20 16:38:30 -070024848 return eSIR_HT_OP_MODE_MAX;
24849}/*WDI_2_HAL_HT_OPER_MODE*/
24850
24851/*Convert WDI mimo PS type into HAL mimo PS type*/
24852WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24853WDI_2_HAL_MIMO_PS
24854(
24855 WDI_HTMIMOPowerSaveState wdiHTOperMode
24856)
24857{
Jeff Johnsone7245742012-09-05 17:12:55 -070024858 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 the chances of getting inlined*/
24860 switch ( wdiHTOperMode )
24861 {
24862 case WDI_HT_MIMO_PS_STATIC:
24863 return eSIR_HT_MIMO_PS_STATIC;
24864 case WDI_HT_MIMO_PS_DYNAMIC:
24865 return eSIR_HT_MIMO_PS_DYNAMIC;
24866 case WDI_HT_MIMO_PS_NA:
24867 return eSIR_HT_MIMO_PS_NA;
24868 case WDI_HT_MIMO_PS_NO_LIMIT:
24869 return eSIR_HT_MIMO_PS_NO_LIMIT;
24870 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024871
Jeff Johnson295189b2012-06-20 16:38:30 -070024872 return eSIR_HT_MIMO_PS_MAX;
24873}/*WDI_2_HAL_MIMO_PS*/
24874
24875/*Convert WDI ENC type into HAL ENC type*/
24876WPT_STATIC WPT_INLINE tAniEdType
24877WDI_2_HAL_ENC_TYPE
24878(
24879 WDI_EncryptType wdiEncType
24880)
24881{
Jeff Johnsone7245742012-09-05 17:12:55 -070024882 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 the chances of getting inlined*/
24884 switch ( wdiEncType )
24885 {
24886 case WDI_ENCR_NONE:
24887 return eSIR_ED_NONE;
24888
24889 case WDI_ENCR_WEP40:
24890 return eSIR_ED_WEP40;
24891
24892 case WDI_ENCR_WEP104:
24893 return eSIR_ED_WEP104;
24894
24895 case WDI_ENCR_TKIP:
24896 return eSIR_ED_TKIP;
24897
24898 case WDI_ENCR_CCMP:
24899 return eSIR_ED_CCMP;
24900
24901 case WDI_ENCR_AES_128_CMAC:
24902 return eSIR_ED_AES_128_CMAC;
24903#if defined(FEATURE_WLAN_WAPI)
24904 case WDI_ENCR_WPI:
24905 return eSIR_ED_WPI;
24906#endif
24907 default:
24908 return eSIR_ED_NOT_IMPLEMENTED;
24909 }
24910
24911}/*WDI_2_HAL_ENC_TYPE*/
24912
24913/*Convert WDI WEP type into HAL WEP type*/
24914WPT_STATIC WPT_INLINE tAniWepType
24915WDI_2_HAL_WEP_TYPE
24916(
24917 WDI_WepType wdiWEPType
24918)
24919{
Jeff Johnsone7245742012-09-05 17:12:55 -070024920 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024921 the chances of getting inlined*/
24922 switch ( wdiWEPType )
24923 {
24924 case WDI_WEP_STATIC:
24925 return eSIR_WEP_STATIC;
24926
24927 case WDI_WEP_DYNAMIC:
24928 return eSIR_WEP_DYNAMIC;
24929 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024930
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 return eSIR_WEP_MAX;
24932}/*WDI_2_HAL_WEP_TYPE*/
24933
24934WPT_STATIC WPT_INLINE tSirLinkState
24935WDI_2_HAL_LINK_STATE
24936(
24937 WDI_LinkStateType wdiLinkState
24938)
24939{
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024941 the chances of getting inlined*/
24942 switch ( wdiLinkState )
24943 {
24944 case WDI_LINK_IDLE_STATE:
24945 return eSIR_LINK_IDLE_STATE;
24946
24947 case WDI_LINK_PREASSOC_STATE:
24948 return eSIR_LINK_PREASSOC_STATE;
24949
24950 case WDI_LINK_POSTASSOC_STATE:
24951 return eSIR_LINK_POSTASSOC_STATE;
24952
24953 case WDI_LINK_AP_STATE:
24954 return eSIR_LINK_AP_STATE;
24955
24956 case WDI_LINK_IBSS_STATE:
24957 return eSIR_LINK_IBSS_STATE;
24958
24959 case WDI_LINK_BTAMP_PREASSOC_STATE:
24960 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24961
24962 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24963 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24964
24965 case WDI_LINK_BTAMP_AP_STATE:
24966 return eSIR_LINK_BTAMP_AP_STATE;
24967
24968 case WDI_LINK_BTAMP_STA_STATE:
24969 return eSIR_LINK_BTAMP_STA_STATE;
24970
24971 case WDI_LINK_LEARN_STATE:
24972 return eSIR_LINK_LEARN_STATE;
24973
24974 case WDI_LINK_SCAN_STATE:
24975 return eSIR_LINK_SCAN_STATE;
24976
24977 case WDI_LINK_FINISH_SCAN_STATE:
24978 return eSIR_LINK_FINISH_SCAN_STATE;
24979
24980 case WDI_LINK_INIT_CAL_STATE:
24981 return eSIR_LINK_INIT_CAL_STATE;
24982
24983 case WDI_LINK_FINISH_CAL_STATE:
24984 return eSIR_LINK_FINISH_CAL_STATE;
24985
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 case WDI_LINK_LISTEN_STATE:
24987 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024989 case WDI_LINK_SEND_ACTION_STATE:
24990 return eSIR_LINK_SEND_ACTION_STATE;
24991
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 default:
24993 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024994 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024995}
24996
Jeff Johnsone7245742012-09-05 17:12:55 -070024997/*Translate a STA Context from WDI into HAL*/
24998WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024999void
25000WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025001(
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 tConfigStaParams* phalConfigSta,
25003 WDI_ConfigStaReqInfoType* pwdiConfigSta
25004)
25005{
25006 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025007#ifdef WLAN_FEATURE_11AC
25008 /* Get the Version 1 Handler */
25009 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25010 if (WDI_getFwWlanFeatCaps(DOT11AC))
25011 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025012 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025013 }
25014#endif
25015 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025016 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025017
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 wpalMemoryCopy(phalConfigSta->bssId,
25019 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25020
25021 wpalMemoryCopy(phalConfigSta->staMac,
25022 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025023
25024 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25025 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25026 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25027 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25028 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25029 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25030 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25031 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25032 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25033 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25034 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25035 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25036 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25037 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25038 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25039 phalConfigSta->action = pwdiConfigSta->wdiAction;
25040 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25041 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25042 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25043 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25044 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25045 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25046 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025047
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25049
Jeff Johnsone7245742012-09-05 17:12:55 -070025050 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025051 pwdiConfigSta->wdiSupportedRates.opRateMode;
25052 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25053 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25056 }
25057 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25058 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25061 }
25062 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25063 {
25064 phalConfigSta->supportedRates.aniLegacyRates[i] =
25065 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25069 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25070 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025072 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25073 }
25074 phalConfigSta->supportedRates.rxHighestDataRate =
25075 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25076
Jeff Johnsone7245742012-09-05 17:12:55 -070025077#ifdef WLAN_FEATURE_11AC
25078 if(phalConfigSta_V1 != NULL)
25079 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025080 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25081 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25082 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25083 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 }
25085#endif
25086
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025088
Jeff Johnsone7245742012-09-05 17:12:55 -070025089#ifdef WLAN_FEATURE_11AC
25090 if(phalConfigSta_V1 != NULL)
25091 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025092 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25093 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025094 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025095 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025096 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25097 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25098
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 }
25100#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025101}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025102
25103/*Translate a Rate set info from WDI into HAL*/
25104WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025105WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025106(
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 tSirMacRateSet* pHalRateSet,
25108 WDI_RateSet* pwdiRateSet
25109)
25110{
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25113
25114 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25115 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25116
25117 for ( i = 0; i < pHalRateSet->numRates; i++ )
25118 {
25119 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25120 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025121
Jeff Johnson295189b2012-06-20 16:38:30 -070025122}/*WDI_CopyWDIRateSetToHALRateSet*/
25123
25124
25125/*Translate an EDCA Parameter Record from WDI into HAL*/
25126WPT_STATIC WPT_INLINE void
25127WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025128(
Jeff Johnson295189b2012-06-20 16:38:30 -070025129 tSirMacEdcaParamRecord* phalEdcaParam,
25130 WDI_EdcaParamRecord* pWDIEdcaParam
25131)
25132{
Jeff Johnsone7245742012-09-05 17:12:55 -070025133 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 the chances of getting inlined*/
25135
25136 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25137 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25138 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25139 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25140
25141 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25142 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25143 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25144}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25145
25146
25147/*Copy a management frame header from WDI fmt into HAL fmt*/
25148WPT_STATIC WPT_INLINE void
25149WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25150(
25151 tSirMacMgmtHdr* pmacMgmtHdr,
25152 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25153)
25154{
25155 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25156 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25157 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25158 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25159 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25160 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25161 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25162 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25163 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25164 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25165 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25166
25167 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25168 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25169
Jeff Johnsone7245742012-09-05 17:12:55 -070025170 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025171 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025172 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025173 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025174 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 pwdiMacMgmtHdr->bssId, 6);
25176
25177 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25178 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25179 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25180
25181}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25182
25183
25184/*Copy config bss parameters from WDI fmt into HAL fmt*/
25185WPT_STATIC WPT_INLINE void
25186WDI_CopyWDIConfigBSSToHALConfigBSS
25187(
25188 tConfigBssParams* phalConfigBSS,
25189 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25190)
25191{
25192
25193 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025194#ifdef WLAN_FEATURE_11AC
25195 /* Get the Version 1 Handler */
25196 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25197 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025198 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025199#endif
25200
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 wpalMemoryCopy( phalConfigBSS->bssId,
25202 pwdiConfigBSS->macBSSID,
25203 WDI_MAC_ADDR_LEN);
25204
25205#ifdef HAL_SELF_STA_PER_BSS
25206 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25207 pwdiConfigBSS->macSelfAddr,
25208 WDI_MAC_ADDR_LEN);
25209#endif
25210
25211 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25212
25213 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25214 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25215
Jeff Johnsone7245742012-09-05 17:12:55 -070025216 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025217 pwdiConfigBSS->ucShortSlotTimeSupported;
25218 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25219 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25220 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25221 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25222 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025223 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025224 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25225 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25226 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25227 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25228 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25229 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25230 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25231 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25232 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25233 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25234 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25235
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 phalConfigBSS->htOperMode =
25237 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025238
25239 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25240 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25241 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25242 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25243
25244#ifdef WLAN_FEATURE_VOWIFI
25245 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25246#endif
25247
25248 /*! Used 32 as magic number because that is how the ssid is declared inside the
25249 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025250 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025251 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25252 pwdiConfigBSS->wdiSSID.ucLength : 32;
25253 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 pwdiConfigBSS->wdiSSID.sSSID,
25255 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025256
25257 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25258 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025259
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25261 &pwdiConfigBSS->wdiRateSet);
25262
25263 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25264
25265 if(phalConfigBSS->edcaParamsValid)
25266 {
25267 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25268 &pwdiConfigBSS->wdiBEEDCAParams);
25269 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25270 &pwdiConfigBSS->wdiBKEDCAParams);
25271 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25272 &pwdiConfigBSS->wdiVIEDCAParams);
25273 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25274 &pwdiConfigBSS->wdiVOEDCAParams);
25275 }
25276
Jeff Johnsone7245742012-09-05 17:12:55 -070025277 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025278
25279 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25280
25281#ifdef WLAN_FEATURE_VOWIFI_11R
25282
Jeff Johnsone7245742012-09-05 17:12:55 -070025283 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025285
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 if( phalConfigBSS->extSetStaKeyParamValid )
25287 {
25288 /*-----------------------------------------------------------------------
25289 Copy the STA Key parameters into the HAL message
25290 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025291 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25293
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25296
25297 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25298
25299 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25300
25301 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25302
Jeff Johnson295189b2012-06-20 16:38:30 -070025303 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25304 keyIndex++)
25305 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025306 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025307 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25308 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25309 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25310 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25311 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25312 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025315 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025317 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25319 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025320 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 WDI_MAX_KEY_LENGTH);
25322 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 }
25324 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025326 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025327 sizeof(phalConfigBSS->extSetStaKeyParam) );
25328 }
25329
25330#endif /*WLAN_FEATURE_VOWIFI_11R*/
25331
Jeff Johnsone7245742012-09-05 17:12:55 -070025332#ifdef WLAN_FEATURE_11AC
25333 if(phalConfigBSS_V1 != NULL)
25334 {
25335 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25336 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25337 }
25338#endif
25339
Jeff Johnson295189b2012-06-20 16:38:30 -070025340}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25341
25342
Jeff Johnsone7245742012-09-05 17:12:55 -070025343/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025344 pointed to by user data */
25345WPT_STATIC WPT_INLINE void
25346WDI_ExtractRequestCBFromEvent
25347(
25348 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025349 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 void** ppUserData
25351)
25352{
25353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25354 switch ( pEvent->wdiRequest )
25355 {
25356 case WDI_START_REQ:
25357 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25358 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25359 break;
25360 case WDI_STOP_REQ:
25361 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25362 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25363 break;
25364 case WDI_INIT_SCAN_REQ:
25365 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25366 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25367 break;
25368 case WDI_START_SCAN_REQ:
25369 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25370 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25371 break;
25372 case WDI_END_SCAN_REQ:
25373 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25374 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25375 break;
25376 case WDI_FINISH_SCAN_REQ:
25377 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25378 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25379 break;
25380 case WDI_JOIN_REQ:
25381 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25382 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25383 break;
25384 case WDI_CONFIG_BSS_REQ:
25385 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25386 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25387 break;
25388 case WDI_DEL_BSS_REQ:
25389 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25390 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25391 break;
25392 case WDI_POST_ASSOC_REQ:
25393 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25394 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25395 break;
25396 case WDI_DEL_STA_REQ:
25397 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25398 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25399 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025400
25401 case WDI_ADD_STA_SELF_REQ:
25402 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25403 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25404 break;
25405
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 case WDI_DEL_STA_SELF_REQ:
25407 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25408 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25409 break;
25410
25411 case WDI_SET_BSS_KEY_REQ:
25412 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25413 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25414 break;
25415 case WDI_RMV_BSS_KEY_REQ:
25416 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25417 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25418 break;
25419 case WDI_SET_STA_KEY_REQ:
25420 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25421 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25422 break;
25423 case WDI_RMV_STA_KEY_REQ:
25424 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25425 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25426 break;
25427 case WDI_ADD_TS_REQ:
25428 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25429 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25430 break;
25431 case WDI_DEL_TS_REQ:
25432 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25433 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25434 break;
25435 case WDI_UPD_EDCA_PRMS_REQ:
25436 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25437 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25438 break;
25439 case WDI_ADD_BA_SESSION_REQ:
25440 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25441 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25442 break;
25443 case WDI_DEL_BA_REQ:
25444 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25445 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25446 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025447#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 case WDI_TSM_STATS_REQ:
25449 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25450 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25451 break;
25452#endif
25453 case WDI_CH_SWITCH_REQ:
25454 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25455 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25456 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025457 case WDI_CH_SWITCH_REQ_V1:
25458 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25459 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25460 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025461 case WDI_CONFIG_STA_REQ:
25462 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25463 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25464 break;
25465 case WDI_SET_LINK_ST_REQ:
25466 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25467 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25468 break;
25469 case WDI_GET_STATS_REQ:
25470 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25471 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25472 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025473#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025474 case WDI_GET_ROAM_RSSI_REQ:
25475 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25476 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25477 break;
25478#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 case WDI_UPDATE_CFG_REQ:
25480 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25481 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25482 break;
25483 case WDI_ADD_BA_REQ:
25484 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25485 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25486 break;
25487 case WDI_TRIGGER_BA_REQ:
25488 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25489 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25490 break;
25491 case WDI_UPD_BCON_PRMS_REQ:
25492 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25493 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25494 break;
25495 case WDI_SND_BCON_REQ:
25496 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25497 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25498 break;
25499 case WDI_ENTER_BMPS_REQ:
25500 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25501 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25502 break;
25503 case WDI_EXIT_BMPS_REQ:
25504 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25505 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25506 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025507 case WDI_ENTER_IMPS_REQ:
25508 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25509 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25510 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 case WDI_ENTER_UAPSD_REQ:
25512 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25513 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25514 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025515 case WDI_EXIT_UAPSD_REQ:
25516 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25517 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25518 break;
25519 case WDI_SET_UAPSD_PARAM_REQ:
25520 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25521 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25522 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 case WDI_UPDATE_UAPSD_PARAM_REQ:
25524 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25525 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25526 break;
25527 case WDI_CONFIGURE_RXP_FILTER_REQ:
25528 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25529 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25530 break;
25531 case WDI_SET_BEACON_FILTER_REQ:
25532 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25533 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25534 break;
25535 case WDI_REM_BEACON_FILTER_REQ:
25536 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25537 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 case WDI_SET_RSSI_THRESHOLDS_REQ:
25540 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25541 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25542 break;
25543 case WDI_HOST_OFFLOAD_REQ:
25544 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25545 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25546 break;
25547 case WDI_WOWL_ADD_BC_PTRN_REQ:
25548 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25549 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25550 break;
25551 case WDI_WOWL_DEL_BC_PTRN_REQ:
25552 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25553 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25554 break;
25555 case WDI_WOWL_ENTER_REQ:
25556 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25557 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25558 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025559 case WDI_WOWL_EXIT_REQ:
25560 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25561 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25562 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25564 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25565 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25566 break;
25567 case WDI_FLUSH_AC_REQ:
25568 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25569 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25570 break;
25571 case WDI_BTAMP_EVENT_REQ:
25572 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25573 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25574 break;
25575 case WDI_KEEP_ALIVE_REQ:
25576 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25577 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25578 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025579#if defined FEATURE_WLAN_SCAN_PNO
25580 case WDI_SET_PREF_NETWORK_REQ:
25581 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25582 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25583 break;
25584 case WDI_SET_RSSI_FILTER_REQ:
25585 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25586 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25587 break;
25588 case WDI_UPDATE_SCAN_PARAMS_REQ:
25589 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25590 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25591 break;
25592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025593 case WDI_SET_TX_PER_TRACKING_REQ:
25594 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25595 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025596 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025597#if defined WLAN_FEATURE_PACKET_FILTERING
25598 case WDI_8023_MULTICAST_LIST_REQ:
25599 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25600 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25601 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025602 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25603 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25604 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25605 break;
25606 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25607 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25608 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25609 break;
25610 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25611 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25612 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25613 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025614#endif
25615 case WDI_SET_POWER_PARAMS_REQ:
25616 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25617 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25618 break;
25619#if defined WLAN_FEATURE_GTK_OFFLOAD
25620 case WDI_GTK_OFFLOAD_REQ:
25621 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25622 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25623 break;
25624 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25625 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25626 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25627 break;
25628#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025629
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 default:
25631 *ppfnReqCB = NULL;
25632 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025633 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025634 }
25635}/*WDI_ExtractRequestCBFromEvent*/
25636
25637
25638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 frame xtl is enabled for a particular STA.
25641
25642 WDI_PostAssocReq must have been called.
25643
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 @param uSTAIdx: STA index
25645
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 @see WDI_PostAssocReq
25647 @return Result of the function call
25648*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025649wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025650WDI_IsHwFrameTxTranslationCapable
25651(
25652 wpt_uint8 uSTAIdx
25653)
25654{
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 uma value*/
25657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 ------------------------------------------------------------------------*/
25660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25661 {
25662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25663 "WDI API call before module is initialized - Fail request");
25664
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 }
25667
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025668#ifdef WLAN_SOFTAP_VSTA_FEATURE
25669 if (IS_VSTA_IDX(uSTAIdx))
25670 {
25671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25672 "STA %d is a Virtual STA, "
25673 "HW frame translation disabled", uSTAIdx);
25674 return eWLAN_PAL_FALSE;
25675 }
25676#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025677
Jeff Johnson295189b2012-06-20 16:38:30 -070025678 return gWDICb.bFrameTransEnabled;
25679}/*WDI_IsHwFrameTxTranslationCapable*/
25680
Katya Nigam6201c3e2014-05-27 17:51:42 +053025681
25682/**
25683 @brief WDI_IsSelfSTA - check if staid is self sta index
25684
25685
25686 @param pWDICtx: pointer to the WLAN DAL context
25687 ucSTAIdx: station index
25688
25689 @return Result of the function call
25690*/
25691wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25692{
25693 wpt_uint8 ucSTAType;
25694
25695 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25696 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25697 {
25698 if( ucSTAType == WDI_STA_ENTRY_SELF )
25699 return eWLAN_PAL_TRUE;
25700 }
25701
25702 return eWLAN_PAL_FALSE;
25703}
25704
25705
25706
Jeff Johnson295189b2012-06-20 16:38:30 -070025707#ifdef FEATURE_WLAN_SCAN_PNO
25708/**
25709 @brief WDI_SetPreferredNetworkList
25710
Jeff Johnsone7245742012-09-05 17:12:55 -070025711 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025713
Jeff Johnson295189b2012-06-20 16:38:30 -070025714 wdiPNOScanCb: callback for passing back the response
25715 of the Set PNO operation received from the
25716 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025717
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 callback
25720
Jeff Johnson295189b2012-06-20 16:38:30 -070025721 @return Result of the function call
25722*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025723WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025724WDI_SetPreferredNetworkReq
25725(
25726 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25727 WDI_PNOScanCb wdiPNOScanCb,
25728 void* pUserData
25729)
25730{
25731 WDI_EventInfoType wdiEventData = {{0}};
25732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25733
25734 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 ------------------------------------------------------------------------*/
25737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25738 {
25739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25740 "WDI API call before module is initialized - Fail request");
25741
Jeff Johnsone7245742012-09-05 17:12:55 -070025742 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 }
25744
25745 /*------------------------------------------------------------------------
25746 Fill in Event data and post to the Main FSM
25747 ------------------------------------------------------------------------*/
25748 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025751 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025752 wdiEventData.pUserData = pUserData;
25753
25754 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25755}
25756
25757
25758/**
25759 @brief WDI_SetRssiFilterReq
25760
Jeff Johnsone7245742012-09-05 17:12:55 -070025761 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025762 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025763
Jeff Johnson295189b2012-06-20 16:38:30 -070025764 wdiRssiFilterCb: callback for passing back the response
25765 of the Set RSSI Filter operation received from the
25766 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025767
Jeff Johnson295189b2012-06-20 16:38:30 -070025768 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025769 callback
25770
Jeff Johnson295189b2012-06-20 16:38:30 -070025771 @return Result of the function call
25772*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025774WDI_SetRssiFilterReq
25775(
25776 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25777 WDI_RssiFilterCb wdiRssiFilterCb,
25778 void* pUserData
25779)
25780{
25781 WDI_EventInfoType wdiEventData = {{0}};
25782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25783
25784 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025785 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 ------------------------------------------------------------------------*/
25787 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25788 {
25789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25790 "WDI API call before module is initialized - Fail request");
25791
Jeff Johnsone7245742012-09-05 17:12:55 -070025792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 }
25794
25795 /*------------------------------------------------------------------------
25796 Fill in Event data and post to the Main FSM
25797 ------------------------------------------------------------------------*/
25798 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025799 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025800 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025801 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025802 wdiEventData.pUserData = pUserData;
25803
25804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25805}/*WDI_SetRssiFilterReq*/
25806
25807/**
25808 @brief WDI_UpdateScanParamsReq
25809
Jeff Johnsone7245742012-09-05 17:12:55 -070025810 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025811 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025812
Jeff Johnson295189b2012-06-20 16:38:30 -070025813 wdiUpdateScanParamsCb: callback for passing back the response
25814 of the Set PNO operation received from the
25815 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025816
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025818 callback
25819
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 @return Result of the function call
25821*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025823WDI_UpdateScanParamsReq
25824(
25825 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25826 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25827 void* pUserData
25828)
25829{
25830 WDI_EventInfoType wdiEventData = {{0}};
25831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25832
25833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 ------------------------------------------------------------------------*/
25836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25837 {
25838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25839 "WDI API call before module is initialized - Fail request");
25840
Jeff Johnsone7245742012-09-05 17:12:55 -070025841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 }
25843
25844 /*------------------------------------------------------------------------
25845 Fill in Event data and post to the Main FSM
25846 ------------------------------------------------------------------------*/
25847 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025848 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 wdiEventData.pUserData = pUserData;
25852
25853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25854}
25855
25856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025857 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025859
25860 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 pwdiPNOScanReqParams: pointer to the info received
25862 from upper layers
25863 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 and its size
25865
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 @return Result of the function call
25867*/
25868
25869WDI_Status
25870WDI_PackPreferredNetworkList
25871(
25872 WDI_ControlBlockType* pWDICtx,
25873 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25874 wpt_uint8** ppSendBuffer,
25875 wpt_uint16* pSize
25876)
25877{
Jeff Johnsone7245742012-09-05 17:12:55 -070025878 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 wpt_uint16 usDataOffset = 0;
25880 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025881 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 /*-----------------------------------------------------------------------
25884 Get message buffer
25885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025887 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025889 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 {
25891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025892 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 pwdiPNOScanReqParams);
25894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025896 }
25897
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025898 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25899
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 /*-------------------------------------------------------------------------
25901 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25902 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025903 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025904 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025905 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025906 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25907
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025908 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025909 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25913
25914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025915 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025916 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25917 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25918 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25919
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025920 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 {
25922 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025923 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025924 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25925
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025926 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025928 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025929
25930 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025931 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025932 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025933
25934 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025935 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025936 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025937
Jeff Johnsone7245742012-09-05 17:12:55 -070025938 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025940 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025941 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25942 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25943 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25944 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025945
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025946 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025948 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025949
25950 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025951 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25953
25954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025956 pPrefNetwListParams->aNetworks[i].ssId.length,
25957 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 }
25959
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025960 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25963 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25964 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25965
25966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025967 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025968 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25970 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25971
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025972 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025974 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025976 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25978 }
25979
25980 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025981 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25983 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25984 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025986
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025987 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025988 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025989 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025990
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025991 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25993 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25994 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025996
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025997 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025998 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025999 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026000
26001 /*Set the output values*/
26002 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026004
26005 return WDI_STATUS_SUCCESS;
26006}/*WDI_PackPreferredNetworkList*/
26007
26008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026009 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026011
26012 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 pwdiPNOScanReqParams: pointer to the info received
26014 from upper layers
26015 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026016 and its size
26017
Jeff Johnson295189b2012-06-20 16:38:30 -070026018 @return Result of the function call
26019*/
26020
26021WDI_Status
26022WDI_PackPreferredNetworkListNew
26023(
26024 WDI_ControlBlockType* pWDICtx,
26025 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26026 wpt_uint8** ppSendBuffer,
26027 wpt_uint16* pSize
26028)
26029{
Jeff Johnsone7245742012-09-05 17:12:55 -070026030 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 wpt_uint16 usDataOffset = 0;
26032 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026033 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026035
26036 /*-----------------------------------------------------------------------
26037 Get message buffer
26038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026040 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026042 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 {
26044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026045 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026046 pwdiPNOScanReqParams);
26047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 }
26050
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026051 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26052
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 /*-------------------------------------------------------------------------
26054 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26055 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026056 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026057 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026058 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026059 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26060
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026061 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026063 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26066
26067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26070 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26071 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26072
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026073 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 {
26075 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026076 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26078
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026079 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026080 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026081 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026082
26083 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026084 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026085 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026086
26087 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026088 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026089 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026090
26091 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026092 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026093 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026094
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026097 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026098 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26099
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026100 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026101 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026102 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026103
26104 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026105 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26107
26108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026109 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026110 pPrefNetwListParams->aNetworks[i].ssId.length,
26111 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 }
26113
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026114 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026115 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026116 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26117 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26118 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26119
26120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026122 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26124 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26125
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026126 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026127 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026128 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026130 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026131 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26132 }
26133
26134 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026135 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26137 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26138 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026139 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026140
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026141 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026142 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026143 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026144
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026145 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026146 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26147 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26148 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026150
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026151 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026152 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026153 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
Jeff Johnson295189b2012-06-20 16:38:30 -070026155
26156 /*Set the output values*/
26157 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026158 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026159
26160 return WDI_STATUS_SUCCESS;
26161}/*WDI_PackPreferredNetworkListNew*/
26162
26163/**
26164 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026165
26166 @param pWDICtx: pointer to the WLAN DAL context
26167 pEventData: pointer to the event information structure
26168
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 @return Result of the function call
26170*/
26171WDI_Status
26172WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026173(
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 WDI_ControlBlockType* pWDICtx,
26175 WDI_EventInfoType* pEventData
26176)
26177{
26178 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26179 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026182 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026183
26184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 -------------------------------------------------------------------------*/
26187 if (( NULL == pEventData ) ||
26188 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26189 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26190 {
26191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026195 }
26196
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026197 /*----------------------------------------------------------------------
26198 Avoid Enable PNO during any active session or an ongoing session
26199 ----------------------------------------------------------------------*/
26200 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26201 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26202 {
26203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26204 "%s:(Active/Ongoing Session) - Fail request", __func__);
26205
26206 return WDI_STATUS_E_FAILURE;
26207 }
26208
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 /*-------------------------------------------------------------------------
26210 Pack the PNO request structure based on version
26211 -------------------------------------------------------------------------*/
26212 if ( pWDICtx->wdiPNOVersion > 0 )
26213 {
26214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026215 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 pWDICtx->wdiPNOVersion);
26217
26218 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26219 &pSendBuffer, &usSendSize);
26220 }
26221 else
26222 {
26223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026224 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 pWDICtx->wdiPNOVersion);
26226
26227 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26228 &pSendBuffer, &usSendSize);
26229 }
26230
26231 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26232 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26233 {
26234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026235 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 }
26239
26240 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026242
26243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026245 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026246 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26247 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026248}
26249
26250/**
26251 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026252
26253 @param pWDICtx: pointer to the WLAN DAL context
26254 pEventData: pointer to the event information structure
26255
Jeff Johnson295189b2012-06-20 16:38:30 -070026256 @see
26257 @return Result of the function call
26258*/
26259WDI_Status
26260WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026261(
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 WDI_ControlBlockType* pWDICtx,
26263 WDI_EventInfoType* pEventData
26264)
26265{
26266 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26267 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026268 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 wpt_uint16 usDataOffset = 0;
26270 wpt_uint16 usSendSize = 0;
26271 wpt_uint8 ucRssiThreshold;
26272
26273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 -------------------------------------------------------------------------*/
26276 if (( NULL == pEventData ) ||
26277 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26278 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26279 {
26280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 }
26285
26286 /*-----------------------------------------------------------------------
26287 Get message buffer
26288 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 sizeof(ucRssiThreshold),
26291 &pSendBuffer, &usDataOffset, &usSendSize))||
26292 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26293 {
26294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026295 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 }
26300
26301 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26302
Jeff Johnsone7245742012-09-05 17:12:55 -070026303 wpalMemoryCopy( pSendBuffer+usDataOffset,
26304 &ucRssiThreshold,
26305 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026306
26307 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026308 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026309
26310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26314 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026315}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026316#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26317/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026318 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026319
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026320 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026321 by the Device Interface
26322
26323 wdiRoamOffloadScancb: callback for passing back the response
26324 of the Roam Candidate Lookup Req operation received from the
26325 device
26326
26327 pUserData: user data will be passed back with the
26328 callback
26329 @return Result of the function call
26330*/
26331WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026332WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026333(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026334 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026335 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26336 void* pUserData
26337)
26338{
26339 WDI_EventInfoType wdiEventData = {{0}};
26340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26341
26342 /*------------------------------------------------------------------------
26343 Sanity Check
26344 ------------------------------------------------------------------------*/
26345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26346 {
26347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26348 "WDI API call before module is initialized - Fail request");
26349
26350 return WDI_STATUS_E_NOT_ALLOWED;
26351 }
26352
26353 /*------------------------------------------------------------------------
26354 Fill in Event data and post to the Main FSM
26355 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026356 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26357 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26358 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026359 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26360 wdiEventData.pUserData = pUserData;
26361
26362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26363}
26364
26365void
26366WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26367{
26368 switch (wdiEdType)
26369 {
26370 case WDI_ED_NONE:
26371 *EdType = eED_NONE;
26372 break;
26373 case WDI_ED_WEP40:
26374 case WDI_ED_WEP104:
26375 *EdType = eED_WEP;
26376 break;
26377 case WDI_ED_TKIP:
26378 *EdType = eED_TKIP;
26379 break;
26380 case WDI_ED_CCMP:
26381#ifdef WLAN_FEATURE_11W
26382 case WDI_ED_AES_128_CMAC:
26383#endif
26384 *EdType = eED_CCMP;
26385 break;
26386#ifdef FEATURE_WLAN_WAPI
26387 case WDI_ED_WPI:
26388 *EdType = eED_WPI;
26389 break;
26390#endif
26391 case WDI_ED_ANY:
26392 *EdType = eED_ANY;
26393 break;
26394
26395 default:
26396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26397 "%s: Unknown Encryption Type", __func__);
26398 break;
26399 }
26400}
26401
26402/**
26403 @brief Helper function to pack Start Roam Candidate Lookup
26404 Request parameters
26405
26406 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026407 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026408 from upper layers
26409 ppSendBuffer, pSize - out pointers of the packed buffer
26410 and its size
26411
26412 @return Result of the function call
26413*/
26414
26415WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026416WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026417(
26418 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026419 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026420 wpt_uint8** ppSendBuffer,
26421 wpt_uint16* pSize
26422)
26423{
26424 wpt_uint8* pSendBuffer = NULL;
26425 wpt_uint16 usDataOffset = 0;
26426 wpt_uint16 usSendSize = 0;
26427 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26428 wpt_uint8 i;
26429 /*-----------------------------------------------------------------------
26430 Get message buffer
26431 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026432 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026433 sizeof(tRoamCandidateListParams),
26434 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026435 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026436 {
26437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026438 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026439 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026440 WDI_ASSERT(0);
26441 return WDI_STATUS_E_FAILURE;
26442 }
26443 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026444 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026445 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026446 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026447 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026448 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026449 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026450 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026451 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026452 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026453 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026454
26455 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026456 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026457 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026458 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026459 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26460 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026461 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26462 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26463 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26464 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26465 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026466 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026467 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026468 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026469 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26470 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26471 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26472 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26473 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26474 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26475 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026476 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026477 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026478 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26479 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26480 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026481
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26483 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26484 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26485 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26486 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26487 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026488 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026489 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26490 pRoamCandidateListParams->RoamScanOffloadEnabled,
26491 pRoamCandidateListParams->Command,
26492 pRoamCandidateListParams->StartScanReason,
26493 pRoamCandidateListParams->NeighborScanTimerPeriod,
26494 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26495 pRoamCandidateListParams->NeighborScanChannelMinTime,
26496 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26497 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26498 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26499 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26500 pRoamCandidateListParams->ConnectedNetwork.authentication,
26501 pRoamCandidateListParams->ConnectedNetwork.encryption,
26502 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26503 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26504 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026505 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026506 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026507 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026508 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026509 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26510 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026511 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026512 pRoamCandidateListParams->us24GProbeSize);
26513 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026514 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026515 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026516 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026517 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26518 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026519 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026520 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026521 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26522 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26523 pRoamCandidateListParams->nProbes =
26524 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26525 pRoamCandidateListParams->HomeAwayTime =
26526 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026528 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26529 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026531 }
26532
26533
26534 /*Set the output values*/
26535 *ppSendBuffer = pSendBuffer;
26536 *pSize = usSendSize;
26537 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026538}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026539
26540/**
26541 @brief Process Start Roam Candidate Lookup Request function
26542
26543 @param pWDICtx: pointer to the WLAN DAL context
26544 pEventData: pointer to the event information structure
26545
26546 @return Result of the function call
26547*/
26548WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026549WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026550(
26551 WDI_ControlBlockType* pWDICtx,
26552 WDI_EventInfoType* pEventData
26553)
26554{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026555 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026556 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26557 wpt_uint8* pSendBuffer = NULL;
26558 wpt_uint16 usSendSize = 0;
26559 WDI_Status wdiStatus;
26560 /*-------------------------------------------------------------------------
26561 Sanity check
26562 -------------------------------------------------------------------------*/
26563 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026564 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026565 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26566 {
26567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26568 "%s: Invalid parameters", __func__);
26569 WDI_ASSERT(0);
26570 return WDI_STATUS_E_FAILURE;
26571 }
26572
26573 /*-------------------------------------------------------------------------
26574 Pack the Start Roam Candidate Lookup request structure based on version
26575 -------------------------------------------------------------------------*/
26576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26577 "%s: Packing Roam Candidate Lookup request ", __func__);
26578
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026579 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026580 &pSendBuffer, &usSendSize);
26581
26582 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26583 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26584 {
26585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26586 "%s: failed to pack request parameters", __func__);
26587 WDI_ASSERT(0);
26588 return wdiStatus;
26589 }
26590
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026591 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26592 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026593
26594 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026595 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026596 -------------------------------------------------------------------------*/
26597 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026598 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026599}
26600
26601/**
26602 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26603 response is being received over the bus from HAL)
26604
26605 @param pWDICtx: pointer to the WLAN DAL context
26606 pEventData: pointer to the event information structure
26607
26608 @see
26609 @return Result of the function call
26610*/
26611WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026612WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026613(
26614 WDI_ControlBlockType* pWDICtx,
26615 WDI_EventInfoType* pEventData
26616)
26617{
26618 WDI_Status wdiStatus;
26619 eHalStatus halStatus;
26620 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26621
26622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26623
26624 /*-------------------------------------------------------------------------
26625 Sanity check
26626 -------------------------------------------------------------------------*/
26627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26628 ( NULL == pEventData->pEventData ))
26629 {
26630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26631 "%s: Invalid parameters", __func__);
26632 WDI_ASSERT(0);
26633 return WDI_STATUS_E_FAILURE;
26634 }
26635
26636 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26637
26638 /*-------------------------------------------------------------------------
26639 Extract response and send it to UMAC
26640 -------------------------------------------------------------------------*/
26641 halStatus = *((eHalStatus*)pEventData->pEventData);
26642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26643
26644 /*Notify UMAC*/
26645 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26646
26647 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026648}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026649#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026650
26651/**
26652 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026653
26654 @param pWDICtx: pointer to the WLAN DAL context
26655 pEventData: pointer to the event information structure
26656
Jeff Johnson295189b2012-06-20 16:38:30 -070026657 @see
26658 @return Result of the function call
26659*/
26660WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026661WDI_PackUpdateScanParamsReq
26662(
26663 WDI_ControlBlockType* pWDICtx,
26664 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26665 wpt_uint8** ppSendBuffer,
26666 wpt_uint16* pSize
26667)
26668{
26669 wpt_uint8* pSendBuffer = NULL;
26670 wpt_uint16 usDataOffset = 0;
26671 wpt_uint16 usSendSize = 0;
26672 tUpdateScanParams updateScanParams = {0};
26673
26674
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026676 "Begin WDI Update Scan Parameters Old Style Params");
26677 /*-----------------------------------------------------------------------
26678 Get message buffer
26679 -----------------------------------------------------------------------*/
26680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26681 sizeof(updateScanParams),
26682 &pSendBuffer, &usDataOffset, &usSendSize))||
26683 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26684 {
26685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026686 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026687 pwdiUpdateScanParams);
26688 WDI_ASSERT(0);
26689 return WDI_STATUS_E_FAILURE;
26690 }
26691
26692 //
26693 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26694 //
26695
26696 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26697 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26698
26699 updateScanParams.ucChannelCount =
26700 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26701 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26702 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26703 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26704
26705 wpalMemoryCopy( updateScanParams.aChannels,
26706 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26707 updateScanParams.ucChannelCount);
26708
26709
26710 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26711 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26712 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26713 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26714 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26715
26716 wpalMemoryCopy( pSendBuffer+usDataOffset,
26717 &updateScanParams,
26718 sizeof(updateScanParams));
26719
26720 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26721 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26722
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026724 "End Update Scan Parameters Old Style");
26725
26726 /*Set the output values*/
26727 *ppSendBuffer = pSendBuffer;
26728 *pSize = usSendSize;
26729
26730 return WDI_STATUS_SUCCESS;
26731}
26732
26733/**
26734 @brief Process Update Scan Params function
26735
26736 @param pWDICtx: pointer to the WLAN DAL context
26737 pEventData: pointer to the event information structure
26738
26739 @see
26740 @return Result of the function call
26741*/
26742WDI_Status
26743WDI_PackUpdateScanParamsReqEx
26744(
26745 WDI_ControlBlockType* pWDICtx,
26746 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26747 wpt_uint8** ppSendBuffer,
26748 wpt_uint16* pSize
26749)
26750{
26751 wpt_uint8* pSendBuffer = NULL;
26752 wpt_uint16 usDataOffset = 0;
26753 wpt_uint16 usSendSize = 0;
26754 tUpdateScanParamsEx updateScanParams = {0};
26755
26756
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026757 /*-----------------------------------------------------------------------
26758 Get message buffer
26759 -----------------------------------------------------------------------*/
26760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26761 sizeof(updateScanParams),
26762 &pSendBuffer, &usDataOffset, &usSendSize))||
26763 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26764 {
26765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026766 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026767 pwdiUpdateScanParams);
26768 WDI_ASSERT(0);
26769 return WDI_STATUS_E_FAILURE;
26770 }
26771
26772 //
26773 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26774 //
26775
26776 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26777 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26778
26779 updateScanParams.ucChannelCount =
26780 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26781 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26782 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26783 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26784
26785 wpalMemoryCopy( updateScanParams.aChannels,
26786 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26787 updateScanParams.ucChannelCount);
26788
26789
26790 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26791 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26792 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26793 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26794 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26795
26796 wpalMemoryCopy( pSendBuffer+usDataOffset,
26797 &updateScanParams,
26798 sizeof(updateScanParams));
26799
26800 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26801 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26802
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026803 /*Set the output values*/
26804 *ppSendBuffer = pSendBuffer;
26805 *pSize = usSendSize;
26806
26807 return WDI_STATUS_SUCCESS;
26808}
26809
26810/**
26811 @brief Process Update Scan Params function
26812
26813 @param pWDICtx: pointer to the WLAN DAL context
26814 pEventData: pointer to the event information structure
26815
26816 @see
26817 @return Result of the function call
26818*/
26819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026820WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026821(
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 WDI_ControlBlockType* pWDICtx,
26823 WDI_EventInfoType* pEventData
26824)
26825{
26826 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26827 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026828 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026829 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026830 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831
26832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026834 -------------------------------------------------------------------------*/
26835 if (( NULL == pEventData ) ||
26836 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26837 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26838 {
26839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026843 }
26844
26845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26846 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026847
26848 //
26849 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26850 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026851 if ( pWDICtx->wlanVersion.revision < 1 )
26852 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026853 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026854 &pSendBuffer, &usSendSize);
26855 }
26856 else
26857 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026858 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26859 &pSendBuffer, &usSendSize);
26860 }
26861
26862 if(WDI_STATUS_SUCCESS != wdiStatus)
26863 {
26864 //memory allocation failed
26865 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026866 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026867
Jeff Johnson295189b2012-06-20 16:38:30 -070026868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026869 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026870 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026871 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026872 wdiUpdateScanParamsCb, pEventData->pUserData,
26873 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026874}
26875
26876/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026877 @brief Process Update Channel Params function
26878
26879 @param pWDICtx: pointer to the WLAN DAL context
26880 pEventData: pointer to the event information structure
26881
26882 @see
26883 @return Result of the function call
26884*/
26885WDI_Status
26886WDI_ProcessUpdateChannelParamsReq
26887(
26888 WDI_ControlBlockType* pWDICtx,
26889 WDI_EventInfoType* pEventData
26890)
26891{
26892 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26893 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26894 wpt_uint8* pSendBuffer = NULL;
26895 wpt_uint16 usDataOffset = 0;
26896 wpt_uint16 usSendSize = 0;
26897 tUpdateChannelReqType *updateChannelParams;
26898 wpt_uint32 usUpdateChanParamSize;
26899 wpt_uint8 num_channels = 0;
26900
26901 /*-------------------------------------------------------------------------
26902 Sanity check
26903 -------------------------------------------------------------------------*/
26904 if (( NULL == pEventData ) ||
26905 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26906 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26907 {
26908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26909 "%s: Invalid parameters", __func__);
26910 WDI_ASSERT(0);
26911 return WDI_STATUS_E_FAILURE;
26912 }
26913 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026914 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026915
26916 /*-----------------------------------------------------------------------
26917 Get message buffer
26918 -----------------------------------------------------------------------*/
26919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26920 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26921 &pSendBuffer, &usDataOffset, &usSendSize))||
26922 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26923 {
26924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26925 "Unable to get send buffer in Update Channel Params req %p",
26926 pwdiUpdateChanListParams);
26927 WDI_ASSERT(0);
26928 return WDI_STATUS_E_FAILURE;
26929 }
26930 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26931
26932 updateChannelParams->numChan = num_channels;
26933 wpalMemoryCopy(&updateChannelParams->chanParam,
26934 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26935 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26936
26937 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26938 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26939
26940 /*-------------------------------------------------------------------------
26941 Send Update channel request to fw
26942 -------------------------------------------------------------------------*/
26943 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26944 wdiUpdateChanParamsCb, pEventData->pUserData,
26945 WDI_UPDATE_CHAN_RESP);
26946}
26947
26948/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026949 @brief Process Preferred Network Found Indication function
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_ProcessPrefNetworkFoundInd
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{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026964 WDI_LowLevelIndType wdiInd;
26965 tpPrefNetwFoundParams pNetwFoundParams;
26966 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026967
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 /*-------------------------------------------------------------------------
26982 Extract indication and send it to UMAC
26983 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026984 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26985
26986 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26987 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26988 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26989
26990 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26991 {
26992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26993 "%s: fail to allocate memory", __func__);
26994 return WDI_STATUS_MEM_FAILURE;
26995 }
26996
26997 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26998 (pNetwFoundParams->ssId.length < 32 )?
26999 pNetwFoundParams->ssId.length : 32;
27000 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27001 pNetwFoundParams->ssId.ssId,
27002 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27003 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27004 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27005 pNetwFoundParams->frameLength;
27006 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27007 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27008 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027009
27010 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027011 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027012
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 // DEBUG
27014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027015 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027016 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027017 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027019 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27021
ltimariub77f24b2013-01-24 18:54:33 -080027022 if ( pWDICtx->wdiLowLevelIndCB )
27023 {
27024 /*Notify UMAC*/
27025 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27026 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027027
27028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027029}
27030
27031/**
27032 @brief Process PNO Rsp function (called when a
27033 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027034
27035 @param pWDICtx: pointer to the WLAN DAL context
27036 pEventData: pointer to the event information structure
27037
Jeff Johnson295189b2012-06-20 16:38:30 -070027038 @see
27039 @return Result of the function call
27040*/
27041WDI_Status
27042WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027043(
Jeff Johnson295189b2012-06-20 16:38:30 -070027044 WDI_ControlBlockType* pWDICtx,
27045 WDI_EventInfoType* pEventData
27046)
27047{
27048 WDI_Status wdiStatus;
27049 eHalStatus halStatus;
27050 WDI_PNOScanCb wdiPNOScanCb = NULL;
27051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27052
27053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027055 -------------------------------------------------------------------------*/
27056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27057 ( NULL == pEventData->pEventData ))
27058 {
27059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 }
27064
27065
Jeff Johnsone7245742012-09-05 17:12:55 -070027066 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027067
27068 /*-------------------------------------------------------------------------
27069 Extract response and send it to UMAC
27070 -------------------------------------------------------------------------*/
27071 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027072 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027073
27074 /*Notify UMAC*/
27075 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27076
Jeff Johnsone7245742012-09-05 17:12:55 -070027077 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027078}/*WDI_ProcessSetPreferredNetworkRsp*/
27079
27080/**
27081 @brief Process RSSI Filter Rsp function (called when a
27082 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027083
27084 @param pWDICtx: pointer to the WLAN DAL context
27085 pEventData: pointer to the event information structure
27086
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 @see
27088 @return Result of the function call
27089*/
27090WDI_Status
27091WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027092(
Jeff Johnson295189b2012-06-20 16:38:30 -070027093 WDI_ControlBlockType* pWDICtx,
27094 WDI_EventInfoType* pEventData
27095)
27096{
27097 WDI_Status wdiStatus;
27098 eHalStatus halStatus;
27099 WDI_RssiFilterCb wdiRssiFilterCb;
27100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27101
27102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 -------------------------------------------------------------------------*/
27105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27106 ( NULL == pEventData->pEventData ))
27107 {
27108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027112 }
27113
Jeff Johnsone7245742012-09-05 17:12:55 -070027114 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027115
27116 /*-------------------------------------------------------------------------
27117 Extract response and send it to UMAC
27118 -------------------------------------------------------------------------*/
27119 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027120 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027121
27122 /*Notify UMAC*/
27123 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27124
Jeff Johnsone7245742012-09-05 17:12:55 -070027125 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027126}/*WDI_ProcessSetRssiFilterRsp*/
27127
27128/**
27129 @brief Process Update Scan Params Rsp function (called when a
27130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027131
27132 @param pWDICtx: pointer to the WLAN DAL context
27133 pEventData: pointer to the event information structure
27134
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 @see
27136 @return Result of the function call
27137*/
27138WDI_Status
27139WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027140(
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 WDI_ControlBlockType* pWDICtx,
27142 WDI_EventInfoType* pEventData
27143)
27144{
27145 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027146 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027147 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027148 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27150
27151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027153 -------------------------------------------------------------------------*/
27154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27155 ( NULL == pEventData->pEventData ))
27156 {
27157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027161 }
27162
27163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027164 "%s: Process UPD scan params ptr : %p",
27165 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027166
Jeff Johnsone7245742012-09-05 17:12:55 -070027167 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027168
27169 /*-------------------------------------------------------------------------
27170 Extract response and send it to UMAC
27171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027172 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27173 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 sizeof(halUpdScanParams.status));
27175
27176 uStatus = halUpdScanParams.status;
27177
27178 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027180
27181 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027183
Jeff Johnsone7245742012-09-05 17:12:55 -070027184 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027185
27186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027187 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027188 halUpdScanParams.status);
27189
27190 /*Notify UMAC*/
27191 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27192
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027194}
27195#endif // FEATURE_WLAN_SCAN_PNO
27196
27197#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027199WDI_8023MulticastListReq
27200(
27201 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27202 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27203 void* pUserData
27204)
27205{
27206 WDI_EventInfoType wdiEventData;
27207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27208
27209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027210 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027211
27212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027213 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 ------------------------------------------------------------------------*/
27215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27216 {
27217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27218 "WDI API call before module is initialized - Fail request");
27219
Jeff Johnsone7245742012-09-05 17:12:55 -070027220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 }
27222
27223 /*------------------------------------------------------------------------
27224 Fill in Event data and post to the Main FSM
27225 ------------------------------------------------------------------------*/
27226 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027227 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027229 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 wdiEventData.pUserData = pUserData;
27231
27232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27233}
27234
Jeff Johnsone7245742012-09-05 17:12:55 -070027235WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027236WDI_ReceiveFilterSetFilterReq
27237(
27238 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27239 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27240 void* pUserData
27241)
27242{
27243 WDI_EventInfoType wdiEventData;
27244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27245
27246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027247 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027248
27249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027251 ------------------------------------------------------------------------*/
27252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27253 {
27254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27255 "WDI API call before module is initialized - Fail request");
27256
Jeff Johnsone7245742012-09-05 17:12:55 -070027257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027258 }
27259
27260 /*------------------------------------------------------------------------
27261 Fill in Event data and post to the Main FSM
27262 ------------------------------------------------------------------------*/
27263 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027264 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27265 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027266 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27267 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027268 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027269 wdiEventData.pUserData = pUserData;
27270
27271
27272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27273}
27274
Jeff Johnsone7245742012-09-05 17:12:55 -070027275WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027276WDI_FilterMatchCountReq
27277(
27278 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27279 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27280 void* pUserData
27281)
27282{
27283 WDI_EventInfoType wdiEventData;
27284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27285
27286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027287 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027288
27289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 ------------------------------------------------------------------------*/
27292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27293 {
27294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27295 "WDI API call before module is initialized - Fail request");
27296
Jeff Johnsone7245742012-09-05 17:12:55 -070027297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027298 }
27299
27300 /*------------------------------------------------------------------------
27301 Fill in Event data and post to the Main FSM
27302 ------------------------------------------------------------------------*/
27303 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027304 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027305 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027306 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027307 wdiEventData.pUserData = pUserData;
27308
27309
27310 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27311}
27312
Jeff Johnsone7245742012-09-05 17:12:55 -070027313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027314WDI_ReceiveFilterClearFilterReq
27315(
27316 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27317 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27318 void* pUserData
27319)
27320{
27321 WDI_EventInfoType wdiEventData;
27322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27323
27324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027325 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027326
27327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027329 ------------------------------------------------------------------------*/
27330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27331 {
27332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27333 "WDI API call before module is initialized - Fail request");
27334
Jeff Johnsone7245742012-09-05 17:12:55 -070027335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027336 }
27337
27338 /*------------------------------------------------------------------------
27339 Fill in Event data and post to the Main FSM
27340 ------------------------------------------------------------------------*/
27341 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027342 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027344 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 wdiEventData.pUserData = pUserData;
27346
27347
27348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27349}
27350
27351/**
27352 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027353
27354 @param pWDICtx: pointer to the WLAN DAL context
27355 pEventData: pointer to the event information structure
27356
Jeff Johnson295189b2012-06-20 16:38:30 -070027357 @see
27358 @return Result of the function call
27359*/
27360WDI_Status
27361WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027362(
Jeff Johnson295189b2012-06-20 16:38:30 -070027363 WDI_ControlBlockType* pWDICtx,
27364 WDI_EventInfoType* pEventData
27365)
27366{
27367 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27368 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370 wpt_uint16 usDataOffset = 0;
27371 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027372 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 wpt_uint8 ucCurrentBSSSesIdx = 0;
27375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027376
27377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027378 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027379
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027380 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27381 if( NULL == pRcvFltMcAddrListType )
27382 {
27383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27384 "Failed to alloc in WDI_Process8023MulticastListReq");
27385 return WDI_STATUS_E_FAILURE;
27386 }
27387
Jeff Johnson295189b2012-06-20 16:38:30 -070027388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027390 -------------------------------------------------------------------------*/
27391 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027392 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027394 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027395 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27396 {
27397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027398 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027399 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027401 return WDI_STATUS_E_FAILURE;
27402 }
27403
27404 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27405 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27406 &pBSSSes);
27407 if ( NULL == pBSSSes )
27408 {
27409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027410 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027411 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 }
27414
27415 /*-----------------------------------------------------------------------
27416 Get message buffer
27417 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027418 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27419 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 sizeof(tHalRcvFltMcAddrListType),
27421 &pSendBuffer, &usDataOffset, &usSendSize))||
27422 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27423 {
27424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27425 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027426 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 pEventData, pwdiFltPktSetMcListReqParamsType,
27428 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027429 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 }
27433
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027434 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027436 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027437 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027438 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027439 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27440 sizeof(tSirMacAddr));
27441 }
27442
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027443 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027444 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027445 pRcvFltMcAddrListType,
27446 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027447
27448 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027449 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027450
27451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027452 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027454 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027455 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027456 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027457 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027458 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027459}
27460
27461/**
27462 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027463
27464 @param pWDICtx: pointer to the WLAN DAL context
27465 pEventData: pointer to the event information structure
27466
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 @see
27468 @return Result of the function call
27469*/
27470WDI_Status
27471WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027472(
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 WDI_ControlBlockType* pWDICtx,
27474 WDI_EventInfoType* pEventData
27475)
27476{
27477 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27478 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027479 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027480 wpt_uint16 usDataOffset = 0;
27481 wpt_uint16 usSendSize = 0;
27482 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027483 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027484 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027485 wpt_uint8 ucCurrentBSSSesIdx = 0;
27486 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027487 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27488 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027489
27490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027491 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027492
27493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 -------------------------------------------------------------------------*/
27496 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027497 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027498 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027499 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027500 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27501 {
27502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027505 return WDI_STATUS_E_FAILURE;
27506 }
27507
27508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27509 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27510 &pBSSSes);
27511 if ( NULL == pBSSSes )
27512 {
27513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027514 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027516 }
27517
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027518 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27519 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027520
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027521 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27522 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27523 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27524
27525 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27526 usSessRcvPktFilterCfgSize);
27527
27528 if(NULL == pSessRcvPktFilterCfg)
27529 {
27530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27531 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027532 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027533 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027534 WDI_ASSERT(0);
27535 return WDI_STATUS_E_FAILURE;
27536 }
27537
27538 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27539
27540 /*-----------------------------------------------------------------------
27541 Get message buffer
27542 -----------------------------------------------------------------------*/
27543
27544 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27545 usSessRcvPktFilterCfgSize,
27546 &pSendBuffer, &usDataOffset, &usSendSize))||
27547 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27548 {
27549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27550 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027551 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027552 pEventData, pwdiSetRcvPktFilterReqInfo,
27553 wdiReceiveFilterSetFilterCb);
27554 WDI_ASSERT(0);
27555 wpalMemoryFree(pSessRcvPktFilterCfg);
27556 return WDI_STATUS_E_FAILURE;
27557 }
27558
27559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027560 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027561 usSendSize,pSessRcvPktFilterCfg);
27562
27563 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27564 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27565 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27566 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27567
27568 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27569
27570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27571 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27572 pSessRcvPktFilterCfg->filterType);
27573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27574 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27575 pSessRcvPktFilterCfg->coleasceTime);
27576
27577 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27578 {
27579 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27580 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27581 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27582 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27583 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27584 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27585 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27586 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27587
27588 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27589 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27590 8);
27591 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27592 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27593 8);
27594
27595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027596 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027597 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27598 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27599
27600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027601 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027602 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27603 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27604
27605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027606 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027607 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27608 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27609 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27610 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27611 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27612 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27613
27614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027615 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027616 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27617 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27618 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27619 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27620 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27621 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27622 }
27623
27624 wpalMemoryCopy( pSendBuffer+usDataOffset,
27625 pSessRcvPktFilterCfg,
27626 usSessRcvPktFilterCfgSize);
27627
27628
27629 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27630 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27631
27632 wpalMemoryFree(pSessRcvPktFilterCfg);
27633
27634 }
27635 /*If SLM_SESSIONIZATION is not supported then do this */
27636 else
27637 {
27638 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27639 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27640 * sizeof(tHalRcvPktFilterParams));
27641
27642 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027643 usRcvPktFilterCfgSize);
27644
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027645 if(NULL == pRcvPktFilterCfg)
27646 {
27647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27648 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027649 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027650 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027651 WDI_ASSERT(0);
27652 return WDI_STATUS_E_FAILURE;
27653 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027654
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027655 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027656
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027657 /*-----------------------------------------------------------------------
27658 Get message buffer
27659 -----------------------------------------------------------------------*/
27660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027661 usRcvPktFilterCfgSize,
27662 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027663 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27664 {
27665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027666 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027667 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027668 pEventData, pwdiSetRcvPktFilterReqInfo,
27669 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027670 WDI_ASSERT(0);
27671 wpalMemoryFree(pRcvPktFilterCfg);
27672 return WDI_STATUS_E_FAILURE;
27673 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027674
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027676 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027677 usSendSize,usRcvPktFilterCfgSize);
27678
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027679 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27680 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27681 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27682 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027683
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027685 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027686 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027689 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027690
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027691 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27692 {
27693 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27694 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27695 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27696 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27697 pRcvPktFilterCfg->paramsData[i].dataOffset =
27698 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27699 pRcvPktFilterCfg->paramsData[i].dataLength =
27700 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027701
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027702 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027703 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27704 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027705 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27707 8);
27708
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027710 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027711 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027712 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27713
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027715 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027716 pRcvPktFilterCfg->paramsData[i].dataOffset,
27717 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027720 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027721 pRcvPktFilterCfg->paramsData[i].compareData[0],
27722 pRcvPktFilterCfg->paramsData[i].compareData[1],
27723 pRcvPktFilterCfg->paramsData[i].compareData[2],
27724 pRcvPktFilterCfg->paramsData[i].compareData[3],
27725 pRcvPktFilterCfg->paramsData[i].compareData[4],
27726 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027727
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027729 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027730 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27731 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27732 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27733 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27734 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27735 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27736 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027737
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027738 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027739 pRcvPktFilterCfg,
27740 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027741
27742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027743 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27744 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027747 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027748 wpalMemoryFree(pRcvPktFilterCfg);
27749 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027754 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027755 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027756}
27757
27758/**
27759 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027760
27761 @param pWDICtx: pointer to the WLAN DAL context
27762 pEventData: pointer to the event information structure
27763
Jeff Johnson295189b2012-06-20 16:38:30 -070027764 @see
27765 @return Result of the function call
27766*/
27767WDI_Status
27768WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027769(
Jeff Johnson295189b2012-06-20 16:38:30 -070027770 WDI_ControlBlockType* pWDICtx,
27771 WDI_EventInfoType* pEventData
27772)
27773{
27774 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27775 NULL;
27776 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27777 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 wpt_uint16 usDataOffset = 0;
27780 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027781 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27782 wpt_uint8 ucCurrentBSSSesIdx = 0;
27783 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
27785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027786 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027787
27788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 -------------------------------------------------------------------------*/
27791 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027792 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027794 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027795 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27796 {
27797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027801 }
27802
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027803 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27804 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27805 &pBSSSes);
27806 if ( NULL == pBSSSes )
27807 {
27808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027809 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027810 return WDI_STATUS_E_FAILURE;
27811 }
27812
Jeff Johnson295189b2012-06-20 16:38:30 -070027813 /*-----------------------------------------------------------------------
27814 Get message buffer
27815 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027816 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27817 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027818 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027820 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 {
27822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27823 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027824 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27826 wdiFilterMatchCountCb);
27827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027829 }
27830
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027831 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27832 wpalMemoryCopy( pSendBuffer+usDataOffset,
27833 &rcvFltPktMatchCntReqParam,
27834 sizeof(rcvFltPktMatchCntReqParam));
27835
Jeff Johnson295189b2012-06-20 16:38:30 -070027836 //
27837 // Don't need to fill send buffer other than header
27838 //
27839 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027840 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027841
27842
27843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027844 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27847 wdiFilterMatchCountCb,
27848 pEventData->pUserData,
27849 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027850}
27851
27852/**
27853 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027854
27855 @param pWDICtx: pointer to the WLAN DAL context
27856 pEventData: pointer to the event information structure
27857
Jeff Johnson295189b2012-06-20 16:38:30 -070027858 @see
27859 @return Result of the function call
27860*/
27861WDI_Status
27862WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027863(
Jeff Johnson295189b2012-06-20 16:38:30 -070027864 WDI_ControlBlockType* pWDICtx,
27865 WDI_EventInfoType* pEventData
27866)
Jeff Johnsone7245742012-09-05 17:12:55 -070027867{
Jeff Johnson295189b2012-06-20 16:38:30 -070027868 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27869 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027871 wpt_uint16 usDataOffset = 0;
27872 wpt_uint16 usSendSize = 0;
27873 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027874 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027875 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027876
27877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027878 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027879
27880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 -------------------------------------------------------------------------*/
27883 if (( NULL == pEventData ) ||
27884 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27885 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027886 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027887 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27888 {
27889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027892 return WDI_STATUS_E_FAILURE;
27893 }
27894
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027895 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027896 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27897 &pBSSSes);
27898 if ( NULL == pBSSSes )
27899 {
27900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027901 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027903 }
27904
27905 /*-----------------------------------------------------------------------
27906 Get message buffer
27907 -----------------------------------------------------------------------*/
27908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027909 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027910 sizeof(tHalRcvFltPktClearParam),
27911 &pSendBuffer, &usDataOffset, &usSendSize))||
27912 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27913 {
27914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27915 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027916 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 pEventData, pwdiRcvFltPktClearReqParamsType,
27918 wdiRcvFltPktClearFilterCb);
27919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 }
27922
27923
27924 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027925 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027926 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027927 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027928
Jeff Johnsone7245742012-09-05 17:12:55 -070027929 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27930 wpalMemoryCopy( pSendBuffer+usDataOffset,
27931 &rcvFltPktClearParam,
27932 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027933
27934 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027935 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027936
27937
27938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027939 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027943 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027944}
27945
27946/**
27947 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027948
27949 @param pWDICtx: pointer to the WLAN DAL context
27950 pEventData: pointer to the event information structure
27951
Jeff Johnson295189b2012-06-20 16:38:30 -070027952 @see
27953 @return Result of the function call
27954*/
27955WDI_Status
27956WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027957(
Jeff Johnson295189b2012-06-20 16:38:30 -070027958 WDI_ControlBlockType* pWDICtx,
27959 WDI_EventInfoType* pEventData
27960)
27961{
Jeff Johnson295189b2012-06-20 16:38:30 -070027962 eHalStatus halStatus;
27963 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027964 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27965 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27967
27968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027969 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027970
27971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027973 -------------------------------------------------------------------------*/
27974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27975 ( NULL == pEventData->pEventData ))
27976 {
27977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027981 }
27982
Jeff Johnsone7245742012-09-05 17:12:55 -070027983 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027984
27985 /*-------------------------------------------------------------------------
27986 Extract response and send it to UMAC
27987 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027988 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27989 {
27990 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27991 pEventData->pEventData,
27992 sizeof(halRcvFltPktSetMcListRsp));
27993
27994 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27995 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27996 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27997 halRcvFltPktSetMcListRsp.bssIdx;
27998 }
27999 else
28000 {
28001 halStatus = *((eHalStatus*)pEventData->pEventData);
28002 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28003 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028004
28005 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028006 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028007
Jeff Johnsone7245742012-09-05 17:12:55 -070028008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028009}
28010
28011/**
28012 @brief Process Set Rsp function (called when a
28013 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028014
28015 @param pWDICtx: pointer to the WLAN DAL context
28016 pEventData: pointer to the event information structure
28017
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 @see
28019 @return Result of the function call
28020*/
28021WDI_Status
28022WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028023(
Jeff Johnson295189b2012-06-20 16:38:30 -070028024 WDI_ControlBlockType* pWDICtx,
28025 WDI_EventInfoType* pEventData
28026)
28027{
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 eHalStatus halStatus;
28029 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028030 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28031 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028032 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28033
28034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028035 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028036
28037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028039 -------------------------------------------------------------------------*/
28040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28041 ( NULL == pEventData->pEventData ))
28042 {
28043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028047 }
28048
28049 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028050 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028051
28052 /*-------------------------------------------------------------------------
28053 Extract response and send it to UMAC
28054 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028055 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28056 {
28057 wpalMemoryCopy( &halSetPktFilterRspParams,
28058 pEventData->pEventData,
28059 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028060
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028061 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28062 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28063 }
28064 else
28065 {
28066 halStatus = *((eHalStatus*)pEventData->pEventData);
28067 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28068 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028070 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028071
Jeff Johnsone7245742012-09-05 17:12:55 -070028072 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028073}
28074
28075/**
28076 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028077
28078 @param pWDICtx: pointer to the WLAN DAL context
28079 pEventData: pointer to the event information structure
28080
Jeff Johnson295189b2012-06-20 16:38:30 -070028081 @see
28082 @return Result of the function call
28083*/
28084WDI_Status
28085WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028086(
Jeff Johnson295189b2012-06-20 16:38:30 -070028087 WDI_ControlBlockType* pWDICtx,
28088 WDI_EventInfoType* pEventData
28089)
28090{
Jeff Johnson295189b2012-06-20 16:38:30 -070028091 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028092 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028093 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28094 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028095
28096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28097
28098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028099 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028100
28101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028103 -------------------------------------------------------------------------*/
28104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28105 ( NULL == pEventData->pEventData ))
28106 {
28107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028111 }
28112
Jeff Johnsone7245742012-09-05 17:12:55 -070028113 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028114
28115 /*-------------------------------------------------------------------------
28116 Extract response and send it to UMAC
28117 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028118 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28119 {
28120 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28121 pEventData->pEventData,
28122 sizeof(halRcvFltrPktMatachRsp));
28123
28124 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28125 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28126 }
28127 else
28128 {
28129 halStatus = *((eHalStatus*)pEventData->pEventData);
28130 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28131 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028132
28133 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028134 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028135
Jeff Johnsone7245742012-09-05 17:12:55 -070028136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028137}
28138
28139/**
28140 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028141
28142 @param pWDICtx: pointer to the WLAN DAL context
28143 pEventData: pointer to the event information structure
28144
Jeff Johnson295189b2012-06-20 16:38:30 -070028145 @see
28146 @return Result of the function call
28147*/
28148WDI_Status
28149WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028150(
Jeff Johnson295189b2012-06-20 16:38:30 -070028151 WDI_ControlBlockType* pWDICtx,
28152 WDI_EventInfoType* pEventData
28153)
28154{
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 eHalStatus halStatus;
28156 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028157 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28158 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28160
28161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028162 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028163
28164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028166 -------------------------------------------------------------------------*/
28167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28168 ( NULL == pEventData->pEventData ))
28169 {
28170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028174 }
28175
28176 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028177 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028178
28179 /*-------------------------------------------------------------------------
28180 Extract response and send it to UMAC
28181 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028182 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28183 {
28184 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28185 pEventData->pEventData,
28186 sizeof(halRcvFltPktClearRspMsg));
28187
28188 wdiRcvFltPktClearRspParamsType.wdiStatus =
28189 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28190 wdiRcvFltPktClearRspParamsType.bssIdx =
28191 halRcvFltPktClearRspMsg.bssIdx;
28192 }
28193 else
28194 {
28195 halStatus = *((eHalStatus*)pEventData->pEventData);
28196 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28197 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028198
28199 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028200 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028201
Jeff Johnsone7245742012-09-05 17:12:55 -070028202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028203}
28204#endif // WLAN_FEATURE_PACKET_FILTERING
28205
28206/**
28207 @brief Process Shutdown Rsp function
28208 There is no shutdown response comming from HAL
28209 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028210
Jeff Johnson295189b2012-06-20 16:38:30 -070028211 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028212 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028213
28214 @see
28215 @return Result of the function call
28216*/
28217WDI_Status
28218WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028219(
Jeff Johnson295189b2012-06-20 16:38:30 -070028220 WDI_ControlBlockType* pWDICtx,
28221 WDI_EventInfoType* pEventData
28222)
28223{
28224 /*There is no shutdown response comming from HAL - function just kept for
28225 simmetry */
28226 WDI_ASSERT(0);
28227 return WDI_STATUS_SUCCESS;
28228}/*WDI_ProcessShutdownRsp*/
28229
28230/**
28231 @brief WDI_SetPowerParamsReq
28232
Jeff Johnsone7245742012-09-05 17:12:55 -070028233 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028234 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028235
Jeff Johnson295189b2012-06-20 16:38:30 -070028236 wdiPowerParamsCb: callback for passing back the response
28237 of the Set Power Params operation received from the
28238 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028239
Jeff Johnson295189b2012-06-20 16:38:30 -070028240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028241 callback
28242
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 @return Result of the function call
28244*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028246WDI_SetPowerParamsReq
28247(
28248 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28249 WDI_SetPowerParamsCb wdiPowerParamsCb,
28250 void* pUserData
28251)
28252{
28253 WDI_EventInfoType wdiEventData;
28254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28255
28256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028258 ------------------------------------------------------------------------*/
28259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28260 {
28261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28262 "WDI API call before module is initialized - Fail request");
28263
Jeff Johnsone7245742012-09-05 17:12:55 -070028264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028265 }
28266
28267 /*------------------------------------------------------------------------
28268 Fill in Event data and post to the Main FSM
28269 ------------------------------------------------------------------------*/
28270 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028271 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028272 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028273 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028274 wdiEventData.pUserData = pUserData;
28275
28276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28277}/*WDI_SetPowerParamsReq*/
28278
28279/**
28280 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028281
28282 @param pWDICtx: pointer to the WLAN DAL context
28283 pEventData: pointer to the event information structure
28284
Jeff Johnson295189b2012-06-20 16:38:30 -070028285 @see
28286 @return Result of the function call
28287*/
28288WDI_Status
28289WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028290(
Jeff Johnson295189b2012-06-20 16:38:30 -070028291 WDI_ControlBlockType* pWDICtx,
28292 WDI_EventInfoType* pEventData
28293)
28294{
28295 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28296 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028298 wpt_uint16 usDataOffset = 0;
28299 wpt_uint16 usSendSize = 0;
28300 tSetPowerParamsType powerParams;
28301
28302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028304 -------------------------------------------------------------------------*/
28305 if (( NULL == pEventData ) ||
28306 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28307 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28308 {
28309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028313 }
28314
28315 /*-----------------------------------------------------------------------
28316 Get message buffer
28317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028319 sizeof(powerParams),
28320 &pSendBuffer, &usDataOffset, &usSendSize))||
28321 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28322 {
28323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028324 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028325 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028328 }
28329
28330 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028331 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028332 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28333
28334 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028335 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028336 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28337
28338 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028339 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028340 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28341
28342 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028343 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028344 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28345
28346 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028347 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028348 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28349
28350 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028351 powerParams.uBETInterval =
28352 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028353
Yue Mac24062f2013-05-13 17:01:29 -070028354 /* MAX LI for modulated DTIM */
28355 powerParams.uMaxLIModulatedDTIM =
28356 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028357
28358 wpalMemoryCopy( pSendBuffer+usDataOffset,
28359 &powerParams,
28360 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028361
28362 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028363 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028364
28365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028366 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28369 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028370}
28371
28372/**
28373 @brief Process Power Params Rsp function (called when a
28374 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028375
28376 @param pWDICtx: pointer to the WLAN DAL context
28377 pEventData: pointer to the event information structure
28378
Jeff Johnson295189b2012-06-20 16:38:30 -070028379 @see
28380 @return Result of the function call
28381*/
28382WDI_Status
28383WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028384(
Jeff Johnson295189b2012-06-20 16:38:30 -070028385 WDI_ControlBlockType* pWDICtx,
28386 WDI_EventInfoType* pEventData
28387)
28388{
28389 WDI_Status wdiStatus;
28390 eHalStatus halStatus;
28391 WDI_SetPowerParamsCb wdiPowerParamsCb;
28392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28393
28394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028396 -------------------------------------------------------------------------*/
28397 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28398 ( NULL == pEventData->pEventData ))
28399 {
28400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028404 }
28405
Jeff Johnsone7245742012-09-05 17:12:55 -070028406 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028407
28408 /*-------------------------------------------------------------------------
28409 Extract response and send it to UMAC
28410 -------------------------------------------------------------------------*/
28411 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028413
28414 /*Notify UMAC*/
28415 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28416
Jeff Johnsone7245742012-09-05 17:12:55 -070028417 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028418}/*WDI_ProcessSetPowerParamsRsp*/
28419
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028420/**
28421 @brief WDI_dhcpStartInd
28422 Host will send an event to the FW when DHCP is initiated
28423
28424 @param
28425 WDI_DHCPInd: DHCP Indication
28426 @see
28427 @return Result of the function call
28428*/
28429WDI_Status
28430WDI_dhcpStartInd
28431(
28432 WDI_DHCPInd *wdiDHCPInd
28433)
28434{
28435 WDI_EventInfoType wdiEventData;
28436
28437 /*------------------------------------------------------------------------
28438 Sanity Check
28439 ------------------------------------------------------------------------*/
28440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28441 {
28442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28443 "WDI API call before module is initialized - Fail request");
28444
28445 return WDI_STATUS_E_NOT_ALLOWED;
28446 }
28447
28448 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28449 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028450 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028451 wdiEventData.pCBfnc = NULL;
28452 wdiEventData.pUserData = NULL;
28453
28454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28455}
28456
28457
28458/**
28459 @brief WDI_dhcpStopInd
28460 Host will send an event to the FW when DHCP is completed
28461
28462 @param
28463 WDI_DHCPInd: DHCP Indication
28464 @see
28465 @return Result of the function call
28466*/
28467WDI_Status
28468WDI_dhcpStopInd
28469(
28470 WDI_DHCPInd *wdiDHCPInd
28471)
28472{
28473 WDI_EventInfoType wdiEventData;
28474
28475 /*------------------------------------------------------------------------
28476 Sanity Check
28477 ------------------------------------------------------------------------*/
28478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28479 {
28480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28481 "WDI API call before module is initialized - Fail request");
28482
28483 return WDI_STATUS_E_NOT_ALLOWED;
28484 }
28485
28486 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28487 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028488 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028489 wdiEventData.pCBfnc = NULL;
28490 wdiEventData.pUserData = NULL;
28491
28492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28493}
28494
28495
28496/**
28497 @brief Process DHCP Start Indication message and post it to HAL
28498
28499 @param pWDICtx: pointer to the WLAN DAL context
28500 pEventData: pointer to the event information structure
28501
28502 @see
28503 @return Result of the function call
28504*/
28505WDI_Status
28506WDI_ProcessDHCPStartInd
28507(
28508 WDI_ControlBlockType* pWDICtx,
28509 WDI_EventInfoType* pEventData
28510)
28511{
28512 wpt_uint8* pSendBuffer = NULL;
28513 wpt_uint16 usDataOffset = 0;
28514 wpt_uint16 usSendSize = 0;
28515 wpt_uint16 usLen = 0;
28516 WDI_DHCPInd* pwdiDHCPInd = NULL;
28517 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028518 WDI_Status wdiStatus;
28519
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028520
28521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28522
28523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28524 "%s", __func__);
28525
28526 /*-------------------------------------------------------------------------
28527 Sanity check
28528 -------------------------------------------------------------------------*/
28529 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28530 {
28531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28532 "%s: Invalid parameters", __func__);
28533 WDI_ASSERT(0);
28534 return WDI_STATUS_E_FAILURE;
28535 }
28536 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28537 /*-----------------------------------------------------------------------
28538 Get message buffer
28539 -----------------------------------------------------------------------*/
28540
28541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28542 WDI_DHCP_START_IND,
28543 sizeof(tDHCPInfo),
28544 &pSendBuffer, &usDataOffset, &usSendSize))||
28545 ( usSendSize < (usDataOffset + usLen )))
28546 {
28547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28548 "Unable to get send buffer in DHCP Start req %p ",
28549 pEventData);
28550 WDI_ASSERT(0);
28551 return WDI_STATUS_E_FAILURE;
28552 }
28553
Sandeep Puligillaee789512014-02-13 19:14:52 +053028554 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028555 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28556 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28557 WDI_MAC_ADDR_LEN);
28558
28559 pWDICtx->pReqStatusUserData = NULL;
28560 pWDICtx->pfncRspCB = NULL;
28561
28562 /*-------------------------------------------------------------------------
28563 Send DHCP Start Indication to HAL
28564 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028565 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28566 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028567}/*WDI_ProcessDHCPStartInd*/
28568
28569/**
28570 @brief Process DHCP Stop indication message and post it to HAL
28571
28572 @param pWDICtx: pointer to the WLAN DAL context
28573 pEventData: pointer to the event information structure
28574
28575 @see
28576 @return Result of the function call
28577*/
28578WDI_Status
28579WDI_ProcessDHCPStopInd
28580(
28581 WDI_ControlBlockType* pWDICtx,
28582 WDI_EventInfoType* pEventData
28583)
28584{
28585 wpt_uint8* pSendBuffer = NULL;
28586 wpt_uint16 usDataOffset = 0;
28587 wpt_uint16 usSendSize = 0;
28588 wpt_uint16 usLen = 0;
28589 WDI_DHCPInd* pwdiDHCPInd = NULL;
28590 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028591 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028592
28593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28594
28595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28596 "%s", __func__);
28597
28598 /*-------------------------------------------------------------------------
28599 Sanity check
28600 -------------------------------------------------------------------------*/
28601
28602 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28603 {
28604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28605 "%s: Invalid parameters", __func__);
28606 WDI_ASSERT(0);
28607 return WDI_STATUS_E_FAILURE;
28608 }
28609 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28610 /*-----------------------------------------------------------------------
28611 Get message buffer
28612 -----------------------------------------------------------------------*/
28613
28614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28615 WDI_DHCP_STOP_IND,
28616 sizeof(tDHCPInfo),
28617 &pSendBuffer, &usDataOffset, &usSendSize))||
28618 ( usSendSize < (usDataOffset + usLen )))
28619 {
28620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28621 "Unable to get send buffer in DHCP Start req %p ",
28622 pEventData);
28623 WDI_ASSERT(0);
28624 return WDI_STATUS_E_FAILURE;
28625 }
28626
Sandeep Puligillaee789512014-02-13 19:14:52 +053028627 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028628 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28629 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28630 WDI_MAC_ADDR_LEN);
28631
28632 pWDICtx->pReqStatusUserData = NULL;
28633 pWDICtx->pfncRspCB = NULL;
28634 /*-------------------------------------------------------------------------
28635 Send DHCP Stop indication to HAL
28636 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028637 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28638 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028639
28640}/*WDI_ProcessDHCPStopInd*/
28641
28642
Jeff Johnson295189b2012-06-20 16:38:30 -070028643#ifdef WLAN_FEATURE_GTK_OFFLOAD
28644/**
28645 @brief WDI_GTKOffloadReq will be called when the upper MAC
28646 wants to set GTK Rekey Counter while in power save. Upon
28647 the call of this API the WLAN DAL will pack and send a
28648 HAL GTK offload request message to the lower RIVA
28649 sub-system if DAL is in state STARTED.
28650
28651 In state BUSY this request will be queued. Request won't
28652 be allowed in any other state.
28653
28654 WDI_PostAssocReq must have been called.
28655
28656 @param pwdiGtkOffloadParams: the GTK offload as specified
28657 by the Device Interface
28658
28659 wdiGtkOffloadCb: callback for passing back the response
28660 of the GTK offload operation received from the device
28661
28662 pUserData: user data will be passed back with the
28663 callback
28664
28665 @see WDI_PostAssocReq
28666 @return Result of the function call
28667*/
28668WDI_Status
28669WDI_GTKOffloadReq
28670(
28671 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28672 WDI_GtkOffloadCb wdiGtkOffloadCb,
28673 void* pUserData
28674)
28675{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028676 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28678
28679 /*------------------------------------------------------------------------
28680 Sanity Check
28681 ------------------------------------------------------------------------*/
28682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28683 {
28684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28685 "WDI API call before module is initialized - Fail request");
28686
28687 return WDI_STATUS_E_NOT_ALLOWED;
28688 }
28689
28690 /*------------------------------------------------------------------------
28691 Fill in Event data and post to the Main FSM
28692 ------------------------------------------------------------------------*/
28693 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28694 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028695 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028696 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28697 wdiEventData.pUserData = pUserData;
28698
28699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28700}
28701
28702
28703/**
28704 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28705 MAC wants to get GTK Rekey Counter while in power save.
28706 Upon the call of this API the WLAN DAL will pack and
28707 send a HAL GTK offload request message to the lower RIVA
28708 sub-system if DAL is in state STARTED.
28709
28710 In state BUSY this request will be queued. Request won't
28711 be allowed in any other state.
28712
28713 WDI_PostAssocReq must have been called.
28714
28715 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28716 Information Message as specified by the
28717 Device Interface
28718
28719 wdiGtkOffloadGetInfoCb: callback for passing back the
28720 response of the GTK offload operation received from the
28721 device
28722
28723 pUserData: user data will be passed back with the
28724 callback
28725
28726 @see WDI_PostAssocReq
28727 @return Result of the function call
28728*/
28729WDI_Status
28730WDI_GTKOffloadGetInfoReq
28731(
28732 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28733 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28734 void* pUserData
28735)
28736{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028737 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28739
28740 /*------------------------------------------------------------------------
28741 Sanity Check
28742 ------------------------------------------------------------------------*/
28743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28744 {
28745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28746 "WDI API call before module is initialized - Fail request");
28747
28748 return WDI_STATUS_E_NOT_ALLOWED;
28749 }
28750
28751 /*------------------------------------------------------------------------
28752 Fill in Event data and post to the Main FSM
28753 ------------------------------------------------------------------------*/
28754 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28755 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28756 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28757 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28758 wdiEventData.pUserData = pUserData;
28759
28760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28761}
28762
28763
28764/**
28765 @brief Process set GTK Offload Request function
28766
28767 @param pWDICtx: pointer to the WLAN DAL context
28768 pEventData: pointer to the event information structure
28769
28770 @see
28771 @return Result of the function call
28772*/
28773WDI_Status
28774WDI_ProcessGTKOffloadReq
28775(
28776 WDI_ControlBlockType* pWDICtx,
28777 WDI_EventInfoType* pEventData
28778)
28779{
28780 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28781 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28782 wpt_uint8* pSendBuffer = NULL;
28783 wpt_uint16 usDataOffset = 0;
28784 wpt_uint16 usSendSize = 0;
28785 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028786 wpt_uint8 ucCurrentSessionId = 0;
28787 WDI_BSSSessionType* pBSSSes = NULL;
28788
Jeff Johnson295189b2012-06-20 16:38:30 -070028789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28790
28791 /*-------------------------------------------------------------------------
28792 Sanity check
28793 -------------------------------------------------------------------------*/
28794 if (( NULL == pEventData ) ||
28795 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28796 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28797 {
28798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028800 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028801 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028802 }
28803
28804 /*-----------------------------------------------------------------------
28805 Get message buffer
28806 -----------------------------------------------------------------------*/
28807 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28808 sizeof(gtkOffloadReqParams),
28809 &pSendBuffer, &usDataOffset, &usSendSize))||
28810 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28811 {
28812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028813 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028814 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28815 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 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28821 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028822 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28823 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28824 &pBSSSes);
28825 if ( NULL == pBSSSes )
28826 {
28827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028828 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028829 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028830 }
28831
28832 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28833
Jeff Johnson295189b2012-06-20 16:38:30 -070028834 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28835 // Copy KCK
28836 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28837 // Copy KEK
28838 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28839 // Copy KeyReplayCounter
28840 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28841
28842 wpalMemoryCopy( pSendBuffer+usDataOffset,
28843 &gtkOffloadReqParams,
28844 sizeof(gtkOffloadReqParams));
28845
28846 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28847 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28848
28849 /*-------------------------------------------------------------------------
28850 Send Get STA Request to HAL
28851 -------------------------------------------------------------------------*/
28852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28853 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028854
28855fail:
28856 // Release the message buffer so we don't leak
28857 wpalMemoryFree(pSendBuffer);
28858
28859failRequest:
28860 //WDA should have failure check to avoid the memory leak
28861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028862}
28863
28864
28865/**
28866 @brief Process GTK Offload Get Information Request function
28867
28868 @param pWDICtx: pointer to the WLAN DAL context
28869 pEventData: pointer to the event information structure
28870
28871 @see
28872 @return Result of the function call
28873*/
28874WDI_Status
28875WDI_ProcessGTKOffloadGetInfoReq
28876(
28877 WDI_ControlBlockType* pWDICtx,
28878 WDI_EventInfoType* pEventData
28879)
28880{
28881 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28882 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28883 wpt_uint8* pSendBuffer = NULL;
28884 wpt_uint16 usDataOffset = 0;
28885 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028886 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28887 wpt_uint8 ucCurrentSessionId = 0;
28888 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028889
28890 /*-------------------------------------------------------------------------
28891 Sanity check
28892 -------------------------------------------------------------------------*/
28893 if (( NULL == pEventData ) ||
28894 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28895 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28896 {
28897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028899 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028900 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028901 }
28902
28903 /*-----------------------------------------------------------------------
28904 Get message buffer
28905 -----------------------------------------------------------------------*/
28906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028907 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028908 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028909 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028910 {
28911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028912 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28914 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028915 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028916 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028917 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28918 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28919 &pBSSSes);
28920 if ( NULL == pBSSSes )
28921 {
28922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028923 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028924 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028925 }
28926 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028927
28928 //
28929 // Don't need to fill send buffer other than header
28930 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028931 wpalMemoryCopy( pSendBuffer+usDataOffset,
28932 &halGtkOffloadGetInfoReqParams,
28933 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028934
28935 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28936 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28937
28938 /*-------------------------------------------------------------------------
28939 Send Get STA Request to HAL
28940 -------------------------------------------------------------------------*/
28941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28942 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028943fail:
28944 // Release the message buffer so we don't leak
28945 wpalMemoryFree(pSendBuffer);
28946
28947failRequest:
28948 //WDA should have failure check to avoid the memory leak
28949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028950}
28951
28952/**
28953 @brief Process host offload Rsp function (called when a
28954 response is being received over the bus from HAL)
28955
28956 @param pWDICtx: pointer to the WLAN DAL context
28957 pEventData: pointer to the event information structure
28958
28959 @see
28960 @return Result of the function call
28961*/
28962WDI_Status
28963WDI_ProcessGtkOffloadRsp
28964(
28965 WDI_ControlBlockType* pWDICtx,
28966 WDI_EventInfoType* pEventData
28967)
28968{
Jeff Johnson295189b2012-06-20 16:38:30 -070028969 eHalStatus halStatus;
28970 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028971 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28972 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028973
28974 /*-------------------------------------------------------------------------
28975 Sanity check
28976 -------------------------------------------------------------------------*/
28977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28978 ( NULL == pEventData->pEventData))
28979 {
28980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028982 WDI_ASSERT(0);
28983 return WDI_STATUS_E_FAILURE;
28984 }
28985
Wilson Yang00256342013-10-10 23:13:38 -070028986 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28987
Jeff Johnson295189b2012-06-20 16:38:30 -070028988 /*-------------------------------------------------------------------------
28989 Extract response and send it to UMAC
28990 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028991 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28992 {
28993 wpalMemoryCopy( &halGtkOffloadRspParams,
28994 pEventData->pEventData,
28995 sizeof(halGtkOffloadRspParams));
28996
28997 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028998 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028999 wdiGtkOffloadRsparams.bssIdx =
29000 halGtkOffloadRspParams.bssIdx;
29001 }
29002 else
29003 {
29004 halStatus = *((eHalStatus*)pEventData->pEventData);
29005 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29006 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029007
29008 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029009 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029010
29011 return WDI_STATUS_SUCCESS;
29012}
29013
29014/**
29015 @brief Process GTK Offload Get Information Response function
29016
29017 @param pWDICtx: pointer to the WLAN DAL context
29018 pEventData: pointer to the event information structure
29019
29020 @see
29021 @return Result of the function call
29022*/
29023WDI_Status
29024WDI_ProcessGTKOffloadGetInfoRsp
29025(
29026 WDI_ControlBlockType* pWDICtx,
29027 WDI_EventInfoType* pEventData
29028)
29029{
Jeff Johnson295189b2012-06-20 16:38:30 -070029030 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029031 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029032 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29033 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029034 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029035
Jeff Johnson295189b2012-06-20 16:38:30 -070029036
29037 /*-------------------------------------------------------------------------
29038 Sanity check
29039 -------------------------------------------------------------------------*/
29040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29041 ( NULL == pEventData->pEventData ))
29042 {
29043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029045 WDI_ASSERT(0);
29046 return WDI_STATUS_E_FAILURE;
29047 }
29048
Wilson Yang00256342013-10-10 23:13:38 -070029049 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29050
29051 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029052 Extract response and send it to UMAC
29053 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029054 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29055 {
29056 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29057 pEventData->pEventData,
29058 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029060 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029061 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029062 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29063 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29064 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29065 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29066 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29067 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29068 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29069 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029070
29071 wpalMutexAcquire(&pWDICtx->wptMutex);
29072 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29073 &pBSSSes);
29074
29075 if ( NULL == pBSSSes )
29076 {
29077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29078 "Association sequence for this BSS does not exist or "
29079 "association no longer in progress - mysterious HAL response");
29080 wpalMutexRelease(&pWDICtx->wptMutex);
29081 return WDI_STATUS_E_NOT_ALLOWED;
29082 }
29083
29084 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29085 sizeof (wpt_macAddr));
29086 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029087 }
29088 else
29089 {
29090 halStatus = *((eHalStatus*)pEventData->pEventData);
29091 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29092 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029093 /*Notify UMAC*/
29094 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29095 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029096 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029097
29098 return WDI_STATUS_SUCCESS;
29099}
29100#endif // WLAN_FEATURE_GTK_OFFLOAD
29101
29102#ifdef WLAN_WAKEUP_EVENTS
29103WDI_Status
29104WDI_ProcessWakeReasonInd
29105(
29106 WDI_ControlBlockType* pWDICtx,
29107 WDI_EventInfoType* pEventData
29108)
29109{
29110 WDI_LowLevelIndType *pWdiInd;
29111 tpWakeReasonParams pWakeReasonParams;
29112 wpt_uint32 allocSize = 0;
29113
29114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029115 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029116
29117 /*-------------------------------------------------------------------------
29118 Sanity check
29119 -------------------------------------------------------------------------*/
29120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29121 ( NULL == pEventData->pEventData ))
29122 {
29123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029125 WDI_ASSERT( 0 );
29126 return WDI_STATUS_E_FAILURE;
29127 }
29128
29129 /*-------------------------------------------------------------------------
29130 Extract indication and send it to UMAC
29131 -------------------------------------------------------------------------*/
29132 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29133
29134 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29135
29136 //Allocate memory for WDI_WakeReasonIndType structure
29137 pWdiInd = wpalMemoryAllocate(allocSize) ;
29138
29139 if(NULL == pWdiInd)
29140 {
29141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029142 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029143 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029144 WDI_ASSERT(0);
29145 return WDI_STATUS_E_FAILURE;
29146 }
29147
29148 wpalMemoryZero(pWdiInd, allocSize);
29149
29150 /* Fill in the indication parameters*/
29151 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29152 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29153 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29154 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29155 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29156 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29157 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29158 &(pWakeReasonParams->aDataStart[0]),
29159 pWakeReasonParams->ulStoredDataLen);
29160
ltimariub77f24b2013-01-24 18:54:33 -080029161
29162 if ( pWDICtx->wdiLowLevelIndCB )
29163 {
29164 /*Notify UMAC*/
29165 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29166 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029167
29168 //Free memory allocated for WDI_WakeReasonIndType structure
29169 wpalMemoryFree(pWdiInd);
29170
29171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029172 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029173
29174 return WDI_STATUS_SUCCESS;
29175}
29176#endif // WLAN_WAKEUP_EVENTS
29177
29178void WDI_GetWcnssCompiledApiVersion
29179(
29180 WDI_WlanVersionType *pWcnssApiVersion
29181)
29182{
29183 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29184 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29185 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29186 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29187}
29188
29189/**
29190 @brief Process Set TM Level Rsp function (called when a
29191 response is being received over the bus from HAL)
29192
29193 @param pWDICtx: pointer to the WLAN DAL context
29194 pEventData: pointer to the event information structure
29195
29196 @see
29197 @return Result of the function call
29198*/
29199WDI_Status
29200WDI_ProcessSetTmLevelRsp
29201(
29202 WDI_ControlBlockType* pWDICtx,
29203 WDI_EventInfoType* pEventData
29204)
29205{
29206 WDI_Status wdiStatus;
29207 eHalStatus halStatus;
29208 WDI_SetTmLevelCb wdiSetTmLevelCb;
29209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29210
29211 /*-------------------------------------------------------------------------
29212 Sanity check
29213 -------------------------------------------------------------------------*/
29214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29215 ( NULL == pEventData->pEventData ))
29216 {
29217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029219 WDI_ASSERT(0);
29220 return WDI_STATUS_E_FAILURE;
29221 }
29222
29223 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29224
29225 /*-------------------------------------------------------------------------
29226 Extract response and send it to UMAC
29227 -------------------------------------------------------------------------*/
29228 halStatus = *((eHalStatus*)pEventData->pEventData);
29229 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29230
29231 /*Notify UMAC*/
29232 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29233
29234 return WDI_STATUS_SUCCESS;
29235}/*WDI_ProcessSetTmLevelRsp*/
29236
29237/**
29238 @brief Process Set Thermal Mitigation level Changed request
29239
29240 @param pWDICtx: pointer to the WLAN DAL context
29241 pEventData: pointer to the event information structure
29242
29243 @see
29244 @return Result of the function call
29245*/
29246WDI_Status
29247WDI_ProcessSetTmLevelReq
29248(
29249 WDI_ControlBlockType* pWDICtx,
29250 WDI_EventInfoType* pEventData
29251)
29252{
29253 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29254 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29255 wpt_uint8* pSendBuffer = NULL;
29256 wpt_uint16 usDataOffset = 0;
29257 wpt_uint16 usSendSize = 0;
29258 tSetThermalMitgationType halTmMsg;
29259
29260 /*-------------------------------------------------------------------------
29261 Sanity check
29262 -------------------------------------------------------------------------*/
29263 if (( NULL == pEventData ) ||
29264 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29265 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29266 {
29267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029269 WDI_ASSERT(0);
29270 return WDI_STATUS_E_FAILURE;
29271 }
29272
29273 /*-----------------------------------------------------------------------
29274 Get message buffer
29275 -----------------------------------------------------------------------*/
29276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29277 sizeof(halTmMsg),
29278 &pSendBuffer, &usDataOffset, &usSendSize))||
29279 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29280 {
29281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029282 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029283 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29284 WDI_ASSERT(0);
29285 return WDI_STATUS_E_FAILURE;
29286 }
29287
29288 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29289 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29290
29291 wpalMemoryCopy( pSendBuffer+usDataOffset,
29292 &halTmMsg,
29293 sizeof(halTmMsg));
29294
29295 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29296 pWDICtx->pfncRspCB = NULL;
29297 /*-------------------------------------------------------------------------
29298 Send Get STA Request to HAL
29299 -------------------------------------------------------------------------*/
29300 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29301 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29302}
29303
29304/* Fill the value from the global features enabled array to the global capabilities
29305 * bitmap struct
29306 */
29307static void
29308FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29309{
29310 wpt_int8 i;
29311 for (i=0; i<len; i++)
29312 {
29313 setFeatCaps(fCaps, enabledFeat[i]);
29314 }
29315}
29316
29317/**
29318 @brief WDI_featureCapsExchangeReq
29319 Post feature capability bitmap exchange event.
29320 Host will send its own capability to FW in this req and
29321 expect FW to send its capability back as a bitmap in Response
29322
29323 @param
29324
29325 wdiFeatureCapsExchangeCb: callback called on getting the response.
29326 It is kept to mantain similarity between WDI reqs and if needed, can
29327 be used in future. Currently, It is set to NULL
29328
29329 pUserData: user data will be passed back with the
29330 callback
29331
29332 @see
29333 @return Result of the function call
29334*/
29335WDI_Status
29336WDI_featureCapsExchangeReq
29337(
29338 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29339 void* pUserData
29340)
29341{
29342 WDI_EventInfoType wdiEventData;
29343 wpt_int32 fCapsStructSize;
29344
29345 /*------------------------------------------------------------------------
29346 Sanity Check
29347 ------------------------------------------------------------------------*/
29348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29349 {
29350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29351 "WDI API call before module is initialized - Fail request");
29352
29353 return WDI_STATUS_E_NOT_ALLOWED;
29354 }
29355
29356 /* Allocate memory separately for global variable carrying FW caps */
29357 fCapsStructSize = sizeof(tWlanFeatCaps);
29358 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29359 if ( NULL == gpHostWlanFeatCaps )
29360 {
29361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029362 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029363 WDI_ASSERT(0);
29364 return WDI_STATUS_MEM_FAILURE;
29365 }
29366
29367 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29368
29369 /*------------------------------------------------------------------------
29370 Fill in Event data and post to the Main FSM
29371 ------------------------------------------------------------------------*/
29372 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29373 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029375 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029376 gpHostWlanFeatCaps->featCaps[0],
29377 gpHostWlanFeatCaps->featCaps[1],
29378 gpHostWlanFeatCaps->featCaps[2],
29379 gpHostWlanFeatCaps->featCaps[3]
29380 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029382 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029383 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29384 wdiEventData.pEventData = gpHostWlanFeatCaps;
29385 wdiEventData.uEventDataSize = fCapsStructSize;
29386 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29387 wdiEventData.pUserData = pUserData;
29388
29389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29390}
29391
29392/**
Yathish9f22e662012-12-10 14:21:35 -080029393 @brief Disable Active mode offload in Host
29394
29395 @param void
29396 @see
29397 @return void
29398*/
29399void
29400WDI_disableCapablityFeature(wpt_uint8 feature_index)
29401{
29402 supportEnabledFeatures[feature_index] = 0;
29403 return;
29404}
29405
29406/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029407 @brief Process Host-FW Capability Exchange Request function
29408
29409 @param pWDICtx: pointer to the WLAN DAL context
29410 pEventData: pointer to the event information structure
29411
29412 @see
29413 @return Result of the function call
29414*/
29415WDI_Status
29416WDI_ProcessFeatureCapsExchangeReq
29417(
29418 WDI_ControlBlockType* pWDICtx,
29419 WDI_EventInfoType* pEventData
29420)
29421{
29422 wpt_uint8* pSendBuffer = NULL;
29423 wpt_uint16 usDataOffset = 0;
29424 wpt_uint16 usSendSize = 0;
29425 wpt_uint16 usLen = 0;
29426
29427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29428
29429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029430 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029431
29432 /*-------------------------------------------------------------------------
29433 Sanity check
29434 -------------------------------------------------------------------------*/
29435 /* Call back function is NULL since not required for cap exchange req */
29436 if (( NULL == pEventData ) ||
29437 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29438 {
29439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029441 WDI_ASSERT(0);
29442 return WDI_STATUS_E_FAILURE;
29443 }
29444
29445 /*-----------------------------------------------------------------------
29446 Get message buffer
29447 -----------------------------------------------------------------------*/
29448 usLen = sizeof(tWlanFeatCaps);
29449
29450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29451 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29452 usLen,
29453 &pSendBuffer, &usDataOffset, &usSendSize))||
29454 ( usSendSize < (usDataOffset + usLen )))
29455 {
29456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029457 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029458 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29459 WDI_ASSERT(0);
29460 return WDI_STATUS_E_FAILURE;
29461 }
29462
29463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029464 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029465 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29466 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29467 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29468 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29469 );
29470
29471 /* Copy host caps after the offset in the send buffer */
29472 wpalMemoryCopy( pSendBuffer+usDataOffset,
29473 (tWlanFeatCaps *)pEventData->pEventData,
29474 usLen);
29475
29476 /*-------------------------------------------------------------------------
29477 Send Start Request to HAL
29478 -------------------------------------------------------------------------*/
29479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29480 (WDI_StartRspCb)pEventData->pCBfnc,
29481 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29482
29483}/*WDI_ProcessFeatureCapsExchangeReq*/
29484
29485/**
29486 @brief Process Host-FW Capability Exchange Response function
29487
29488 @param pWDICtx: pointer to the WLAN DAL context
29489 pEventData: pointer to the event information structure
29490
29491 @see
29492 @return Result of the function call
29493*/
29494WDI_Status
29495WDI_ProcessFeatureCapsExchangeRsp
29496(
29497 WDI_ControlBlockType* pWDICtx,
29498 WDI_EventInfoType* pEventData
29499)
29500{
29501 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29502 wpt_int32 fCapsStructSize;
29503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29504
29505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029506 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029507
29508 /*-------------------------------------------------------------------------
29509 Sanity check
29510 -------------------------------------------------------------------------*/
29511 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29512 ( NULL == pEventData->pEventData ))
29513 {
29514 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029517 WDI_ASSERT(0);
29518 return WDI_STATUS_E_FAILURE;
29519 }
29520
29521 /* Allocate memory separately for global variable carrying FW caps */
29522 fCapsStructSize = sizeof(tWlanFeatCaps);
29523 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29524 if ( NULL == gpFwWlanFeatCaps )
29525 {
29526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029527 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029528 WDI_ASSERT(0);
29529 return WDI_STATUS_MEM_FAILURE;
29530 }
29531
29532 /*-------------------------------------------------------------------------
29533 Unpack HAL Response Message - the header was already extracted by the
29534 main Response Handling procedure
29535 -------------------------------------------------------------------------*/
29536 /*-------------------------------------------------------------------------
29537 Extract response and send it to UMAC
29538 -------------------------------------------------------------------------*/
29539
29540 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29541 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029543 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029544 gpFwWlanFeatCaps->featCaps[0],
29545 gpFwWlanFeatCaps->featCaps[1],
29546 gpFwWlanFeatCaps->featCaps[2],
29547 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029548 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029550 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029551 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29552
29553 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29554 if (wdiFeatureCapsExchangeCb != NULL)
29555 wdiFeatureCapsExchangeCb(NULL, NULL);
29556
29557 return WDI_STATUS_SUCCESS;
29558}
29559
Mohit Khanna4a70d262012-09-11 16:30:12 -070029560#ifdef WLAN_FEATURE_11AC
29561WDI_Status
29562WDI_ProcessUpdateVHTOpModeRsp
29563(
29564 WDI_ControlBlockType* pWDICtx,
29565 WDI_EventInfoType* pEventData
29566)
29567{
29568 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29569 WDI_Status wdiStatus;
29570 eHalStatus halStatus;
29571
29572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29573
29574 /*-------------------------------------------------------------------------
29575 Sanity check
29576 -------------------------------------------------------------------------*/
29577 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29578 ( NULL == pEventData->pEventData))
29579 {
29580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029581 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029582 WDI_ASSERT(0);
29583 return WDI_STATUS_E_FAILURE;
29584 }
29585 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29586
29587 /*-------------------------------------------------------------------------
29588 Extract response and send it to UMAC
29589 -------------------------------------------------------------------------*/
29590 halStatus = *((eHalStatus*)pEventData->pEventData);
29591 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29592
29593 /*Notify UMAC*/
29594 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29595
29596 return WDI_STATUS_SUCCESS;
29597}
29598#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029599/**
29600 @brief WDI_getHostWlanFeatCaps
29601 WDI API that returns whether the feature passed to it as enum value in
29602 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29603 variable storing host capability bitmap to find this. This can be used by
29604 other moduels to decide certain things like call different APIs based on
29605 whether a particular feature is supported.
29606
29607 @param
29608
29609 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29610
29611 @see
29612 @return
29613 0 - if the feature is NOT supported in host
29614 any non-zero value - if the feature is SUPPORTED in host.
29615*/
29616wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29617{
29618 wpt_uint8 featSupported = 0;
29619 if (gpHostWlanFeatCaps != NULL)
29620 {
29621 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29622 }
29623 else
29624 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029626 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029627 }
29628 return featSupported;
29629}
29630
29631/**
29632 @brief WDI_getFwWlanFeatCaps
29633 WDI API that returns whether the feature passed to it as enum value in
29634 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29635 variable storing host capability bitmap to find this. This can be used by
29636 other moduels to decide certain things like call different APIs based on
29637 whether a particular feature is supported.
29638
29639 @param
29640
29641 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29642 in wlan_hal_msg.h.
29643
29644 @see
29645 @return
29646 0 - if the feature is NOT supported in FW
29647 any non-zero value - if the feature is SUPPORTED in FW.
29648*/
29649wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29650{
29651 wpt_uint8 featSupported = 0;
29652 if (gpFwWlanFeatCaps != NULL)
29653 {
29654 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29655 }
29656 else
29657 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029659 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029660 }
29661 return featSupported;
29662}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029663
Katya Nigamf0511f62015-05-05 16:40:57 +053029664wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29665{
29666 /* 5gHz Channel */
29667 if( channel >= 34 && channel <= 165 )
29668 {
29669 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29670 {
29671 if ( channel== 36 || channel == 52 || channel == 100 ||
29672 channel == 116 || channel == 149 )
29673 {
29674 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29675 }
29676 else if ( channel == 40 || channel == 56 || channel == 104 ||
29677 channel == 120 || channel == 153 )
29678 {
29679 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29680 }
29681 else if ( channel == 44 || channel == 60 || channel == 108 ||
29682 channel == 124 || channel == 157 )
29683 {
29684 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29685 }
29686 else if ( channel == 48 || channel == 64 || channel == 112 ||
29687 channel == 128 || channel == 144 || channel == 161 )
29688 {
29689 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29690 }
29691 else if ( channel == 165 )
29692 {
29693 return PHY_SINGLE_CHANNEL_CENTERED;
29694 }
29695 }
29696
29697 else
29698 {
29699 if ( channel== 40 || channel == 48 || channel == 56 ||
29700 channel == 64 || channel == 104 || channel == 112 ||
29701 channel == 120 || channel == 128 || channel == 136 ||
29702 channel == 144 || channel == 153 || channel == 161 )
29703 {
29704 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29705 }
29706 else if ( channel== 36 || channel == 44 || channel == 52 ||
29707 channel == 60 || channel == 100 || channel == 108 ||
29708 channel == 116 || channel == 124 || channel == 132 ||
29709 channel == 140 || channel == 149 || channel == 157 )
29710 {
29711 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29712 }
29713 else if ( channel == 165 )
29714 {
29715 return PHY_SINGLE_CHANNEL_CENTERED;
29716 }
29717 }
29718 }
29719
29720 /* 2.4Ghz Channel */
29721 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
29722 {
29723 if (channel >= 1 && channel <= 7)
29724 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
29725 else if (channel >= 8 && channel <= 13)
29726 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
29727 else if (channel ==14)
29728 return PHY_SINGLE_CHANNEL_CENTERED;
29729 }
29730 return PHY_SINGLE_CHANNEL_CENTERED;
29731}
29732
Mohit Khanna4a70d262012-09-11 16:30:12 -070029733#ifdef WLAN_FEATURE_11AC
29734WDI_Status
29735WDI_ProcessUpdateVHTOpModeReq
29736(
29737 WDI_ControlBlockType* pWDICtx,
29738 WDI_EventInfoType* pEventData
29739)
29740{
29741 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29742 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29743 wpt_uint8* pSendBuffer = NULL;
29744 wpt_uint16 usDataOffset = 0;
29745 wpt_uint16 usSendSize = 0;
29746
29747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29748
29749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029750 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029751
29752 /*-------------------------------------------------------------------------
29753 Sanity check
29754 -------------------------------------------------------------------------*/
29755 if (( NULL == pEventData ) ||
29756 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29757 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29758 {
29759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029760 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029761 WDI_ASSERT(0);
29762 return WDI_STATUS_E_FAILURE;
29763 }
29764
29765 /*-----------------------------------------------------------------------
29766 Get message buffer
29767 -----------------------------------------------------------------------*/
29768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29769 sizeof(WDI_UpdateVHTOpMode),
29770 &pSendBuffer, &usDataOffset, &usSendSize))||
29771 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29772 {
29773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29774 "Unable to get send buffer in update vht opMode req");
29775 WDI_ASSERT(0);
29776 return WDI_STATUS_E_FAILURE;
29777 }
29778
29779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029780 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029781
29782 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29783 sizeof(WDI_UpdateVHTOpMode));
29784
29785 /*-------------------------------------------------------------------------
29786 Send Start Request to HAL
29787 -------------------------------------------------------------------------*/
29788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29789 wdiVHTOpModeCb,
29790 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29791
29792}
29793
29794WDI_Status
29795WDI_UpdateVHTOpModeReq
29796(
29797 WDI_UpdateVHTOpMode *pData,
29798 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29799 void* pUserData
29800)
29801{
29802 WDI_EventInfoType wdiEventData;
29803
29804 /*------------------------------------------------------------------------
29805 Sanity Check
29806 ------------------------------------------------------------------------*/
29807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29808 {
29809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29810 "WDI API call before module is initialized - Fail request");
29811
29812 return WDI_STATUS_E_NOT_ALLOWED;
29813 }
29814
29815 /*------------------------------------------------------------------------
29816 Fill in Event data and post to the Main FSM
29817 ------------------------------------------------------------------------*/
29818 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29819 wdiEventData.pEventData = pData;
29820 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29821 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29822 wdiEventData.pUserData = pUserData;
29823
29824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029825 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029826
29827 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29828
29829}
29830#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029831
29832/**
29833 @brief WDI_TransportChannelDebug -
29834 Display DXE Channel debugging information
29835 User may request to display DXE channel snapshot
29836 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029837
Jeff Johnsonb88db982012-12-10 13:34:59 -080029838 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029839 @param debugFlags : Enable stall detect features
29840 defined by WPAL_DeviceDebugFlags
29841 These features may effect
29842 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029843 @see
29844 @return none
29845*/
29846void WDI_TransportChannelDebug
29847(
29848 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029849 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029850)
29851{
Mihir Shete40a55652014-03-02 14:14:47 +053029852 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029853 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029854}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029855/**
29856 @brief WDI_SsrTimerCB
29857 Callback function for SSR timer, if this is called then the graceful
29858 shutdown for Riva did not happen.
29859
29860 @param pUserData : user data to timer
29861
29862 @see
29863 @return none
29864*/
29865void
29866WDI_SsrTimerCB
29867(
29868 void *pUserData
29869)
29870{
29871 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29873
29874 if (NULL == pWDICtx )
29875 {
29876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029877 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029878 WDI_ASSERT(0);
29879 return;
29880 }
29881 wpalRivaSubystemRestart();
29882
29883 return;
29884
29885}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029886
29887/**
29888 @brief WDI_SetEnableSSR -
29889 This API is called to enable/disable SSR on WDI timeout.
29890
29891 @param enableSSR : enable/disable SSR
29892
29893 @see
29894 @return none
29895*/
29896void WDI_SetEnableSSR(wpt_boolean enableSSR)
29897{
29898 gWDICb.bEnableSSR = enableSSR;
29899}
Leo Chang9056f462013-08-01 19:21:11 -070029900
29901
29902#ifdef FEATURE_WLAN_LPHB
29903/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029904 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029905 This function will be invoked when FW detects low power
29906 heart beat failure
29907
29908 @param pWDICtx : wdi context
29909 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029910 @see
29911 @return Result of the function call
29912*/
29913WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029914WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029915(
29916 WDI_ControlBlockType* pWDICtx,
29917 WDI_EventInfoType* pEventData
29918)
29919{
29920 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029921 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29923
29924 /*-------------------------------------------------------------------------
29925 Sanity check
29926 -------------------------------------------------------------------------*/
29927 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29928 (NULL == pEventData->pEventData))
29929 {
29930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29931 "%s: Invalid parameters", __func__);
29932 WDI_ASSERT(0);
29933 return WDI_STATUS_E_FAILURE;
29934 }
29935
29936 /*-------------------------------------------------------------------------
29937 Extract indication and send it to UMAC
29938 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029939 wpalMemoryCopy(&lphbIndicationParam,
29940 pEventData->pEventData,
29941 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029942
Leo Changd9df8aa2013-09-26 13:32:26 -070029943 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029944 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029945 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029946 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029947 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029948 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029949 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029950 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029951 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029952 /*Notify UMAC*/
29953 if (pWDICtx->wdiLowLevelIndCB)
29954 {
29955 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29956 }
29957
29958 return WDI_STATUS_SUCCESS;
29959}
29960
29961/**
29962 @brief WDI_ProcessLphbCfgRsp -
29963 LPHB configuration response from FW
29964
29965 @param pWDICtx : wdi context
29966 pEventData : indication data
29967
29968 @see
29969 @return Result of the function call
29970*/
29971WDI_Status WDI_ProcessLphbCfgRsp
29972(
29973 WDI_ControlBlockType* pWDICtx,
29974 WDI_EventInfoType* pEventData
29975)
29976{
29977 WDI_Status wdiStatus;
29978 eHalStatus halStatus;
29979 WDI_LphbCfgCb wdiLphbCfgCb;
29980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29981
29982 /*-------------------------------------------------------------------------
29983 Sanity check
29984 -------------------------------------------------------------------------*/
29985 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29986 (NULL == pEventData->pEventData))
29987 {
29988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29989 "%s: Invalid parameters", __func__);
29990 WDI_ASSERT(0);
29991 return WDI_STATUS_E_FAILURE;
29992 }
29993
29994 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29995
29996 /*-------------------------------------------------------------------------
29997 Extract response and send it to UMAC
29998 -------------------------------------------------------------------------*/
29999 halStatus = *((eHalStatus*)pEventData->pEventData);
30000 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30001
30002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30003 "LPHB Cfg Rsp Return status %d", wdiStatus);
30004 /*Notify UMAC*/
30005 if (NULL != wdiLphbCfgCb)
30006 {
30007 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30008 }
30009
30010 return WDI_STATUS_SUCCESS;
30011}
30012
30013/**
30014 @brief WDI_ProcessLPHBConfReq -
30015 LPHB configuration request to FW
30016
30017 @param pWDICtx : wdi context
30018 pEventData : indication data
30019
30020 @see
30021 @return none
30022*/
30023WDI_Status WDI_ProcessLPHBConfReq
30024(
30025 WDI_ControlBlockType* pWDICtx,
30026 WDI_EventInfoType* pEventData
30027)
30028{
30029 WDI_LPHBReq *pLphbReqParams;
30030 WDI_Status wdiStatus;
30031 wpt_uint8* pSendBuffer = NULL;
30032 wpt_uint16 usDataOffset = 0;
30033 wpt_uint16 usSendSize = 0;
30034 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30036
30037 /*-------------------------------------------------------------------------
30038 Sanity check
30039 -------------------------------------------------------------------------*/
30040 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30041 {
30042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30043 "%s: Invalid parameters in Suspend ind",__func__);
30044 WDI_ASSERT(0);
30045 return WDI_STATUS_E_FAILURE;
30046 }
30047
30048 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30049
30050 /*-----------------------------------------------------------------------
30051 Get message buffer
30052 -----------------------------------------------------------------------*/
30053 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30054 WDI_LPHB_CFG_REQ,
30055 sizeof(tHalLowPowerHeartBeatReqMsg),
30056 &pSendBuffer, &usDataOffset, &usSendSize))||
30057 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30058 {
30059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30060 "Unable to get send buffer in LPHB Ind ");
30061 WDI_ASSERT(0);
30062 return WDI_STATUS_E_FAILURE;
30063 }
30064
30065 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30066 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30067
30068 halLphbReqRarams->lowPowerHeartBeatCmdType =
30069 (tANI_U16)(++pLphbReqParams->cmd);
30070 switch ((tANI_U16)pLphbReqParams->cmd)
30071 {
30072 case WDI_LPHB_SET_EN_PARAMS_INDID:
30073 halLphbReqRarams->sessionIdx =
30074 pLphbReqParams->params.lphbEnableReq.session;
30075 halLphbReqRarams->options.control.heartBeatEnable =
30076 pLphbReqParams->params.lphbEnableReq.enable;
30077 halLphbReqRarams->options.control.heartBeatType =
30078 pLphbReqParams->params.lphbEnableReq.item;
30079 break;
30080
30081 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30082 halLphbReqRarams->sessionIdx =
30083 pLphbReqParams->params.lphbTcpParamReq.session;
30084 halLphbReqRarams->options.tcpParams.timeOutSec =
30085 pLphbReqParams->params.lphbTcpParamReq.timeout;
30086 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30087 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30088 sizeof(v_U32_t));
30089 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30090 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30091 sizeof(v_U32_t));
30092
30093 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30094 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30095 WDI_MAC_ADDR_LEN);
30096
30097 halLphbReqRarams->options.tcpParams.hostPort =
30098 pLphbReqParams->params.lphbTcpParamReq.src_port;
30099 halLphbReqRarams->options.tcpParams.destPort =
30100 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030101 halLphbReqRarams->options.tcpParams.timePeriodSec =
30102 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30103 halLphbReqRarams->options.tcpParams.tcpSn =
30104 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030105 break;
30106
30107 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30108 halLphbReqRarams->sessionIdx =
30109 pLphbReqParams->params.lphbTcpFilterReq.session;
30110 halLphbReqRarams->options.tcpUdpFilter.offset =
30111 pLphbReqParams->params.lphbTcpFilterReq.offset;
30112 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30113 pLphbReqParams->params.lphbTcpFilterReq.length;
30114 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30115 pLphbReqParams->params.lphbTcpFilterReq.filter,
30116 WDI_LPHB_FILTER_LEN);
30117 break;
30118
30119 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30120 halLphbReqRarams->sessionIdx =
30121 pLphbReqParams->params.lphbUdpParamReq.session;
30122 halLphbReqRarams->options.udpParams.timeOutSec =
30123 pLphbReqParams->params.lphbUdpParamReq.timeout;
30124 halLphbReqRarams->options.udpParams.timePeriodSec =
30125 pLphbReqParams->params.lphbUdpParamReq.interval;
30126 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30127 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30128 sizeof(v_U32_t));
30129 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30130 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30131 sizeof(v_U32_t));
30132
30133 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30134 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30135 WDI_MAC_ADDR_LEN);
30136
30137 halLphbReqRarams->options.udpParams.hostPort =
30138 pLphbReqParams->params.lphbUdpParamReq.src_port;
30139 halLphbReqRarams->options.udpParams.destPort =
30140 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30141 break;
30142
30143 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30144 halLphbReqRarams->sessionIdx =
30145 pLphbReqParams->params.lphbUdpFilterReq.session;
30146 halLphbReqRarams->options.tcpUdpFilter.offset =
30147 pLphbReqParams->params.lphbUdpFilterReq.offset;
30148 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30149 pLphbReqParams->params.lphbUdpFilterReq.length;
30150 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30151 pLphbReqParams->params.lphbUdpFilterReq.filter,
30152 WDI_LPHB_FILTER_LEN);
30153 break;
30154
30155 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30156 /* NA */
30157 break;
30158
30159 default:
30160 break;
30161 }
30162
30163 /*-------------------------------------------------------------------------
30164 Send Suspend Request to HAL
30165 -------------------------------------------------------------------------*/
30166 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30167 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30168
30169 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30170 usSendSize, pWDICtx->pfncRspCB,
30171 pWDICtx->pReqStatusUserData,
30172 WDI_LPHB_CFG_RESP);
30173
30174 return wdiStatus;
30175}
30176
30177/**
30178 @brief WDI_LPHBConfReq -
30179 LPHB configuration request API
30180
30181 @param lphbconfParam : configuration parameter
30182 usrData : client context
30183 lphbCfgCb : callback function pointer
30184
30185 @see
30186 @return Success or fail status code
30187*/
30188WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30189 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30190{
30191 WDI_EventInfoType wdiEventData;
30192
30193 /*------------------------------------------------------------------------
30194 Sanity Check
30195 ------------------------------------------------------------------------*/
30196 if (eWLAN_PAL_FALSE == gWDIInitialized)
30197 {
30198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30199 "WDI API call before module is initialized - Fail request");
30200
30201 return WDI_STATUS_E_NOT_ALLOWED;
30202 }
30203
30204 /*------------------------------------------------------------------------
30205 Fill in Event data and post to the Main FSM
30206 ------------------------------------------------------------------------*/
30207 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30208 wdiEventData.pEventData = lphbconfParam;
30209 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30210 wdiEventData.pCBfnc = lphbCfgCb;
30211 wdiEventData.pUserData = usrData;
30212
30213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30214}
30215#endif /* FEATURE_WLAN_LPHB */
30216
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030217/**
30218 @brief WDI_ProcessIbssPeerInactivityInd
30219 Process peer inactivity indication coming from HAL
30220
30221 @param pWDICtx: pointer to the WLAN DAL context
30222 pEventData: pointer to the event information structure
30223 @see
30224 @return Result of the function call
30225*/
30226WDI_Status
30227WDI_ProcessIbssPeerInactivityInd
30228(
30229 WDI_ControlBlockType* pWDICtx,
30230 WDI_EventInfoType* pEventData
30231)
30232{
30233 WDI_LowLevelIndType wdiInd;
30234 tIbssPeerInactivityIndMsg halIbssIndMsg;
30235
30236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30237
30238 /*-------------------------------------------------------------------------
30239 Sanity check
30240 -------------------------------------------------------------------------*/
30241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30242 ( NULL == pEventData->pEventData ))
30243 {
30244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30245 "%s: Invalid parameters", __func__);
30246 WDI_ASSERT( 0 );
30247 return WDI_STATUS_E_FAILURE;
30248 }
30249
30250 /*-------------------------------------------------------------------------
30251 Extract indication and send it to UMAC
30252 -------------------------------------------------------------------------*/
30253 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30254 pEventData->pEventData,
30255 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30256
30257 /*Fill in the indication parameters*/
30258 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30259
30260 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30261 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30262
30263 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30264 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30265
30266 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30267 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30268 sizeof(tSirMacAddr));
30269
30270 /*Notify UMAC*/
30271 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30272
30273 return WDI_STATUS_SUCCESS;
30274
30275} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030276
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030277/**
30278*@brief WDI_RateUpdateInd will be called when the upper MAC
30279 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030280
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030281
30282 @param wdiRateUpdateIndParams:
30283
30284
30285 @see
30286 @return Result of the function call
30287*/
30288WDI_Status
30289WDI_RateUpdateInd
30290(
30291 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30292)
30293{
30294 WDI_EventInfoType wdiEventData;
30295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30296
30297 /*------------------------------------------------------------------------
30298 Sanity Check
30299 ------------------------------------------------------------------------*/
30300 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30301 {
30302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30303 "WDI API call before module is initialized - Fail request");
30304
30305 return WDI_STATUS_E_NOT_ALLOWED;
30306 }
30307
30308 /*------------------------------------------------------------------------
30309 Fill in Event data and post to the Main FSM
30310 ------------------------------------------------------------------------*/
30311 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30312 wdiEventData.pEventData = wdiRateUpdateIndParams;
30313 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30314 wdiEventData.pCBfnc = NULL;
30315 wdiEventData.pUserData = NULL;
30316
30317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30318
30319}/* WDI_RateUpdateInd */
30320
30321/**
30322 @brief Process Rate Update Indication and post it to HAL
30323
30324 @param pWDICtx: pointer to the WLAN DAL context
30325 pEventData: pointer to the event information structure
30326
30327 @see
30328 @return Result of the function call
30329*/
30330WDI_Status
30331WDI_ProcessRateUpdateInd
30332(
30333 WDI_ControlBlockType* pWDICtx,
30334 WDI_EventInfoType* pEventData
30335)
30336{
30337 wpt_uint8* pSendBuffer = NULL;
30338 wpt_uint16 usDataOffset = 0;
30339 wpt_uint16 usSendSize = 0;
30340 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30341 tHalRateUpdateInd *pRateUpdateInd;
30342 WDI_Status wdiStatus;
30343
30344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30345
30346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30347 "%s", __func__);
30348
30349 /*-------------------------------------------------------------------------
30350 Sanity check
30351 -------------------------------------------------------------------------*/
30352 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30353 {
30354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30355 "%s: Invalid parameters", __func__);
30356 WDI_ASSERT(0);
30357 return WDI_STATUS_E_FAILURE;
30358 }
30359 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30360 /*-----------------------------------------------------------------------
30361 Get message buffer
30362 -----------------------------------------------------------------------*/
30363
30364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30365 WDI_RATE_UPDATE_IND,
30366 sizeof(tHalRateUpdateParams),
30367 &pSendBuffer, &usDataOffset, &usSendSize))||
30368 ( usSendSize < (usDataOffset +
30369 sizeof(tHalRateUpdateParams) )))
30370 {
30371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30372 "Unable to get send buffer in Rate Update Indication %p ",
30373 pEventData);
30374 WDI_ASSERT(0);
30375 return WDI_STATUS_E_FAILURE;
30376 }
30377
30378 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30379
30380 /* Copy the bssid */
30381 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30382 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30383
30384 /* Copy the tx flags */
30385 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30386 pwdiRateUpdateInd->ucastDataRateTxFlag;
30387 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30388 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30389 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30390 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30391 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30392 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30393
30394 /* Copy the tx rates */
30395 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30396 pwdiRateUpdateInd->ucastDataRate;
30397 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30398 pwdiRateUpdateInd->reliableMcastDataRate;
30399 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30400 pwdiRateUpdateInd->mcastDataRate24GHz;
30401 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30402 pwdiRateUpdateInd->mcastDataRate5GHz;
30403
30404 /*-------------------------------------------------------------------------
30405 Send Rate Update Indication to HAL
30406 -------------------------------------------------------------------------*/
30407 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30408 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30409
30410 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30411
30412 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30413 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30414
30415} /* WDI_ProcessRateUpdateInd */
30416
30417#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030418/**
30419 @brief Process stop batch indication from WDA
30420
30421 @param pWDICtx: pointer to the WLAN DAL context
30422 pEventData: pointer to the event information structure
30423
30424 @see
30425 @return Result of the function call
30426*/
30427WDI_Status
30428WDI_ProcessStopBatchScanInd
30429(
30430 WDI_ControlBlockType* pWDICtx,
30431 WDI_EventInfoType* pEventData
30432)
30433{
30434 wpt_uint8* pSendBuffer = NULL;
30435 wpt_uint16 usDataOffset = 0;
30436 wpt_uint16 usSendSize = 0;
30437 WDI_Status wdiStatus;
30438 tHalBatchScanStopIndParam *pHalInd = NULL;
30439 WDI_StopBatchScanIndType *pWdiInd = NULL;
30440
30441
30442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30443
30444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30445 "%s", __func__);
30446
30447 /*-------------------------------------------------------------------------
30448 Sanity check
30449 -------------------------------------------------------------------------*/
30450
30451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30452 {
30453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30454 "%s: Invalid parameters", __func__);
30455 WDI_ASSERT(0);
30456 return WDI_STATUS_E_FAILURE;
30457 }
30458 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30459 /*-----------------------------------------------------------------------
30460 Get message buffer
30461 -----------------------------------------------------------------------*/
30462
30463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30464 WDI_STOP_BATCH_SCAN_IND,
30465 sizeof(tHalBatchScanStopIndParam),
30466 &pSendBuffer, &usDataOffset, &usSendSize))||
30467 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30468 {
30469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30470 "Unable to get send buffer in stop batch scan ind %p ",
30471 pEventData);
30472 WDI_ASSERT(0);
30473 return WDI_STATUS_E_FAILURE;
30474 }
30475
30476 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30477 pHalInd->param = pWdiInd->param;
30478
30479 pWDICtx->pReqStatusUserData = NULL;
30480 pWDICtx->pfncRspCB = NULL;
30481 /*-------------------------------------------------------------------------
30482 Send Stop batch scan indication to HAL
30483 -------------------------------------------------------------------------*/
30484 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30485 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30486}
30487
30488/**
30489 @brief This API is called to trigger batch scan results from FW
30490
30491 @param pWDICtx: pointer to the WLAN DAL context
30492 pEventData: pointer to the event information structure
30493
30494 @see
30495 @return Result of the function call
30496*/
30497WDI_Status
30498WDI_ProcessTriggerBatchScanResultInd
30499(
30500 WDI_ControlBlockType* pWDICtx,
30501 WDI_EventInfoType* pEventData
30502)
30503{
30504 WDI_Status wdiStatus;
30505 wpt_uint8* pSendBuffer = NULL;
30506 wpt_uint16 usDataOffset = 0;
30507 wpt_uint16 usSendSize = 0;
30508 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30509 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30510
30511
30512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30513
30514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30515 "%s", __func__);
30516
30517 /*-------------------------------------------------------------------------
30518 Sanity check
30519 -------------------------------------------------------------------------*/
30520
30521 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30522 {
30523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30524 "%s: Invalid parameters", __func__);
30525 WDI_ASSERT(0);
30526 return WDI_STATUS_E_FAILURE;
30527 }
30528 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30529 /*-----------------------------------------------------------------------
30530 Get message buffer
30531 -----------------------------------------------------------------------*/
30532
30533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30534 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30535 sizeof(tHalBatchScanTriggerResultParam),
30536 &pSendBuffer, &usDataOffset, &usSendSize))||
30537 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30538 {
30539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30540 "Unable to get send buffer in stop batch scan ind %p ",
30541 pEventData);
30542 WDI_ASSERT(0);
30543 return WDI_STATUS_E_FAILURE;
30544 }
30545
30546 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30547 pHalInd->param = pWdiInd->param;
30548
30549 pWDICtx->pReqStatusUserData = NULL;
30550 pWDICtx->pfncRspCB = NULL;
30551 /*-------------------------------------------------------------------------
30552 Send trigger batch scan result indication to HAL
30553 -------------------------------------------------------------------------*/
30554 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30555 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30556}
30557
30558
30559/**
30560 @brief Process set batch scan response from FW
30561
30562 @param pWDICtx: pointer to the WLAN DAL context
30563 pEventData: pointer to the event information structure
30564
30565 @see
30566 @return Result of the function call
30567*/
30568WDI_Status
30569WDI_ProcessSetBatchScanRsp
30570(
30571 WDI_ControlBlockType* pWDICtx,
30572 WDI_EventInfoType* pEventData
30573)
30574{
30575 WDI_SetBatchScanCb wdiSetBatchScanCb;
30576 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30577
30578 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30580
30581 /*sanity check*/
30582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30583 ( NULL == pEventData->pEventData))
30584 {
30585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30586 "%s: Invalid parameters", __func__);
30587 WDI_ASSERT(0);
30588 return WDI_STATUS_E_FAILURE;
30589 }
30590
30591 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30592 if ( NULL == wdiSetBatchScanCb)
30593 {
30594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30595 "%s: call back function is NULL", __func__);
30596 WDI_ASSERT(0);
30597 return WDI_STATUS_E_FAILURE;
30598 }
30599
30600 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30601
30602 if (NULL == pSetBatchScanRsp)
30603 {
30604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030605 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030606 pWDICtx, pEventData, pEventData->pEventData);
30607 WDI_ASSERT(0);
30608 return WDI_STATUS_E_FAILURE;
30609 }
30610
Sunil Duttbd736ed2014-05-26 21:19:41 +053030611 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030612 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30613
30614 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30615
Sunil Duttbd736ed2014-05-26 21:19:41 +053030616 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030617 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30618
30619 wpalMemoryFree(pSetBatchScanRsp);
30620
30621 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030622}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030623
30624/**
30625 @brief Process batch scan result indication from FW
30626
30627 @param pWDICtx: pointer to the WLAN DAL context
30628 pEventData: pointer to the event information structure
30629
30630 @see
30631 @return Result of the function call
30632*/
30633WDI_Status
30634WDI_ProcessBatchScanResultInd
30635(
30636 WDI_ControlBlockType* pWDICtx,
30637 WDI_EventInfoType* pEventData
30638)
30639{
30640 void *pBatchScanResultInd;
30641 WDI_LowLevelIndType wdiInd;
30642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30643
Sunil Duttbd736ed2014-05-26 21:19:41 +053030644 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030645 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30646 ( NULL == pEventData->pEventData))
30647 {
30648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30649 "%s: Invalid parameters", __func__);
30650 WDI_ASSERT(0);
30651 return WDI_STATUS_E_FAILURE;
30652 }
30653
Sunil Duttbd736ed2014-05-26 21:19:41 +053030654 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030655 pBatchScanResultInd = (void *)pEventData->pEventData;
30656
Sunil Duttbd736ed2014-05-26 21:19:41 +053030657 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030658 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30659
30660 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30661
Sunil Duttbd736ed2014-05-26 21:19:41 +053030662 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030663 if (pWDICtx->wdiLowLevelIndCB)
30664 {
30665 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30666 }
30667 else
30668 {
30669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30670 "%s: WDILowLevelIndCb is null", __func__);
30671 WDI_ASSERT(0);
30672 return WDI_STATUS_E_FAILURE;
30673 }
30674
30675 return WDI_STATUS_SUCCESS;
30676} /*End of WDI_ProcessBatchScanResultInd*/
30677
Sunil Duttbd736ed2014-05-26 21:19:41 +053030678#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30679/**
30680 @brief Process Link Layer Statistics Result indication from FW
30681
30682 @param pWDICtx: pointer to the WLAN DAL context
30683 pEventData: pointer to the event information structure
30684
30685 @see
30686 @return Result of the function call
30687*/
30688WDI_Status
30689WDI_ProcessLinkLayerStatsResultsInd
30690(
30691 WDI_ControlBlockType* pWDICtx,
30692 WDI_EventInfoType* pEventData
30693)
30694{
30695 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030696 WDI_LLstatsResultsType *halLLStatsResults;
30697 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030698 WDI_LowLevelIndType wdiInd;
30699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30700
30701 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30702 "%s: Event RESULTS Indication", __func__);
30703
30704 /* sanity check */
30705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30706 ( NULL == pEventData->pEventData))
30707 {
30708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30709 "%s: Invalid parameters", __func__);
30710 WDI_ASSERT(0);
30711 return WDI_STATUS_E_FAILURE;
30712 }
30713
30714 /* extract response and send it to UMAC */
30715 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30716
30717 /* Fill in the indication parameters */
30718 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30719
Dino Mycled3d50022014-07-07 12:58:25 +053030720 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30721 = pLinkLayerStatsInd;
30722
30723 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30724
30725
30726 /* Need to fill in the MAC address */
30727 if ( WDI_STATUS_SUCCESS !=
30728 WDI_STATableGetStaMacAddr(pWDICtx,
30729 halLLStatsResults->iface_id,
30730 &macAddr))
30731 {
30732 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30733 " ifaceId: %u does not exist in the WDI Station Table",
30734 halLLStatsResults->iface_id);
30735
30736 return WDI_STATUS_E_FAILURE;
30737 }
30738 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30739 macAddr, WDI_MAC_ADDR_LEN);
30740
30741 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30742 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30743 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030744
30745 /* Notify UMAC */
30746 if (pWDICtx->wdiLowLevelIndCB)
30747 {
30748 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30749 }
30750 else
30751 {
30752 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30753 "%s: WDILowLevelIndCb is null", __func__);
30754 WDI_ASSERT(0);
30755 return WDI_STATUS_E_FAILURE;
30756 }
30757
30758 return WDI_STATUS_SUCCESS;
30759} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30760#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30761
Rajeev79dbe4c2013-10-05 11:03:42 +053030762/**
30763 @brief WDI_ProcessSetBatchScanReq -
30764 Set batch scan request to FW
30765
30766 @param pWDICtx : wdi context
30767 pEventData : indication data
30768
30769 @see
30770 @return none
30771*/
30772WDI_Status WDI_ProcessSetBatchScanReq
30773(
30774 WDI_ControlBlockType* pWDICtx,
30775 WDI_EventInfoType* pEventData
30776)
30777{
30778 WDI_SetBatchScanReqType *pWdiReq;
30779 WDI_Status wdiStatus;
30780 wpt_uint8* pSendBuffer = NULL;
30781 wpt_uint16 usDataOffset = 0;
30782 wpt_uint16 usSendSize = 0;
30783 tHalBatchScanSetParams *pHalReq;
30784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30785
30786 /*sanity check*/
30787 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30788 {
30789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30790 "%s: Invalid parameters in set batch scan request", __func__);
30791 WDI_ASSERT(0);
30792 return WDI_STATUS_E_FAILURE;
30793 }
30794
30795
30796 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30797
30798
30799 /*get message buffer*/
30800 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30801 WDI_SET_BATCH_SCAN_REQ,
30802 sizeof(tHalBatchScanSetParams),
30803 &pSendBuffer, &usDataOffset, &usSendSize))||
30804 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30805 {
30806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30807 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30808 WDI_ASSERT(0);
30809 return WDI_STATUS_E_FAILURE;
30810 }
30811
30812 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30813
30814 pHalReq->rtt = pWdiReq->rtt;
30815 pHalReq->rfBand = pWdiReq->rfBand;
30816 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30817 pHalReq->scanInterval = pWdiReq->scanFrequency;
30818 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30819
30820 /*send set batch scan request to fw*/
30821 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30822 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30823
30824 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30825 usSendSize, pWDICtx->pfncRspCB,
30826 pWDICtx->pReqStatusUserData,
30827 WDI_SET_BATCH_SCAN_RESP);
30828
30829 return wdiStatus;
30830}
30831
30832/**
30833 @brief WDI_SetBatchScanReq
30834 This API is called to set batch scan request in FW
30835
30836 @param pBatchScanReqParam : pointer to set batch scan re param
30837 usrData : Client context
30838 setBatchScanRspCb : set batch scan resp callback
30839 @see
30840 @return SUCCESS or FAIL
30841*/
30842WDI_Status WDI_SetBatchScanReq
30843(
30844 void *pBatchScanReqParam,
30845 void *usrData,
30846 WDI_SetBatchScanCb setBatchScanRspCb
30847)
30848{
30849 WDI_EventInfoType wdiEventData;
30850
30851 /*sanity check*/
30852 if (eWLAN_PAL_FALSE == gWDIInitialized)
30853 {
30854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30855 "WDI API call before module is initialized - Fail request");
30856
30857 return WDI_STATUS_E_NOT_ALLOWED;
30858 }
30859
30860 /* fill in event data and post to the main FSM */
30861 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30862 wdiEventData.pEventData = pBatchScanReqParam;
30863 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30864 wdiEventData.pCBfnc = setBatchScanRspCb;
30865 wdiEventData.pUserData = usrData;
30866
30867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30868}
30869
30870/**
30871 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30872
30873 @param None
30874
30875 @see
30876
30877 @return Status of the request
30878*/
30879WDI_Status
30880WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30881{
30882 WDI_EventInfoType wdiEventData;
30883
30884 /*-------------------------------------------------------------------------
30885 Sanity Check
30886 ------------------------------------------------------------------------*/
30887 if (eWLAN_PAL_FALSE == gWDIInitialized)
30888 {
30889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30890 "WDI API call before module is initialized - Fail request!");
30891
30892 return WDI_STATUS_E_NOT_ALLOWED;
30893 }
30894
30895 /*-------------------------------------------------------------------------
30896 Fill in Event data and post to the Main FSM
30897 ------------------------------------------------------------------------*/
30898 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30899 wdiEventData.pEventData = pWdiReq;
30900 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30901 wdiEventData.pCBfnc = NULL;
30902 wdiEventData.pUserData = NULL;
30903
30904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30905}
30906
30907/**
30908 @brief WDI_TriggerBatchScanResultInd
30909 This API is called to pull batch scan result from FW
30910
30911 @param pWdiReq : pointer to get batch scan ind param
30912 @see
30913 @return SUCCESS or FAIL
30914*/
30915WDI_Status WDI_TriggerBatchScanResultInd
30916(
30917 WDI_TriggerBatchScanResultIndType *pWdiReq
30918)
30919{
30920 WDI_EventInfoType wdiEventData;
30921 /*-------------------------------------------------------------------------
30922 Sanity Check
30923 ------------------------------------------------------------------------*/
30924 if (eWLAN_PAL_FALSE == gWDIInitialized)
30925 {
30926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30927 "WDI API call before module is initialized - Fail request!");
30928
30929 return WDI_STATUS_E_NOT_ALLOWED;
30930 }
30931
30932 /*-------------------------------------------------------------------------
30933 Fill in Event data and post to the Main FSM
30934 ------------------------------------------------------------------------*/
30935 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30936 wdiEventData.pEventData = pWdiReq;
30937 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30938 wdiEventData.pCBfnc = NULL;
30939 wdiEventData.pUserData = NULL;
30940
30941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30942}
Rajeev79dbe4c2013-10-05 11:03:42 +053030943#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030944
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030945/**
30946 @brief Process Update Channel Rsp function (called when a response is
30947 being received over the bus from HAL)
30948
30949 @param pWDICtx: pointer to the WLAN DAL context
30950 pEventData: pointer to the event information structure
30951
30952 @see
30953 @return Result of the function call
30954*/
30955WDI_Status
30956WDI_ProcessUpdateChanRsp
30957(
30958 WDI_ControlBlockType* pWDICtx,
30959 WDI_EventInfoType* pEventData
30960)
30961{
30962 WDI_Status wdiStatus;
30963 eHalStatus halStatus;
30964 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30966
30967 /*-------------------------------------------------------------------------
30968 Sanity check
30969 -------------------------------------------------------------------------*/
30970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30971 ( NULL == pEventData->pEventData))
30972 {
30973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30974 "%s: Invalid parameters", __func__);
30975 WDI_ASSERT(0);
30976 return WDI_STATUS_E_FAILURE;
30977 }
30978
30979 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30980
30981 /*-------------------------------------------------------------------------
30982 Extract response and send it to UMAC
30983 -------------------------------------------------------------------------*/
30984 halStatus = *((eHalStatus*)pEventData->pEventData);
30985 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30986
30987 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30988
30989 return WDI_STATUS_SUCCESS;
30990}/*WDI_ProcessUpdateChanRsp*/
30991
Leo Chang0b0e45a2013-12-15 15:18:55 -080030992#ifdef FEATURE_WLAN_CH_AVOID
30993/**
30994 @brief v -WDI_ProcessChAvoidInd
30995
30996
30997 @param pWDICtx : wdi context
30998 pEventData : indication data
30999 @see
31000 @return Result of the function call
31001*/
31002WDI_Status
31003WDI_ProcessChAvoidInd
31004(
31005 WDI_ControlBlockType* pWDICtx,
31006 WDI_EventInfoType* pEventData
31007)
31008{
31009 WDI_LowLevelIndType wdiInd;
31010 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31011 wpt_uint16 rangeLoop;
31012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31013
31014 /*-------------------------------------------------------------------------
31015 Sanity check
31016 -------------------------------------------------------------------------*/
31017 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31018 (NULL == pEventData->pEventData))
31019 {
31020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31021 "%s: Invalid parameters", __func__);
31022 WDI_ASSERT(0);
31023 return WDI_STATUS_E_FAILURE;
31024 }
31025
31026 /*-------------------------------------------------------------------------
31027 Extract indication and send it to UMAC
31028 -------------------------------------------------------------------------*/
31029 wpalMemoryCopy(&chAvoidIndicationParam,
31030 pEventData->pEventData,
31031 sizeof(tHalAvoidFreqRangeIndParams));
31032
Abhishek Singhe34eb552015-06-18 10:12:15 +053031033 /* Avoid Over flow */
31034 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31035 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31036
Leo Chang0b0e45a2013-12-15 15:18:55 -080031037 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31038 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31039 chAvoidIndicationParam.avoidCnt;
31040 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31041 (void *)chAvoidIndicationParam.avoidRange,
31042 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31043 sizeof(WDI_ChAvoidFreqType));
31044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31045 "%s: band count %d", __func__,
31046 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31047 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31048 {
31049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31050 "%s: srart freq %d, end freq %d", __func__,
31051 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31052 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31053 }
31054
31055 /*Notify UMAC*/
31056 if (pWDICtx->wdiLowLevelIndCB)
31057 {
31058 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31059 }
31060
31061 return WDI_STATUS_SUCCESS;
31062}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031063
Leo Chang0b0e45a2013-12-15 15:18:55 -080031064#endif /* FEATURE_WLAN_CH_AVOID */
31065
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031066/**
31067 @brief Process OBSS Start scan result indication
31068
31069 @param pWDICtx: pointer to the WLAN DAL context
31070 pEventData: pointer to the event information structure
31071
31072 @see
31073 @return Result of the function call
31074*/
31075WDI_Status
31076WDI_ProcessHT40OBSSScanInd
31077(
31078 WDI_ControlBlockType* pWDICtx,
31079 WDI_EventInfoType* pEventData
31080)
31081{
31082 wpt_uint8* pSendBuffer = NULL;
31083 wpt_uint16 usDataOffset = 0;
31084 wpt_uint16 usSendSize = 0;
31085 wpt_uint16 usLen = 0;
31086 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31087 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31088 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31089 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31090
31091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31092
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031094 "%s", __func__);
31095
31096 /*-------------------------------------------------------------------------
31097 Sanity check
31098 -------------------------------------------------------------------------*/
31099 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31100 {
31101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31102 "%s: Invalid parameters", __func__);
31103 WDI_ASSERT(0);
31104 return WDI_STATUS_E_FAILURE;
31105 }
31106 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31107
31108 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31109 /*-----------------------------------------------------------------------
31110 Get message buffer
31111 -----------------------------------------------------------------------*/
31112
31113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31114 WDI_START_HT40_OBSS_SCAN_IND,
31115 sizeof(tHT40ObssScanIndType),
31116 &pSendBuffer, &usDataOffset, &usSendSize))||
31117 ( usSendSize < (usDataOffset + usLen )))
31118 {
31119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31120 "Unable to get send buffer in HT40 OBSS Start req %p ",
31121 pEventData);
31122 WDI_ASSERT(0);
31123 return WDI_STATUS_E_FAILURE;
31124 }
31125 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31126 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31127 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31128 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31129 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31130 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31131 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31132 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31133 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31134 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31135 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31136 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31137 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31138 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31139 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31140 pHT40ObssScanInd->OBSSScanActivityThreshold =
31141 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31142 pHT40ObssScanInd->selfStaIdx =
31143 pwdiHT40OBSSScanInd->selfStaIdx;
31144 pHT40ObssScanInd->bssIdx =
31145 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031146 pHT40ObssScanInd->currentOperatingClass =
31147 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031148 pHT40ObssScanInd->fortyMHZIntolerent =
31149 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31150 pHT40ObssScanInd->channelCount =
31151 pwdiHT40OBSSScanInd->channelCount;
31152
31153 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31154 WDI_ROAM_SCAN_MAX_CHANNELS);
31155 pHT40ObssScanInd->ieFieldLen =
31156 pwdiHT40OBSSScanInd->ieFieldLen;
31157
31158 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31159 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31160 pWDICtx->pReqStatusUserData = NULL;
31161 pWDICtx->pfncRspCB = NULL;
31162
31163 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31164 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31165
31166 /*-------------------------------------------------------------------------
31167 Send OBSS Start Indication to HAL
31168 -------------------------------------------------------------------------*/
31169 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31170 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31171
31172} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31173
31174
31175/**
31176 @brief wdi_HT40OBSSScanInd
31177 This API is called to start OBSS scan
31178
31179 @param pWdiReq : pointer to get ind param
31180 @see
31181 @return SUCCESS or FAIL
31182*/
31183WDI_Status WDI_HT40OBSSScanInd
31184(
31185 WDI_HT40ObssScanParamsType *pWdiReq
31186)
31187{
31188 WDI_EventInfoType wdiEventData;
31189
31190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31191 "%s", __func__);
31192 /*-------------------------------------------------------------------------
31193 Sanity Check
31194 ------------------------------------------------------------------------*/
31195 if (eWLAN_PAL_FALSE == gWDIInitialized)
31196 {
31197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31198 "WDI API call before module is initialized - Fail request!");
31199
31200 return WDI_STATUS_E_NOT_ALLOWED;
31201 }
31202
31203 /*-------------------------------------------------------------------------
31204 Fill in Event data and post to the Main FSM
31205 ------------------------------------------------------------------------*/
31206 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31207 wdiEventData.pEventData = pWdiReq;
31208 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31209 wdiEventData.pCBfnc = NULL;
31210 wdiEventData.pUserData = NULL;
31211
31212
31213 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31214}
31215
31216/**
31217 @brief Process OBSS Stop scan result
31218
31219 @param pWDICtx: pointer to the WLAN DAL context
31220 pEventData: pointer to the event information structure
31221
31222 @see
31223 @return Result of the function call
31224*/
31225WDI_Status
31226WDI_ProcessHT40OBSSStopScanInd
31227(
31228 WDI_ControlBlockType* pWDICtx,
31229 WDI_EventInfoType* pEventData
31230)
31231{
31232 wpt_uint8* pSendBuffer = NULL;
31233 wpt_uint16 usDataOffset = 0;
31234 wpt_uint16 usSendSize = 0;
31235 wpt_uint16 usLen = 0;
31236 wpt_uint8 *wdiBssIdx = 0;
31237 tANI_U8 *bssIdx = 0;
31238 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31239
31240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31241
31242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31243 "%s", __func__);
31244
31245 /*-------------------------------------------------------------------------
31246 Sanity check
31247 -------------------------------------------------------------------------*/
31248 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31249 {
31250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31251 "%s: Invalid parameters", __func__);
31252 WDI_ASSERT(0);
31253 return WDI_STATUS_E_FAILURE;
31254 }
31255 bssIdx = (wpt_uint8*)pEventData->pEventData;
31256 /*-----------------------------------------------------------------------
31257 Get message buffer
31258 -----------------------------------------------------------------------*/
31259
31260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31261 WDI_STOP_HT40_OBSS_SCAN_IND,
31262 sizeof(tANI_U8),
31263 &pSendBuffer, &usDataOffset, &usSendSize))||
31264 ( usSendSize < (usDataOffset + usLen )))
31265 {
31266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31267 "Unable to get send buffer in HT40 OBSS Start req %p ",
31268 pEventData);
31269 WDI_ASSERT(0);
31270 return WDI_STATUS_E_FAILURE;
31271 }
31272
31273 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31274 bssIdx = wdiBssIdx;
31275
31276 pWDICtx->pReqStatusUserData = NULL;
31277 pWDICtx->pfncRspCB = NULL;
31278
31279 /*-------------------------------------------------------------------------
31280 Send DHCP Start Indication to HAL
31281 -------------------------------------------------------------------------*/
31282 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31283 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31284} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31285
31286/**
31287 @brief WDI_HT40OBSSStopScanInd
31288 This API is called to start OBSS scan
31289 @param pWdiReq : pointer to get ind param
31290 @see
31291 @return SUCCESS or FAIL
31292*/
31293WDI_Status WDI_HT40OBSSStopScanInd
31294(
31295 wpt_uint8 bssIdx
31296)
31297{
31298 WDI_EventInfoType wdiEventData;
31299
31300 /*-------------------------------------------------------------------------
31301 Sanity Check
31302 ------------------------------------------------------------------------*/
31303 if (eWLAN_PAL_FALSE == gWDIInitialized)
31304 {
31305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31306 "WDI API call before module is initialized - Fail request!");
31307
31308 return WDI_STATUS_E_NOT_ALLOWED;
31309 }
31310
31311 /*-------------------------------------------------------------------------
31312 Fill in Event data and post to the Main FSM
31313 ------------------------------------------------------------------------*/
31314 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31315 wdiEventData.pEventData = &bssIdx;
31316 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31317 wdiEventData.pCBfnc = NULL;
31318 wdiEventData.pUserData = NULL;
31319
31320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31321}
31322
c_hpothu86041002014-04-14 19:06:51 +053031323WDI_Status
31324WDI_printRegInfo
31325(
31326 WDI_ControlBlockType* pWDICtx,
31327 WDI_EventInfoType* pEventData
31328)
31329{
31330 tHalRegDebugInfo *pRegTable;
31331 tHalRegDebugInfoParams *pRegParams;
31332 uint32 cnt=0;
31333
31334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31335 "%s: ", __func__);
31336 /*-------------------------------------------------------------------------
31337 Sanity check
31338 -------------------------------------------------------------------------*/
31339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31340 ( NULL == pEventData->pEventData))
31341 {
31342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31343 "%s: Invalid parameters", __func__);
31344 WDI_ASSERT(0);
31345 return WDI_STATUS_E_FAILURE;
31346 }
31347
31348 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31349
31350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31351 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31352 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31353
31354 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31355
31356 if (pRegParams->regCount <= 0)
31357 {
31358 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31359 "%s incorrect parameters passed", __func__);
31360 return WDI_STATUS_E_FAILURE;
31361 }
31362
31363 while(pRegParams->regCount--)
31364 {
31365 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31366 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31367 cnt++;
31368 }
31369
31370 return WDI_STATUS_SUCCESS;
31371}
c_hpothu92367912014-05-01 15:18:17 +053031372
31373/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031374 * FUNCTION: WDI_delBaInd
31375 * send the delBA to peer.
31376 */
31377
31378WDI_Status
31379WDI_delBaInd
31380(
31381 WDI_ControlBlockType* pWDICtx,
31382 WDI_EventInfoType* pEventData
31383
31384)
31385{
31386 tHalWlanDelBaIndMsg halDelBaInd;
31387 WDI_LowLevelIndType wdiInd;
31388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31389
31390 /*-------------------------------------------------------------------------
31391 Sanity check
31392 -------------------------------------------------------------------------*/
31393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31394 ( NULL == pEventData->pEventData))
31395 {
31396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31397 "%s: Invalid parameters", __func__);
31398 WDI_ASSERT(0);
31399 return WDI_STATUS_E_FAILURE;
31400 }
31401
31402 /*-------------------------------------------------------------------------
31403 Extract indication and send it to UMAC
31404 -------------------------------------------------------------------------*/
31405
31406 /* Parameters need to be unpacked according to HAL struct*/
31407 wpalMemoryCopy( &halDelBaInd,
31408 pEventData->pEventData,
31409 sizeof(halDelBaInd));
31410
31411 /*Fill in the indication parameters*/
31412 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31413
31414 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31415 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31416 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31417
31418 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31419 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31420 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31421
31422 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31423 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31424 if ( pWDICtx->wdiLowLevelIndCB )
31425 {
31426 /*Notify UMAC*/
31427 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31428 }
31429
31430 return WDI_STATUS_SUCCESS;
31431
31432
31433}
31434
31435/*
c_hpothu92367912014-05-01 15:18:17 +053031436 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31437 * send the response to PE with beacon miss count
31438 * received from WDI.
31439 */
31440WDI_Status
31441WDI_ProcessGetBcnMissRateRsp
31442(
31443 WDI_ControlBlockType* pWDICtx,
31444 WDI_EventInfoType* pEventData
31445)
31446{
31447 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31448 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31449
31450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31451 "In %s",__func__);
31452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31453
31454 /*-------------------------------------------------------------------------
31455 Sanity check
31456 -------------------------------------------------------------------------*/
31457 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31458 ( NULL == pEventData->pEventData))
31459 {
31460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31461 "%s: Invalid parameters", __func__);
31462 WDI_ASSERT(0);
31463 return WDI_STATUS_E_FAILURE;
31464 }
31465
31466 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31467 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31468
31469 /*Notify UMAC*/
31470 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31471 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31472 return WDI_STATUS_SUCCESS;
31473}
31474
31475/*
31476 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31477 * Request to WDI to get missed beacon rate.
31478 */
31479WDI_Status
31480WDI_ProcessGetBcnMissRateReq
31481(
31482 WDI_ControlBlockType* pWDICtx,
31483 WDI_EventInfoType* pEventData
31484)
31485{
31486 wpt_uint8* pSendBuffer = NULL;
31487 wpt_uint16 usDataOffset = 0;
31488 wpt_uint16 usSendSize = 0;
31489 wpt_uint8 ucCurrentBSSSesIdx = 0;
31490 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031491 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31492 tHalBcnMissRateReqParams halBcnMissRateReq;
31493
31494/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31495
31496 /*-------------------------------------------------------------------------
31497 Sanity check
31498 -------------------------------------------------------------------------*/
31499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31500 ( NULL == pEventData->pCBfnc ) )
31501 {
31502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31503 "%s: Invalid parameters", __func__);
31504 WDI_ASSERT(0);
31505 return WDI_STATUS_E_FAILURE;
31506 }
31507
31508 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31509
31510 wpalMutexAcquire(&pWDICtx->wptMutex);
31511
31512 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31513 pEventData->pEventData, &pBSSSes);
31514 if ( NULL == pBSSSes )
31515 {
31516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31517 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031518 MAC_ADDRESS_STR, __func__,
31519 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031520 wpalMutexRelease(&pWDICtx->wptMutex);
31521 return WDI_STATUS_E_NOT_ALLOWED;
31522 }
31523 wpalMutexRelease(&pWDICtx->wptMutex);
31524
31525 /*-----------------------------------------------------------------------
31526 Get message buffer
31527 -----------------------------------------------------------------------*/
31528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31529 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31530 sizeof(tHalBcnMissRateReqParams),
31531 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31532 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31533 {
31534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31535 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31536 pEventData);
31537 WDI_ASSERT(0);
31538 return WDI_STATUS_E_FAILURE;
31539 }
31540
31541 pWDICtx->wdiReqStatusCB = NULL;
31542 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31543
31544 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31545
31546 wpalMemoryCopy( pSendBuffer+usDataOffset,
31547 &halBcnMissRateReq,
31548 sizeof(tHalBcnMissRateReqParams));
31549 /*-------------------------------------------------------------------------
31550 Send Get STA Request to HAL
31551 -------------------------------------------------------------------------*/
31552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31553 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31554}
31555
31556/**
31557 @brief WDI_GetBcnMissRate
31558
31559 @param pUserData: user data will be passed back with the
31560 callback
31561 WDI_GetBcnMissRateCb: callback for passing back the response
31562 of the get stats operation received from the device
31563 bssid: bssid, to send bssIdx to FW
31564
31565 @return SUCCESS or FAIL
31566*/
31567WDI_Status WDI_GetBcnMissRate( void *pUserData,
31568 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31569 tANI_U8 *bssid )
31570{
31571 WDI_EventInfoType wdiEventData;
31572
31573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31574
31575 /*------------------------------------------------------------------------
31576 Sanity Check
31577 ------------------------------------------------------------------------*/
31578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31579 {
31580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31581 "WDI API call before module is initialized - Fail request");
31582
31583 return WDI_STATUS_E_NOT_ALLOWED;
31584 }
31585
31586 /*------------------------------------------------------------------------
31587 Fill in Event data and post to the Main FSM
31588 ------------------------------------------------------------------------*/
31589 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31590 wdiEventData.pEventData = bssid;
31591 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31592 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31593 wdiEventData.pUserData = pUserData;
31594
31595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31596}
Abhishek Singh85b74712014-10-08 11:38:19 +053031597
31598/*
31599 * FUNCTION: WDI_ProcessGetFwStatsRsp
31600 * send the response with FW stats asked.
31601 */
31602WDI_Status
31603 WDI_ProcessGetFwStatsRsp
31604(
31605 WDI_ControlBlockType* pWDICtx,
31606 WDI_EventInfoType* pEventData
31607)
31608{
31609 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31610 tpHalfwStatsRspParams pHalFwstatsRsp;
31611 WDI_FWStatsResults fwStats;
31612
31613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31614
31615 /*-------------------------------------------------------------------------
31616 Sanity check
31617 -------------------------------------------------------------------------*/
31618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31619 ( NULL == pEventData->pEventData))
31620 {
31621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31622 "%s: Invalid parameters", __func__);
31623 WDI_ASSERT(0);
31624 return WDI_STATUS_E_FAILURE;
31625 }
31626 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31627 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31628
31629 if(pHalFwstatsRsp->length)
31630 {
31631 switch( pHalFwstatsRsp->type )
31632 {
31633 case FW_UBSP_STATS:
31634 {
31635 ubspFwStats *ubspStatsfromFw;
31636
31637 fwStats.type = pHalFwstatsRsp->type;
31638 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31639 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31640 ubspStatsfromFw->ubsp_enter_cnt;
31641 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31642 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31643 }
31644 break;
31645 default:
31646 {
31647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31648 "%s: No handling for stats type %d", __func__,
31649 pHalFwstatsRsp->type);
31650 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31651 NULL, pWDICtx->pRspCBUserData);
31652 return WDI_STATUS_E_FAILURE;
31653 }
31654 }
31655 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31656 }
31657 else
31658 {
31659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31660 "%s: Length = 0 for type %d return failure ", __func__,
31661 pHalFwstatsRsp->type);
31662 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31663 NULL, pWDICtx->pRspCBUserData);
31664 return WDI_STATUS_E_FAILURE;
31665 }
31666 return WDI_STATUS_SUCCESS;
31667}
31668
31669/*
31670 * FUNCTION: WDI_ProcessGetFwStatsReq
31671 * Request to WDI to get FW Stats.
31672 */
31673WDI_Status
31674 WDI_ProcessGetFwStatsReq
31675(
31676 WDI_ControlBlockType* pWDICtx,
31677 WDI_EventInfoType* pEventData
31678)
31679{
31680 wpt_uint8* pSendBuffer = NULL;
31681 wpt_uint16 usDataOffset = 0;
31682 wpt_uint16 usSendSize = 0;
31683 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31684 tHalfwStatsReqParams halFwStatsReq;
31685
31686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31687
31688 /*-------------------------------------------------------------------------
31689 Sanity check
31690 -------------------------------------------------------------------------*/
31691 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31692 ( NULL == pEventData->pCBfnc ) )
31693 {
31694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31695 "%s: Invalid parameters", __func__);
31696 WDI_ASSERT(0);
31697 return WDI_STATUS_E_FAILURE;
31698 }
31699
31700 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31701
31702 /*-----------------------------------------------------------------------
31703 Get message buffer
31704 -----------------------------------------------------------------------*/
31705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31706 pWDICtx, WDI_GET_FW_STATS_REQ,
31707 sizeof(tHalfwStatsReqParams),
31708 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31709 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31710 {
31711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31712 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31713 pEventData);
31714 WDI_ASSERT(0);
31715 return WDI_STATUS_E_FAILURE;
31716 }
31717
31718 pWDICtx->wdiReqStatusCB = NULL;
31719 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31720 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31721 wpalMemoryCopy( pSendBuffer+usDataOffset,
31722 &halFwStatsReq,
31723 sizeof(tHalfwStatsReqParams));
31724 /*-------------------------------------------------------------------------
31725 Send Get STA Request to HAL
31726 -------------------------------------------------------------------------*/
31727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31728 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31729}
31730
Sunil Duttbd736ed2014-05-26 21:19:41 +053031731#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31732
31733/**
31734 @brief WDI_LLStatsSetReq
31735 This API is called to set link layer stats request in FW
31736
31737 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31738 wdiLLStatsSetRspCb : set link layer stats resp callback
31739 usrData : Client context
31740 @see
31741 @return SUCCESS or FAIL
31742*/
31743WDI_Status
31744WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31745 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31746 void* pUserData)
31747{
31748 WDI_EventInfoType wdiEventData;
31749
31750 /*------------------------------------------------------------------------
31751 Sanity Check
31752 ------------------------------------------------------------------------*/
31753 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31754 {
31755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31756 "WDI API call before module is initialized - Fail request");
31757
31758 return WDI_STATUS_E_NOT_ALLOWED;
31759 }
31760
31761 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31762 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31763 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31764 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31765 wdiEventData.pUserData = pUserData;
31766
31767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31768}
31769
31770/**
31771 @brief WDI_ProcessLLStatsSetReq -
31772 Set Link Layer Stats request to FW
31773
31774 @param pWDICtx : wdi context
31775 pEventData : indication data
31776
31777 @see
31778 @return none
31779*/
31780WDI_Status
31781WDI_ProcessLLStatsSetReq
31782(
31783 WDI_ControlBlockType* pWDICtx,
31784 WDI_EventInfoType* pEventData
31785)
31786{
31787 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31788 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31789 wpt_uint8* pSendBuffer = NULL;
31790 wpt_uint16 usSendSize = 0;
31791 wpt_uint16 usDataOffset = 0;
31792 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31793
31794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31795 ( NULL == pEventData->pCBfnc ))
31796 {
31797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31798 "%s: Invalid parameters", __func__);
31799 WDI_ASSERT(0);
31800 return WDI_STATUS_E_FAILURE;
31801 }
31802
31803 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31804 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31805
31806 /*-----------------------------------------------------------------------
31807 Get message buffer
31808 ! TO DO : proper conversion into the HAL Message Request Format
31809 -----------------------------------------------------------------------*/
31810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31811 pWDICtx,
31812 WDI_LL_STATS_SET_REQ,
31813 sizeof(tHalMacLlSetStatsReqParams),
31814 &pSendBuffer, &usDataOffset,
31815 &usSendSize))||
31816 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31817 {
31818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31819 "Unable to get send buffer in %s %p %p %p", __func__,
31820 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31821 WDI_ASSERT(0);
31822 return WDI_STATUS_E_FAILURE;
31823 }
31824
31825
Dino Mycled3d50022014-07-07 12:58:25 +053031826 /* Need to fill in the self STA Index */
31827 if ( WDI_STATUS_SUCCESS !=
31828 WDI_STATableFindStaidByAddr(pWDICtx,
31829 pwdiLLStatsSetReqParams->macAddr,
31830 &halLLStatsSetParams.sta_id))
31831 {
31832 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31833 MAC_ADDRESS_STR
31834 ": This station does not exist in the WDI Station Table",
31835 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31836
31837 wpalMemoryFree(pSendBuffer);
31838 return WDI_STATUS_E_FAILURE;
31839 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031840
31841 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031842 halLLStatsSetParams.mpdu_size_threshold =
31843 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31844 halLLStatsSetParams.aggressive_statistics_gathering =
31845 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31846
31847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31848 " halLLStatsSetParams.req_id = %u",
31849 halLLStatsSetParams.req_id);
31850 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31851 " halLLStatsSetParams.sta_id = %u",
31852 halLLStatsSetParams.sta_id);
31853 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31854 " halLLStatsSetParams.mpdu_size_threshold = %u",
31855 halLLStatsSetParams.mpdu_size_threshold);
31856 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31857 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31858 halLLStatsSetParams.aggressive_statistics_gathering);
31859
31860 wpalMemoryCopy(pSendBuffer+usDataOffset,
31861 &halLLStatsSetParams,
31862 sizeof(halLLStatsSetParams));
31863
31864 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31865
31866 /*-------------------------------------------------------------------------
31867 Send Clear Link Layer Stats Request to HAL
31868 -------------------------------------------------------------------------*/
31869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31870 wdiLLStatsSetCb, pEventData->pUserData,
31871 WDI_LL_STATS_SET_RSP);
31872}
31873
31874/**
31875 @brief WDI_LLStatsGetReq
31876 This API is called to get link layer stats request in FW
31877
31878 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31879 wdiLLStatsGetRspCb : get link layer stats resp callback
31880 usrData : Client context
31881 @see
31882 @return SUCCESS or FAIL
31883*/
31884WDI_Status
31885WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31886 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31887 void* pUserData)
31888{
31889 WDI_EventInfoType wdiEventData;
31890
31891 /*------------------------------------------------------------------------
31892 Sanity Check
31893 ------------------------------------------------------------------------*/
31894 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31895 {
31896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31897 "WDI API call before module is initialized - Fail request");
31898
31899 return WDI_STATUS_E_NOT_ALLOWED;
31900 }
31901
31902 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31903 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31904 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31905 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31906 wdiEventData.pUserData = pUserData;
31907
31908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31909}
31910
31911/**
31912 @brief WDI_ProcessLLStatsGetReq -
31913 Get Link Layer Stats request to FW
31914
31915 @param pWDICtx : wdi context
31916 pEventData : indication data
31917
31918 @see
31919 @return none
31920*/
31921WDI_Status
31922WDI_ProcessLLStatsGetReq
31923(
31924 WDI_ControlBlockType* pWDICtx,
31925 WDI_EventInfoType* pEventData
31926)
31927{
31928 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31929 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31930 wpt_uint8* pSendBuffer = NULL;
31931 wpt_uint16 usSendSize = 0;
31932 wpt_uint16 usDataOffset = 0;
31933 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31934
31935 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31936 ( NULL == pEventData->pCBfnc ))
31937 {
31938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31939 "%s: Invalid parameters", __func__);
31940 WDI_ASSERT(0);
31941 return WDI_STATUS_E_FAILURE;
31942 }
31943
31944 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31945 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31946
31947 /*-----------------------------------------------------------------------
31948 Get message buffer
31949 ! TO DO : proper conversion into the HAL Message Request Format
31950 -----------------------------------------------------------------------*/
31951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31952 pWDICtx,
31953 WDI_LL_STATS_GET_REQ,
31954 sizeof(tHalMacLlGetStatsReqParams),
31955 &pSendBuffer, &usDataOffset,
31956 &usSendSize))||
31957 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31958 {
31959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31960 "Unable to get send buffer in %s %p %p %p", __func__,
31961 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31962 WDI_ASSERT(0);
31963 return WDI_STATUS_E_FAILURE;
31964 }
Dino Mycled3d50022014-07-07 12:58:25 +053031965 /* Need to fill in the self STA Index */
31966 if ( WDI_STATUS_SUCCESS !=
31967 WDI_STATableFindStaidByAddr(pWDICtx,
31968 pwdiLLStatsGetReqParams->macAddr,
31969 &halLLStatsGetParams.sta_id))
31970 {
31971 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31972 MAC_ADDRESS_STR
31973 ": This station does not exist in the WDI Station Table",
31974 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31975
31976 wpalMemoryFree(pSendBuffer);
31977 return WDI_STATUS_E_FAILURE;
31978 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031979
31980 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031981 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31982
31983 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31984 " halLLStatsGetParams.req_id = %u",
31985 halLLStatsGetParams.req_id);
31986 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31987 " halLLStatsGetParams.staId = %u",
31988 halLLStatsGetParams.sta_id);
31989 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31990 " halLLStatsGetParams.Mask = %u",
31991 halLLStatsGetParams.param_id_mask);
31992
31993 wpalMemoryCopy(pSendBuffer+usDataOffset,
31994 &halLLStatsGetParams,
31995 sizeof(halLLStatsGetParams));
31996
31997 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31998
31999 /*-------------------------------------------------------------------------
32000 Send Clear Link Layer Stats Request to HAL
32001 -------------------------------------------------------------------------*/
32002 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32003 wdiLLStatsGetCb, pEventData->pUserData,
32004 WDI_LL_STATS_GET_RSP);
32005}
32006
32007/**
32008 @brief WDI_LLStatsClearReq
32009 This API is called to clear link layer stats request in FW
32010
32011 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32012 wdiLLStatsSetRspCb : clear link layer stats resp callback
32013 usrData : Client context
32014 @see
32015 @return SUCCESS or FAIL
32016*/
32017WDI_Status
32018WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32019 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32020 void* pUserData)
32021{
32022 WDI_EventInfoType wdiEventData;
32023
32024 /*------------------------------------------------------------------------
32025 Sanity Check
32026 ------------------------------------------------------------------------*/
32027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32028 {
32029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32030 "WDI API call before module is initialized - Fail request");
32031
32032 return WDI_STATUS_E_NOT_ALLOWED;
32033 }
32034
32035 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32036 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32037 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32038 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32039 wdiEventData.pUserData = pUserData;
32040
32041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32042 "%s:%d Enter", __func__, __LINE__);
32043
32044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32045}
32046
32047/**
32048 @brief WDI_ProcessLLStatsClearReq -
32049 Clear Link Layer Stats request to FW
32050
32051 @param pWDICtx : wdi context
32052 pEventData : indication data
32053
32054 @see
32055 @return none
32056*/
32057WDI_Status
32058WDI_ProcessLLStatsClearReq
32059(
32060 WDI_ControlBlockType* pWDICtx,
32061 WDI_EventInfoType* pEventData
32062)
32063{
32064 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32065 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32066 wpt_uint8* pSendBuffer = NULL;
32067 wpt_uint16 usSendSize = 0;
32068 wpt_uint16 usDataOffset = 0;
32069 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32070
32071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32072 ( NULL == pEventData->pCBfnc ))
32073 {
32074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32075 "%s: Invalid parameters", __func__);
32076 WDI_ASSERT(0);
32077 return WDI_STATUS_E_FAILURE;
32078 }
32079
32080 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32081 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32082
32083 /*-----------------------------------------------------------------------
32084 Get message buffer
32085 ! TO DO : proper conversion into the HAL Message Request Format
32086 -----------------------------------------------------------------------*/
32087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32088 pWDICtx,
32089 WDI_LL_STATS_CLEAR_REQ,
32090 sizeof(tHalMacLlClearStatsReqParams),
32091 &pSendBuffer, &usDataOffset,
32092 &usSendSize))||
32093 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32094 {
32095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32096 "Unable to get send buffer in %s %p %p %p", __func__,
32097 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32098 WDI_ASSERT(0);
32099 return WDI_STATUS_E_FAILURE;
32100 }
Dino Mycled3d50022014-07-07 12:58:25 +053032101 /* Need to fill in the self STA Index */
32102 if ( WDI_STATUS_SUCCESS !=
32103 WDI_STATableFindStaidByAddr(pWDICtx,
32104 pwdiLLStatsClearReqParams->macAddr,
32105 &halLLStatsClearParams.sta_id))
32106 {
32107 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32108 MAC_ADDRESS_STR
32109 ": This station does not exist in the WDI Station Table",
32110 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32111
32112 wpalMemoryFree(pSendBuffer);
32113 return WDI_STATUS_E_FAILURE;
32114 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032115
32116 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032117 halLLStatsClearParams.stats_clear_req_mask =
32118 pwdiLLStatsClearReqParams->statsClearReqMask;
32119 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32120
32121 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32122 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32123 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32124 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32125 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32126 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32127 halLLStatsClearParams.stats_clear_req_mask);
32128 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32129 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32130
32131 wpalMemoryCopy(pSendBuffer+usDataOffset,
32132 &halLLStatsClearParams,
32133 sizeof(halLLStatsClearParams));
32134
32135 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32136
32137 /*-------------------------------------------------------------------------
32138 Send Clear Link Layer Stats Request to HAL
32139 -------------------------------------------------------------------------*/
32140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32141 wdiLLStatsClearCb, pEventData->pUserData,
32142 WDI_LL_STATS_CLEAR_RSP);
32143}
32144#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032145
Abhishek Singh85b74712014-10-08 11:38:19 +053032146WDI_Status WDI_FWStatsGetReq( void* pUserData,
32147 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32148 wpt_uint32 stats)
32149{
32150 WDI_EventInfoType wdiEventData;
32151
32152 /*------------------------------------------------------------------------
32153 Sanity Check
32154 ------------------------------------------------------------------------*/
32155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32156 {
32157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32158 "WDI API call before module is initialized - Fail request");
32159 return WDI_STATUS_E_NOT_ALLOWED;
32160 }
32161 /*------------------------------------------------------------------------
32162 Fill in Event data and post to the Main FSM
32163 ------------------------------------------------------------------------*/
32164 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32165 wdiEventData.pEventData = (void *)&stats;
32166 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32167 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32168 wdiEventData.pUserData = pUserData;
32169
32170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32171
32172}
32173
Katya Nigamf0511f62015-05-05 16:40:57 +053032174WDI_Status
32175WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
32176 WDI_MonStartRspCb wdiMonStartRspCb,
32177 void* pUserData)
32178{
32179 WDI_EventInfoType wdiEventData;
32180
32181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32182 "%s", __func__);
32183
32184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32185 {
32186 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32187 "WDI API call before module is initialized - Fail request");
32188
32189 return WDI_STATUS_E_NOT_ALLOWED;
32190 }
32191
32192 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32193 wdiEventData.pEventData = pwdiMonStartReqParams;
32194 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
32195 wdiEventData.pCBfnc = wdiMonStartRspCb;
32196 wdiEventData.pUserData = pUserData;
32197
32198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32199}
32200
32201WDI_Status
32202WDI_ProcessMonStartReq
32203(
32204 WDI_ControlBlockType* pWDICtx,
32205 WDI_EventInfoType* pEventData
32206)
32207{
32208 WDI_MonStartReqType* pwdiMonStartReqParams;
32209 WDI_MonStartRspCb wdiMonStartCb;
32210 wpt_uint8* pSendBuffer = NULL;
32211 wpt_uint16 usSendSize = 0;
32212 wpt_uint16 usDataOffset = 0;
32213 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32214
32215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32216 "%s", __func__);
32217
32218 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32219 ( NULL == pEventData->pCBfnc ))
32220 {
32221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32222 "%s: Invalid parameters", __func__);
32223 WDI_ASSERT(0);
32224 return WDI_STATUS_E_FAILURE;
32225 }
32226
32227 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
32228 wdiMonStartCb = (WDI_MonStartRspCb)pEventData->pCBfnc;
32229
32230 /*-----------------------------------------------------------------------
32231 Get message buffer
32232 ! TO DO : proper conversion into the HAL Message Request Format
32233 -----------------------------------------------------------------------*/
32234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32235 pWDICtx,
32236 WDI_MON_START_REQ,
32237 sizeof(tHalEnableMonitorModeReqParams),
32238 &pSendBuffer, &usDataOffset,
32239 &usSendSize))||
32240 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32241 {
32242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32243 "Unable to get send buffer in %s %p %p %p", __func__,
32244 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32245 WDI_ASSERT(0);
32246 return WDI_STATUS_E_FAILURE;
32247 }
32248
32249 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32250 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32251 pwdiMonStartReqParams->ChannelBW);
32252 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32253 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32254 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32255 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32256 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32257 pwdiMonStartReqParams->mmFilters[0].macAddr,
32258 sizeof( wpt_macAddr ));
32259 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32260 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32261 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32262 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32263
32264 wpalMemoryCopy(pSendBuffer+usDataOffset,
32265 &halEnableMonitorModeParams,
32266 sizeof(halEnableMonitorModeParams));
32267
32268 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32269
32270 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32271 wdiMonStartCb, pEventData->pUserData,
32272 WDI_MON_START_RSP);
32273}
32274
32275WDI_Status
32276WDI_ProcessMonStartRsp
32277(
32278 WDI_ControlBlockType* pWDICtx,
32279 WDI_EventInfoType* pEventData
32280)
32281{
32282 WDI_MonStartRspCb wdiMonStartRspCb;
32283
32284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32285 "%s: Enter ", __func__);
32286 /*-------------------------------------------------------------------------
32287 Sanity check
32288 -------------------------------------------------------------------------*/
32289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32290 ( NULL == pEventData->pEventData))
32291 {
32292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32293 "%s: Invalid parameters", __func__);
32294 WDI_ASSERT(0);
32295 return WDI_STATUS_E_FAILURE;
32296 }
32297
32298 wdiMonStartRspCb = (WDI_MonStartRspCb)pWDICtx->pfncRspCB;
32299
32300 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32301
32302 return WDI_STATUS_SUCCESS;
32303}
32304
32305WDI_Status
32306WDI_MonStopReq(WDI_MonStopRspCb wdiMonStopRspCb,
32307 void* pUserData)
32308{
32309 WDI_EventInfoType wdiEventData;
32310
32311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32312 "%s", __func__);
32313
32314 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32315 {
32316 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32317 "WDI API call before module is initialized - Fail request");
32318
32319 return WDI_STATUS_E_NOT_ALLOWED;
32320 }
32321
32322 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32323 wdiEventData.pEventData = NULL;
32324 wdiEventData.uEventDataSize = sizeof(NULL);
32325 wdiEventData.pCBfnc = wdiMonStopRspCb;
32326 wdiEventData.pUserData = pUserData;
32327
32328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32329}
32330
32331WDI_Status
32332WDI_ProcessMonStopReq
32333(
32334 WDI_ControlBlockType* pWDICtx,
32335 WDI_EventInfoType* pEventData
32336)
32337{
32338 WDI_MonStopRspCb wdiMonStopCb;
32339 wpt_uint8* pSendBuffer = NULL;
32340 wpt_uint16 usSendSize = 0;
32341 wpt_uint16 usDataOffset = 0;
32342 wpt_uint8 resetConfiguration;
32343
32344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32345 "%s", __func__);
32346
32347 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32348 {
32349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32350 "%s: Invalid parameters", __func__);
32351 WDI_ASSERT(0);
32352 return WDI_STATUS_E_FAILURE;
32353 }
32354
32355 wdiMonStopCb = (WDI_MonStopRspCb)pEventData->pCBfnc;
32356
32357 /*-----------------------------------------------------------------------
32358 Get message buffer
32359 ! TO DO : proper conversion into the HAL Message Request Format
32360 -----------------------------------------------------------------------*/
32361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32362 pWDICtx,
32363 WDI_MON_STOP_REQ,
32364 sizeof(wpt_uint8),
32365 &pSendBuffer, &usDataOffset,
32366 &usSendSize))||
32367 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32368 {
32369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32370 "Unable to get send buffer in %s %p %p", __func__,
32371 pEventData, wdiMonStopCb);
32372 WDI_ASSERT(0);
32373 return WDI_STATUS_E_FAILURE;
32374 }
32375
32376 wpalMemoryCopy(pSendBuffer+usDataOffset,
32377 &resetConfiguration,
32378 sizeof(wpt_uint8));
32379
32380 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32381
32382 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32383 wdiMonStopCb, pEventData->pUserData,
32384 WDI_MON_STOP_RSP);
32385}
32386
32387WDI_Status
32388WDI_ProcessMonStopRsp
32389(
32390 WDI_ControlBlockType* pWDICtx,
32391 WDI_EventInfoType* pEventData
32392)
32393{
32394 WDI_MonStopRspCb wdiMonStopRspCb;
32395
32396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32397 "%s: Enter ", __func__);
32398 /*-------------------------------------------------------------------------
32399 Sanity check
32400 -------------------------------------------------------------------------*/
32401 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32402 {
32403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32404 "%s: Invalid parameters", __func__);
32405 WDI_ASSERT(0);
32406 return WDI_STATUS_E_FAILURE;
32407 }
32408
32409 wdiMonStopRspCb = (WDI_MonStopRspCb)pWDICtx->pfncRspCB;
32410
32411 wdiMonStopRspCb(pWDICtx->pRspCBUserData);
32412
32413 return WDI_STATUS_SUCCESS;
32414}
32415
Dino Mycle41bdc942014-06-10 11:30:24 +053032416#ifdef WLAN_FEATURE_EXTSCAN
32417
32418/**
32419 @brief Process EXTSCAN BUffer full indication from FW
32420
32421 @param pWDICtx: pointer to the WLAN DAL context
32422 pEventData: pointer to the event information structure
32423
32424 @see
32425 @return Result of the function call
32426*/
32427WDI_Status
32428WDI_ProcessEXTScanProgressInd
32429(
32430 WDI_ControlBlockType* pWDICtx,
32431 WDI_EventInfoType* pEventData
32432)
32433{
32434 WDI_LowLevelIndType wdiInd;
32435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32436
32437 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32438 "%s: ", __func__);
32439
32440 /* sanity check */
32441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32442 ( NULL == pEventData->pEventData))
32443 {
32444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32445 "%s: Invalid parameters", __func__);
32446 WDI_ASSERT(0);
32447 return WDI_STATUS_E_FAILURE;
32448 }
32449
32450 /* Fill in the indication parameters */
32451 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32452
32453 /* extract response and send it to UMAC */
32454 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32455
32456 /* Notify UMAC */
32457 if (pWDICtx->wdiLowLevelIndCB)
32458 {
32459 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32460 }
32461 else
32462 {
Dino Mycled3d50022014-07-07 12:58:25 +053032463 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032464 "%s: WDILowLevelIndCb is null", __func__);
32465 WDI_ASSERT(0);
32466 return WDI_STATUS_E_FAILURE;
32467 }
32468 return WDI_STATUS_SUCCESS;
32469
32470} /* End of WDI_ProcessEXTScanProgressInd */
32471
32472
32473/**
32474 @brief Process EXTScan Scan Available indication from FW
32475
32476 @param pWDICtx: pointer to the WLAN DAL context
32477 pEventData: pointer to the event information structure
32478
32479 @see
32480 @return Result of the function call
32481*/
32482WDI_Status
32483WDI_ProcessEXTScanScanAvailableInd
32484(
32485 WDI_ControlBlockType* pWDICtx,
32486 WDI_EventInfoType* pEventData
32487)
32488{
32489 WDI_LowLevelIndType wdiInd;
32490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32491
32492 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32493 "%s: ", __func__);
32494
32495 /* sanity check */
32496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32497 ( NULL == pEventData->pEventData))
32498 {
32499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32500 "%s: Invalid parameters", __func__);
32501 WDI_ASSERT(0);
32502 return WDI_STATUS_E_FAILURE;
32503 }
32504
32505
32506
32507 /* Fill in the indication parameters */
32508 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32509
32510 /* extract response and send it to UMAC */
32511 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32512
32513 /* Notify UMAC */
32514 if (pWDICtx->wdiLowLevelIndCB)
32515 {
32516 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32517 }
32518 else
32519 {
32520 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32521 "%s: WDILowLevelIndCb is null", __func__);
32522 WDI_ASSERT(0);
32523 return WDI_STATUS_E_FAILURE;
32524 }
32525 return WDI_STATUS_SUCCESS;
32526} /* End of WDI_ProcessEXTScanScanDoneInd */
32527
32528/**
32529 @brief Process EXTScan Result Indication indication from FW
32530
32531 @param pWDICtx: pointer to the WLAN DAL context
32532 pEventData: pointer to the event information structure
32533
32534 @see
32535 @return Result of the function call
32536*/
32537WDI_Status
32538WDI_ProcessEXTScanResultInd
32539(
32540 WDI_ControlBlockType* pWDICtx,
32541 WDI_EventInfoType* pEventData
32542)
32543{
32544 WDI_LowLevelIndType wdiInd;
32545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32546
32547 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32548 "%s: ", __func__);
32549
32550 /* sanity check */
32551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32552 ( NULL == pEventData->pEventData))
32553 {
32554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32555 "%s: Invalid parameters", __func__);
32556 WDI_ASSERT(0);
32557 return WDI_STATUS_E_FAILURE;
32558 }
32559
32560 /* Fill in the indication parameters */
32561 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32562
32563 /* extract response and send it to UMAC */
32564 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32565
32566 /* Notify UMAC */
32567 if (pWDICtx->wdiLowLevelIndCB)
32568 {
32569 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32570 }
32571 else
32572 {
32573 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32574 "%s: WDILowLevelIndCb is null", __func__);
32575 WDI_ASSERT(0);
32576 return WDI_STATUS_E_FAILURE;
32577 }
32578 return WDI_STATUS_SUCCESS;
32579} /* End of WDI_ProcessEXTScanResultInd */
32580
32581/**
32582 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32583
32584 @param pWDICtx: pointer to the WLAN DAL context
32585 pEventData: pointer to the event information structure
32586
32587 @see
32588 @return Result of the function call
32589*/
32590WDI_Status
32591WDI_ProcessEXTScanBssidHotListResultInd
32592(
32593 WDI_ControlBlockType* pWDICtx,
32594 WDI_EventInfoType* pEventData
32595)
32596{
32597 WDI_LowLevelIndType wdiInd;
32598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32599
32600 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32601 "%s: ", __func__);
32602
32603 /* sanity check */
32604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32605 ( NULL == pEventData->pEventData))
32606 {
32607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32608 "%s: Invalid parameters", __func__);
32609 WDI_ASSERT(0);
32610 return WDI_STATUS_E_FAILURE;
32611 }
32612
32613 /* Fill in the indication parameters */
32614 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32615
32616 /* extract response and send it to UMAC */
32617 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32618
32619 /* Notify UMAC */
32620 if (pWDICtx->wdiLowLevelIndCB)
32621 {
32622 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32623 }
32624 else
32625 {
32626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32627 "%s: WDILowLevelIndCb is null", __func__);
32628 WDI_ASSERT(0);
32629 return WDI_STATUS_E_FAILURE;
32630 }
32631 return WDI_STATUS_SUCCESS;
32632} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32633
32634/**
32635 @brief Process EXTScan Significant RSSI Result Indication indication from FW
32636
32637 @param pWDICtx: pointer to the WLAN DAL context
32638 pEventData: pointer to the event information structure
32639
32640 @see
32641 @return Result of the function call
32642*/
32643WDI_Status
32644WDI_ProcessEXTScanSignfRssiResultInd
32645(
32646 WDI_ControlBlockType* pWDICtx,
32647 WDI_EventInfoType* pEventData
32648)
32649{
32650 WDI_LowLevelIndType wdiInd;
32651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32652
32653 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32654 "%s: ", __func__);
32655
32656 /* sanity check */
32657 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32658 ( NULL == pEventData->pEventData))
32659 {
32660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32661 "%s: Invalid parameters", __func__);
32662 WDI_ASSERT(0);
32663 return WDI_STATUS_E_FAILURE;
32664 }
32665
32666 /* Fill in the indication parameters */
32667 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32668
32669 /* extract response and send it to UMAC */
32670 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32671
32672 /* Notify UMAC */
32673 if (pWDICtx->wdiLowLevelIndCB)
32674 {
32675 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32676 }
32677 else
32678 {
32679 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32680 "%s: WDILowLevelIndCb is null", __func__);
32681 WDI_ASSERT(0);
32682 return WDI_STATUS_E_FAILURE;
32683 }
32684 return WDI_STATUS_SUCCESS;
32685} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32686
32687/**
32688 @brief WDI_EXTScanGetCapabilitiesReq
32689
32690 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32691 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32692 of the Req operation received from the device
32693 pUserData: user data will be passed back with the callback
32694
32695 @return SUCCESS or FAIL
32696*/
32697WDI_Status
32698WDI_EXTScanGetCapabilitiesReq(
32699 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32700 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32701 void* pUserData)
32702{
32703 WDI_EventInfoType wdiEventData;
32704
32705 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32706 "%s: %d ",__func__, __LINE__);
32707 /*------------------------------------------------------------------------
32708 Sanity Check
32709 ------------------------------------------------------------------------*/
32710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32711 {
32712 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32713 "WDI API call before module is initialized - Fail request");
32714
32715 return WDI_STATUS_E_NOT_ALLOWED;
32716 }
32717
32718 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32719 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32720 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32721 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32722 wdiEventData.pUserData = pUserData;
32723
32724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32725}
32726
32727/**
32728 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32729 Extended Scan Get Capability request to FW
32730
32731 @param pWDICtx : wdi context
32732 pEventData : indication data
32733
32734 @see
32735 @return none
32736*/
32737WDI_Status
32738WDI_ProcessEXTScanGetCapabilitiesReq
32739(
32740 WDI_ControlBlockType* pWDICtx,
32741 WDI_EventInfoType* pEventData
32742)
32743{
32744 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32745 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32746 wpt_uint8* pSendBuffer = NULL;
32747 wpt_uint16 usSendSize = 0;
32748 wpt_uint16 usDataOffset = 0;
32749 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32750
32751 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32752 "%s: %d Enter",__func__, __LINE__);
32753
32754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32755 ( NULL == pEventData->pCBfnc ))
32756 {
32757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32758 "%s: Invalid parameters", __func__);
32759 WDI_ASSERT(0);
32760 return WDI_STATUS_E_FAILURE;
32761 }
32762
32763 pwdiEXTScanGetCapabilitiesReqParams =
32764 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32765 wdiEXTScanGetCapabilitiesRspCb =
32766 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32767
32768 /*-----------------------------------------------------------------------
32769 Get message buffer
32770 ! TO DO : proper conversion into the HAL Message Request Format
32771 -----------------------------------------------------------------------*/
32772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32773 pWDICtx,
32774 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32775 sizeof(halEXTScanGetCapReqParams),
32776 &pSendBuffer, &usDataOffset,
32777 &usSendSize))||
32778 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32779 {
32780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32781 "Unable to get send buffer in %s %p %p %p", __func__,
32782 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32783 wdiEXTScanGetCapabilitiesRspCb);
32784 WDI_ASSERT(0);
32785 return WDI_STATUS_E_FAILURE;
32786 }
32787
32788 halEXTScanGetCapReqParams.requestId =
32789 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32790 halEXTScanGetCapReqParams.sessionId =
32791 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32792
32793 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32794 " requestId %u "
32795 " sessionId %u ",
32796 halEXTScanGetCapReqParams.requestId,
32797 halEXTScanGetCapReqParams.sessionId);
32798
32799 wpalMemoryCopy(pSendBuffer+usDataOffset,
32800 &halEXTScanGetCapReqParams,
32801 sizeof(halEXTScanGetCapReqParams));
32802
32803 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32804
32805
32806 /*-------------------------------------------------------------------------
32807 Send EXTScan Stop Request to HAL
32808 -------------------------------------------------------------------------*/
32809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32810 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32811 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32812}
32813
32814/**
32815 @brief WDI_EXTScanGetCachedResultsReq
32816
32817 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32818 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32819 of the Req operation received from the device
32820 pUserData: user data will be passed back with the callback
32821
32822 @return SUCCESS or FAIL
32823*/
32824
32825WDI_Status
32826WDI_EXTScanGetCachedResultsReq(
32827 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32828 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32829 void* pUserData)
32830{
32831 WDI_EventInfoType wdiEventData;
32832
32833 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32834 "%s: %d Enter",__func__, __LINE__);
32835 /*------------------------------------------------------------------------
32836 Sanity Check
32837 ------------------------------------------------------------------------*/
32838 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32839 {
32840 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32841 "WDI API call before module is initialized - Fail request");
32842
32843 return WDI_STATUS_E_NOT_ALLOWED;
32844 }
32845
32846 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32847 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32848 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32849 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32850 wdiEventData.pUserData = pUserData;
32851
32852 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32853}
32854
32855/**
32856 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32857 Extended Scan Get Cached Result request to FW
32858
32859 @param pWDICtx : wdi context
32860 pEventData : indication data
32861
32862 @see
32863 @return none
32864*/
32865WDI_Status
32866WDI_ProcessEXTScanGetCachedResultsReq
32867(
32868 WDI_ControlBlockType* pWDICtx,
32869 WDI_EventInfoType* pEventData
32870)
32871{
32872 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32873 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32874 wpt_uint8* pSendBuffer = NULL;
32875 wpt_uint16 usSendSize = 0;
32876 wpt_uint16 usDataOffset = 0;
32877 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32878
32879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32880 "%s: %d Enter",__func__, __LINE__);
32881
32882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32883 ( NULL == pEventData->pCBfnc ))
32884 {
32885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32886 "%s: Invalid parameters", __func__);
32887 WDI_ASSERT(0);
32888 return WDI_STATUS_E_FAILURE;
32889 }
32890
32891 pwdiEXTScanGetCachedResultsReqParams =
32892 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32893 wdiEXTScanGetCachedResultsCb =
32894 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32895
32896 /*-----------------------------------------------------------------------
32897 Get message buffer
32898 ! TO DO : proper conversion into the HAL Message Request Format
32899 -----------------------------------------------------------------------*/
32900 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32901 pWDICtx,
32902 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32903 sizeof(tHalExtScanGetScanReq),
32904 &pSendBuffer, &usDataOffset,
32905 &usSendSize))||
32906 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32907 {
32908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32909 "Unable to get send buffer in %s %p %p %p", __func__,
32910 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32911 wdiEXTScanGetCachedResultsCb);
32912 WDI_ASSERT(0);
32913 return WDI_STATUS_E_FAILURE;
32914 }
32915
32916 halEXTScanGetScanReqParams.requestId =
32917 pwdiEXTScanGetCachedResultsReqParams->requestId;
32918 halEXTScanGetScanReqParams.sessionId =
32919 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32920 halEXTScanGetScanReqParams.flush =
32921 pwdiEXTScanGetCachedResultsReqParams->flush;
32922
32923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32924 " requestId %u "
32925 " sessionId %u "
32926 " flush %u ",
32927 halEXTScanGetScanReqParams.requestId,
32928 halEXTScanGetScanReqParams.sessionId,
32929 halEXTScanGetScanReqParams.flush);
32930
32931 wpalMemoryCopy(pSendBuffer+usDataOffset,
32932 &halEXTScanGetScanReqParams,
32933 sizeof(halEXTScanGetScanReqParams));
32934
32935 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32936
32937
32938 /*-------------------------------------------------------------------------
32939 Send EXTScan Stop Request to HAL
32940 -------------------------------------------------------------------------*/
32941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32942 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32943 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32944}
32945
32946/**
32947 @brief WDI_EXTScanStopReq
32948
32949 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32950 WDI_EXTScanStopRspCb: callback for passing back the response
32951 of the Req operation received from the device
32952 pUserData: user data will be passed back with the callback
32953
32954 @return SUCCESS or FAIL
32955*/
32956WDI_Status
32957WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32958 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32959 void* pUserData)
32960{
32961 WDI_EventInfoType wdiEventData;
32962
32963 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32964 "%s: %d ",__func__, __LINE__);
32965 /*------------------------------------------------------------------------
32966 Sanity Check
32967 ------------------------------------------------------------------------*/
32968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32969 {
32970 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32971 "WDI API call before module is initialized - Fail request");
32972
32973 return WDI_STATUS_E_NOT_ALLOWED;
32974 }
32975
32976 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32977 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32978 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32979 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32980 wdiEventData.pUserData = pUserData;
32981
32982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32983}
32984
32985/**
32986 @brief WDI_ProcessEXTScanStopReq -
32987 Extended Scan Stop request to FW
32988
32989 @param pWDICtx : wdi context
32990 pEventData : indication data
32991
32992 @see
32993 @return none
32994*/
32995WDI_Status
32996WDI_ProcessEXTScanStopReq
32997(
32998 WDI_ControlBlockType* pWDICtx,
32999 WDI_EventInfoType* pEventData
33000)
33001{
33002 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33003 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33004 wpt_uint8* pSendBuffer = NULL;
33005 wpt_uint16 usSendSize = 0;
33006 wpt_uint16 usDataOffset = 0;
33007 tHalExtScanStopReq halEXTScanStopReqParams;
33008
33009 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33010 "%s: %d ",__func__, __LINE__);
33011
33012 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33013 ( NULL == pEventData->pCBfnc ))
33014 {
33015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33016 "%s: Invalid parameters", __func__);
33017 WDI_ASSERT(0);
33018 return WDI_STATUS_E_FAILURE;
33019 }
33020
33021 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33022 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33023
33024 /*-----------------------------------------------------------------------
33025 Get message buffer
33026 ! TO DO : proper conversion into the HAL Message Request Format
33027 -----------------------------------------------------------------------*/
33028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33029 pWDICtx,
33030 WDI_EXTSCAN_STOP_REQ,
33031 sizeof(tHalExtScanStopReq),
33032 &pSendBuffer, &usDataOffset,
33033 &usSendSize))||
33034 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33035 {
33036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33037 "Unable to get send buffer in %s %p %p %p", __func__,
33038 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33039 WDI_ASSERT(0);
33040 return WDI_STATUS_E_FAILURE;
33041 }
33042
33043 halEXTScanStopReqParams.requestId =
33044 pwdiEXTScanStopReqParams->requestId;
33045 halEXTScanStopReqParams.sessionId =
33046 pwdiEXTScanStopReqParams->sessionId;
33047
33048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33049 " halEXTScanStopReqParams.requestId %u "
33050 " halEXTScanStopReqParams.sessionId %u ",
33051 halEXTScanStopReqParams.requestId,
33052 halEXTScanStopReqParams.sessionId);
33053
33054 wpalMemoryCopy(pSendBuffer+usDataOffset,
33055 &halEXTScanStopReqParams,
33056 sizeof(halEXTScanStopReqParams));
33057
33058 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33059
33060
33061 /*-------------------------------------------------------------------------
33062 Send EXTScan Stop Request to HAL
33063 -------------------------------------------------------------------------*/
33064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33065 wdiEXTScanStopCb, pEventData->pUserData,
33066 WDI_EXTSCAN_STOP_RSP);
33067}
33068
33069/**
33070 @brief WDI_EXTScanStartReq
33071
33072 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33073 WDI_EXTScanStartRspCb: callback for passing back the response
33074 of the Req operation received from the device
33075 pUserData: user data will be passed back with the callback
33076
33077 @return SUCCESS or FAIL
33078*/
33079WDI_Status
33080WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33081 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33082 void* pUserData)
33083{
33084 WDI_EventInfoType wdiEventData;
33085
33086 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33087 "%s: %d Enter",__func__, __LINE__);
33088 /*------------------------------------------------------------------------
33089 Sanity Check
33090 ------------------------------------------------------------------------*/
33091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33092 {
33093 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33094 "WDI API call before module is initialized - Fail request");
33095
33096 return WDI_STATUS_E_NOT_ALLOWED;
33097 }
33098
33099 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33100 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33101 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33102 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33103 wdiEventData.pUserData = pUserData;
33104
33105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33106}
33107
33108/**
33109 @brief WDI_ProcessEXTScanStartReq -
33110 Extended Scan Start Request to FW
33111
33112 @param pWDICtx : wdi context
33113 pEventData : indication data
33114
33115 @see
33116 @return none
33117*/
33118WDI_Status
33119WDI_ProcessEXTScanStartReq
33120(
33121 WDI_ControlBlockType* pWDICtx,
33122 WDI_EventInfoType* pEventData
33123)
33124{
33125 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33126 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33127 wpt_uint8* pSendBuffer = NULL;
33128 wpt_uint16 usSendSize = 0;
33129 wpt_uint16 usDataOffset = 0;
33130 tpHalExtScanStartReq pHalExtScanStartReqParams;
33131 int i = 0;
33132 int j = 0;
33133
33134 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33135 "%s: %d Enter",__func__, __LINE__);
33136
33137 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33138 ( NULL == pEventData->pCBfnc ))
33139 {
33140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33141 "%s: Invalid parameters", __func__);
33142 WDI_ASSERT(0);
33143 return WDI_STATUS_E_FAILURE;
33144 }
33145
33146 pwdiEXTScanStartReqParams =
33147 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33148 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33149
33150 /*-----------------------------------------------------------------------
33151 Get message buffer
33152 ! TO DO : proper conversion into the HAL Message Request Format
33153 -----------------------------------------------------------------------*/
33154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33155 pWDICtx,
33156 WDI_EXTSCAN_START_REQ,
33157 sizeof(tHalExtScanStartReq),
33158 &pSendBuffer, &usDataOffset,
33159 &usSendSize))||
33160 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33161 {
33162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33163 "Unable to get send buffer in %s %p %p %p", __func__,
33164 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33165 WDI_ASSERT(0);
33166 return WDI_STATUS_E_FAILURE;
33167 }
33168
33169 pHalExtScanStartReqParams =
33170 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33171
33172 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33173 pHalExtScanStartReqParams->maxApPerScan =
33174 pwdiEXTScanStartReqParams->maxAPperScan;
33175 pHalExtScanStartReqParams->reportThreshold =
33176 pwdiEXTScanStartReqParams->reportThreshold;
33177 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33178 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33179 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
33180
33181 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33182 {
33183 pHalExtScanStartReqParams->bucketData[i].bucketId =
33184 pwdiEXTScanStartReqParams->buckets[i].bucket;
33185 pHalExtScanStartReqParams->bucketData[i].channelBand =
33186 pwdiEXTScanStartReqParams->buckets[i].band;
33187 pHalExtScanStartReqParams->bucketData[i].period =
33188 pwdiEXTScanStartReqParams->buckets[i].period;
33189 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33190 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
33191 pHalExtScanStartReqParams->bucketData[i].numChannels =
33192 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33193
33194 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33195 {
33196 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33197 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33198 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33199 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33200 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33201 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33202 }
33203
33204 }
33205
33206
33207 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33208 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
33209 " sessionId %u numBuckets%u ",
33210 pHalExtScanStartReqParams->basePeriod,
33211 pHalExtScanStartReqParams->maxApPerScan,
33212 pHalExtScanStartReqParams->reportThreshold,
33213 pHalExtScanStartReqParams->requestId,
33214 pHalExtScanStartReqParams->sessionId,
33215 pHalExtScanStartReqParams->numBuckets);
33216
33217 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33218 {
33219 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33220 " %d) bucketId %u channelBand %u period %u "
33221 " reportEvents %u numChannels %u ",i,
33222 pHalExtScanStartReqParams->bucketData[i].bucketId,
33223 pHalExtScanStartReqParams->bucketData[i].channelBand,
33224 pHalExtScanStartReqParams->bucketData[i].period,
33225 pHalExtScanStartReqParams->bucketData[i].reportEvents,
33226 pHalExtScanStartReqParams->bucketData[i].numChannels);
33227
33228 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33229 {
33230 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33231 "%d) channel %u dwellTimeMs %u passive %u ",j,
33232 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33233 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33234 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33235 }
33236
33237 }
33238
Dino Mycle41bdc942014-06-10 11:30:24 +053033239 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33240
33241 /*-------------------------------------------------------------------------
33242 Send EXTSCAN Start Request to HAL
33243 -------------------------------------------------------------------------*/
33244 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33245 wdiEXTScanStartCb, pEventData->pUserData,
33246 WDI_EXTSCAN_START_RSP);
33247}
33248
33249/**
33250 @brief WDI_EXTScanSetBSSIDHotlistReq
33251
33252 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33253 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33254 of the Req operation received from the device
33255 pUserData: user data will be passed back with the callback
33256
33257 @return SUCCESS or FAIL
33258*/
33259WDI_Status
33260WDI_EXTScanSetBSSIDHotlistReq(
33261 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33262 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33263 void* pUserData)
33264{
33265 WDI_EventInfoType wdiEventData;
33266
33267 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33268 "%s: %d Enter ",__func__, __LINE__);
33269 /*------------------------------------------------------------------------
33270 Sanity Check
33271 ------------------------------------------------------------------------*/
33272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33273 {
33274 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33275 "WDI API call before module is initialized - Fail request");
33276
33277 return WDI_STATUS_E_NOT_ALLOWED;
33278 }
33279
33280 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33281 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33282 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33283 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33284 wdiEventData.pUserData = pUserData;
33285
33286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33287}
33288
33289/**
33290 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33291 Extended Scan Set BSSSID Hotlist Request to FW
33292
33293 @param pWDICtx : wdi context
33294 pEventData : indication data
33295
33296 @see
33297 @return none
33298*/
33299WDI_Status
33300WDI_ProcessEXTScanSetBSSIDHotlistReq
33301(
33302 WDI_ControlBlockType* pWDICtx,
33303 WDI_EventInfoType* pEventData
33304)
33305{
33306 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33307 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33308 wpt_uint8* pSendBuffer = NULL;
33309 wpt_uint16 usSendSize = 0;
33310 wpt_uint16 usDataOffset = 0;
33311 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33312 int i;
33313
33314 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33315 "%s: %d Enter",__func__, __LINE__);
33316
33317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33318 ( NULL == pEventData->pCBfnc ))
33319 {
33320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33321 "%s: Invalid parameters", __func__);
33322 WDI_ASSERT(0);
33323 return WDI_STATUS_E_FAILURE;
33324 }
33325
33326 pwdiEXTScanSetBSSIDHotlistReqParams =
33327 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33328 wdiEXTScanSetBSSIDHotlistRspCb =
33329 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33330
33331 /*-----------------------------------------------------------------------
33332 Get message buffer
33333 ! TO DO : proper conversion into the HAL Message Request Format
33334 -----------------------------------------------------------------------*/
33335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33336 pWDICtx,
33337 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33338 sizeof(tHalBssidHotlistSetReq),
33339 &pSendBuffer, &usDataOffset,
33340 &usSendSize))||
33341 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33342 {
33343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33344 "Unable to get send buffer in %s %p %p %p", __func__,
33345 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33346 wdiEXTScanSetBSSIDHotlistRspCb);
33347 WDI_ASSERT(0);
33348 return WDI_STATUS_E_FAILURE;
33349 }
33350 pHalBssidHotlistSetReqParams =
33351 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33352
33353 pHalBssidHotlistSetReqParams->requestId =
33354 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33355
33356 pHalBssidHotlistSetReqParams->sessionId =
33357 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33358
33359 pHalBssidHotlistSetReqParams->numAp =
33360 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
33361
33362 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33363
33364 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33365 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33366 WDI_MAC_ADDR_LEN);
33367
33368 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33369 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33370
33371 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33372 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33373
33374 pHalBssidHotlistSetReqParams->ap[i].channel =
33375 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
33376
33377 }
33378
33379 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33380 "ReqID %u sessionId %u numAp %u ",
33381 pHalBssidHotlistSetReqParams->requestId,
33382 pHalBssidHotlistSetReqParams->sessionId,
33383 pHalBssidHotlistSetReqParams->numAp);
33384
33385 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
33386
33387 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33388 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33389 __func__, __LINE__, i,
33390 pHalBssidHotlistSetReqParams->ap[i].bssid,
33391 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
33392 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
33393 pHalBssidHotlistSetReqParams->ap[i].channel);
33394
33395 }
33396
33397 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33398
33399
33400 /*-------------------------------------------------------------------------
33401 Send EXTScan Stop Request to HAL
33402 -------------------------------------------------------------------------*/
33403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33404 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33405 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33406}
33407
33408/**
33409 @brief WDI_EXTScanResetBSSIDHotlistReq
33410
33411 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33412 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33413 of the Req operation received from the device
33414 pUserData: user data will be passed back with the callback
33415
33416 @return SUCCESS or FAIL
33417*/
33418WDI_Status
33419WDI_EXTScanResetBSSIDHotlistReq(
33420 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33421 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33422 void* pUserData)
33423{
33424 WDI_EventInfoType wdiEventData;
33425
33426 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33427 "%s: %d",__func__, __LINE__);
33428 /*------------------------------------------------------------------------
33429 Sanity Check
33430 ------------------------------------------------------------------------*/
33431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33432 {
33433 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33434 "WDI API call before module is initialized - Fail request");
33435
33436 return WDI_STATUS_E_NOT_ALLOWED;
33437 }
33438
33439 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33440 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33441 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33442 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33443 wdiEventData.pUserData = pUserData;
33444
33445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33446}
33447
33448/**
33449 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33450 Extended Scan reset BSSID hotlist Request to FW
33451
33452 @param pWDICtx : wdi context
33453 pEventData : indication data
33454
33455 @see
33456 @return none
33457*/
33458WDI_Status
33459WDI_ProcessEXTScanResetBSSIDHotlistReq
33460(
33461 WDI_ControlBlockType* pWDICtx,
33462 WDI_EventInfoType* pEventData
33463)
33464{
33465 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33466 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33467 wpt_uint8* pSendBuffer = NULL;
33468 wpt_uint16 usSendSize = 0;
33469 wpt_uint16 usDataOffset = 0;
33470 tpHalHotlistResetReq pHalHotlistResetReqParams;
33471
33472 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33473 "%s: %d",__func__, __LINE__);
33474
33475 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33476 ( NULL == pEventData->pCBfnc ))
33477 {
33478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33479 "%s: Invalid parameters", __func__);
33480 WDI_ASSERT(0);
33481 return WDI_STATUS_E_FAILURE;
33482 }
33483
33484 pwdiEXTScanResetBSSIDHotlistReqParams =
33485 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33486 wdiEXTScanResetBSSIDHotlistRspCb =
33487 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33488
33489 /*-----------------------------------------------------------------------
33490 Get message buffer
33491 ! TO DO : proper conversion into the HAL Message Request Format
33492 -----------------------------------------------------------------------*/
33493 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33494 pWDICtx,
33495 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33496 sizeof(tHalHotlistResetReq),
33497 &pSendBuffer, &usDataOffset,
33498 &usSendSize))||
33499 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33500 {
33501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33502 "Unable to get send buffer in %s %p %p %p", __func__,
33503 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33504 wdiEXTScanResetBSSIDHotlistRspCb);
33505 WDI_ASSERT(0);
33506 return WDI_STATUS_E_FAILURE;
33507 }
33508 pHalHotlistResetReqParams =
33509 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33510
33511 pHalHotlistResetReqParams->requestId =
33512 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33513
33514 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33515
33516 /*-------------------------------------------------------------------------
33517 Send EXTScan Stop Request to HAL
33518 -------------------------------------------------------------------------*/
33519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33520 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33521 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33522}
33523
33524/**
33525 @brief WDI_EXTScanSetSignfRSSIChangeReq
33526
33527 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
33528 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
33529 of the Req operation received from the device
33530 pUserData: user data will be passed back with the callback
33531
33532 @return SUCCESS or FAIL
33533*/
33534WDI_Status
33535WDI_EXTScanSetSignfRSSIChangeReq(
33536 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
33537 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
33538 void* pUserData)
33539{
33540 WDI_EventInfoType wdiEventData;
33541
33542 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33543 "%s: %d ",__func__, __LINE__);
33544 /*------------------------------------------------------------------------
33545 Sanity Check
33546 ------------------------------------------------------------------------*/
33547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33548 {
33549 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33550 "WDI API call before module is initialized - Fail request");
33551
33552 return WDI_STATUS_E_NOT_ALLOWED;
33553 }
33554
33555 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
33556 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
33557 wdiEventData.uEventDataSize =
33558 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
33559 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
33560 wdiEventData.pUserData = pUserData;
33561
33562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33563}
33564
33565/**
33566 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
33567 Extended Scan set Significant RSSI change Request to FW
33568
33569 @param pWDICtx : wdi context
33570 pEventData : indication data
33571
33572 @see
33573 @return none
33574*/
33575WDI_Status
33576WDI_ProcessEXTScanSetSignifRSSIChangeReq
33577(
33578 WDI_ControlBlockType* pWDICtx,
33579 WDI_EventInfoType* pEventData
33580)
33581{
33582 WDI_EXTScanSetSignfRSSIChangeReqParams*
33583 pwdiEXTScanSetSignfRSSIChangeReqParams;
33584 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33585 wpt_uint8* pSendBuffer = NULL;
33586 wpt_uint16 usSendSize = 0;
33587 wpt_uint16 usDataOffset = 0;
33588 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
33589 int i;
33590
33591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33592 "%s: %d Enter",__func__, __LINE__);
33593
33594 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33595 ( NULL == pEventData->pCBfnc ))
33596 {
33597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33598 "%s: Invalid parameters", __func__);
33599 WDI_ASSERT(0);
33600 return WDI_STATUS_E_FAILURE;
33601 }
33602
33603 pwdiEXTScanSetSignfRSSIChangeReqParams =
33604 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
33605 wdiEXTScanSetSignfRSSIChangeRspCb =
33606 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33607
33608 /*-----------------------------------------------------------------------
33609 Get message buffer
33610 ! TO DO : proper conversion into the HAL Message Request Format
33611 -----------------------------------------------------------------------*/
33612 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33613 pWDICtx,
33614 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
33615 sizeof(tHalSigRssiSetReq),
33616 &pSendBuffer, &usDataOffset,
33617 &usSendSize))||
33618 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
33619 {
33620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33621 "Unable to get send buffer in %s %p %p %p", __func__,
33622 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
33623 wdiEXTScanSetSignfRSSIChangeRspCb);
33624 WDI_ASSERT(0);
33625 return WDI_STATUS_E_FAILURE;
33626 }
33627
33628 pHalSigRssiSetReqParams =
33629 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
33630
33631 pHalSigRssiSetReqParams->requestId =
33632 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
33633 pHalSigRssiSetReqParams->sessionId =
33634 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
33635 pHalSigRssiSetReqParams->rssiSampleSize =
33636 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
33637 pHalSigRssiSetReqParams->lostApSampleSize =
33638 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
33639 pHalSigRssiSetReqParams->minBreaching =
33640 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33641 pHalSigRssiSetReqParams->numAp =
33642 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33643
33644
33645 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33646
33647 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33648 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33649 WDI_MAC_ADDR_LEN);
33650
33651 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33652 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33653
33654 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33655 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33656
33657 pHalSigRssiSetReqParams->ap[i].channel =
33658 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33659
33660 }
33661
33662
33663 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33664 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33665 " minBreaching %u numAp %u ",
33666 pHalSigRssiSetReqParams->requestId,
33667 pHalSigRssiSetReqParams->sessionId,
33668 pHalSigRssiSetReqParams->rssiSampleSize,
33669 pHalSigRssiSetReqParams->lostApSampleSize,
33670 pHalSigRssiSetReqParams->minBreaching,
33671 pHalSigRssiSetReqParams->numAp);
33672
33673 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33674
33675 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33676 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33677 i,
33678 pHalSigRssiSetReqParams->ap[i].bssid,
33679 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33680 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33681 pHalSigRssiSetReqParams->ap[i].channel);
33682
33683 }
33684
33685 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33686
33687
33688 /*-------------------------------------------------------------------------
33689 Send EXTScan Stop Request to HAL
33690 -------------------------------------------------------------------------*/
33691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33692 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33693 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33694}
33695
33696/**
33697 @brief WDI_EXTScanResetSignfRSSIChangeReq
33698
33699 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33700 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33701 of the Req operation received from the device
33702 pUserData: user data will be passed back with the callback
33703
33704 @return SUCCESS or FAIL
33705*/
33706WDI_Status
33707WDI_EXTScanResetSignfRSSIChangeReq(
33708 WDI_EXTScanResetSignfRSSIChangeReqParams*
33709 pwdiEXTScanResetSignfRSSIChangeReqParams,
33710 WDI_EXTScanResetSignfRSSIChangeRspCb
33711 wdiEXTScanResetSignfRSSIChangeRspCb,
33712 void* pUserData)
33713{
33714 WDI_EventInfoType wdiEventData;
33715
33716 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33717 "%s: %d ",__func__, __LINE__);
33718 /*------------------------------------------------------------------------
33719 Sanity Check
33720 ------------------------------------------------------------------------*/
33721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33722 {
33723 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33724 "WDI API call before module is initialized - Fail request");
33725
33726 return WDI_STATUS_E_NOT_ALLOWED;
33727 }
33728
33729 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33730 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33731 wdiEventData.uEventDataSize =
33732 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33733 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33734 wdiEventData.pUserData = pUserData;
33735
33736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33737}
33738
33739/**
33740 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33741 Extended Scana reset Significant RSSI change Request to FW
33742
33743 @param pWDICtx : wdi context
33744 pEventData : indication data
33745
33746 @see
33747 @return none
33748*/
33749WDI_Status
33750WDI_ProcessEXTScanResetSignfRSSIChangeReq
33751(
33752 WDI_ControlBlockType* pWDICtx,
33753 WDI_EventInfoType* pEventData
33754)
33755{
33756 WDI_EXTScanResetSignfRSSIChangeReqParams*
33757 pwdiEXTScanResetSignfRSSIChangeReqParams;
33758 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33759 wpt_uint8* pSendBuffer = NULL;
33760 wpt_uint16 usSendSize = 0;
33761 wpt_uint16 usDataOffset = 0;
33762 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33763
33764 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33765 "%s: %d ",__func__, __LINE__);
33766
33767 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33768 ( NULL == pEventData->pCBfnc ))
33769 {
33770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33771 "%s: Invalid parameters", __func__);
33772 WDI_ASSERT(0);
33773 return WDI_STATUS_E_FAILURE;
33774 }
33775
33776 pwdiEXTScanResetSignfRSSIChangeReqParams =
33777 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33778 wdiEXTScanResetSignfRSSIChangeRspCb =
33779 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33780
33781 /*-----------------------------------------------------------------------
33782 Get message buffer
33783 ! TO DO : proper conversion into the HAL Message Request Format
33784 -----------------------------------------------------------------------*/
33785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33786 pWDICtx,
33787 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33788 sizeof(tHalSigRssiResetReq),
33789 &pSendBuffer, &usDataOffset,
33790 &usSendSize))||
33791 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33792 {
33793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33794 "Unable to get send buffer in %s %p %p %p", __func__,
33795 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33796 wdiEXTScanResetSignfRSSIChangeRspCb);
33797 WDI_ASSERT(0);
33798 return WDI_STATUS_E_FAILURE;
33799 }
33800 pHalSigRssiResetReqParams =
33801 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33802
33803 pHalSigRssiResetReqParams->requestId =
33804 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33805
33806 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33807
33808
33809 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33810 wdiEXTScanResetSignfRSSIChangeRspCb,
33811 pEventData->pUserData,
33812 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33813}
33814
33815/**
33816 @brief Process Extended Scan Start Rsp function (called when a response
33817 is being received over the bus from HAL)
33818
33819 @param pWDICtx: pointer to the WLAN DAL context
33820 pEventData: pointer to the event information structure
33821
33822 @see
33823 @return Result of the function call
33824*/
33825WDI_Status
33826WDI_ProcessEXTScanStartRsp
33827(
33828 WDI_ControlBlockType* pWDICtx,
33829 WDI_EventInfoType* pEventData
33830)
33831{
33832 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33833
33834 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33835 "%s: %d",__func__, __LINE__);
33836 /*-------------------------------------------------------------------------
33837 Sanity check
33838 -------------------------------------------------------------------------*/
33839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33840 ( NULL == pEventData->pEventData))
33841 {
33842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33843 "%s: Invalid parameters", __func__);
33844 WDI_ASSERT(0);
33845 return WDI_STATUS_E_FAILURE;
33846 }
33847
33848 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33849 if ( NULL == wdiEXTScanStartRspCb)
33850 {
33851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33852 "%s: Callback function Invalid", __func__);
33853 WDI_ASSERT(0);
33854 return WDI_STATUS_E_FAILURE;
33855 }
33856
33857 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33858
33859 return WDI_STATUS_SUCCESS;
33860}
33861
33862
33863/**
33864 @brief Process Extended Scan Stop Rsp function (called when a response
33865 is being received over the bus from HAL)
33866
33867 @param pWDICtx: pointer to the WLAN DAL context
33868 pEventData: pointer to the event information structure
33869
33870 @see
33871 @return Result of the function call
33872*/
33873WDI_Status
33874WDI_ProcessEXTScanStopRsp
33875(
33876 WDI_ControlBlockType* pWDICtx,
33877 WDI_EventInfoType* pEventData
33878)
33879{
33880 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33881
33882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33883 "%s: %d",__func__, __LINE__);
33884
33885
33886 /*-------------------------------------------------------------------------
33887 Sanity check
33888 -------------------------------------------------------------------------*/
33889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33890 ( NULL == pEventData->pEventData))
33891 {
33892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33893 "%s: Invalid parameters", __func__);
33894 WDI_ASSERT(0);
33895 return WDI_STATUS_E_FAILURE;
33896 }
33897
33898 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33899 if ( NULL == wdiEXTScanStopRspCb)
33900 {
33901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33902 "%s: Callback function Invalid", __func__);
33903 WDI_ASSERT(0);
33904 return WDI_STATUS_E_FAILURE;
33905 }
33906
33907 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33908
33909 return WDI_STATUS_SUCCESS;
33910}
33911
33912/**
33913 @brief Process Extended Scan Get Cached Rsp function (called when a response
33914 is being received over the bus from HAL)
33915
33916 @param pWDICtx: pointer to the WLAN DAL context
33917 pEventData: pointer to the event information structure
33918
33919 @see
33920 @return Result of the function call
33921*/
33922WDI_Status
33923WDI_ProcessEXTScanGetCachedResultsRsp
33924(
33925 WDI_ControlBlockType* pWDICtx,
33926 WDI_EventInfoType* pEventData
33927)
33928{
33929 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33930
33931 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33932 "%s: %d Enter",__func__, __LINE__);
33933
33934
33935 /*-------------------------------------------------------------------------
33936 Sanity check
33937 -------------------------------------------------------------------------*/
33938 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33939 ( NULL == pEventData->pEventData))
33940 {
33941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33942 "%s: Invalid parameters", __func__);
33943 WDI_ASSERT(0);
33944 return WDI_STATUS_E_FAILURE;
33945 }
33946
33947 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33948 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33949 {
33950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33951 "%s: Callback function Invalid", __func__);
33952 WDI_ASSERT(0);
33953 return WDI_STATUS_E_FAILURE;
33954 }
33955
33956 wdiEXTScanGetCachedResultsRspCb(
33957 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33958
33959 return WDI_STATUS_SUCCESS;
33960}
33961
33962/**
33963 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33964 is being received over the bus from HAL)
33965
33966 @param pWDICtx: pointer to the WLAN DAL context
33967 pEventData: pointer to the event information structure
33968
33969 @see
33970 @return Result of the function call
33971*/
33972WDI_Status
33973WDI_ProcessEXTScanGetCapabilitiesRsp
33974(
33975 WDI_ControlBlockType* pWDICtx,
33976 WDI_EventInfoType* pEventData
33977)
33978{
33979 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33980
33981 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33982 "%s: %d ",__func__, __LINE__);
33983
33984
33985 /*-------------------------------------------------------------------------
33986 Sanity check
33987 -------------------------------------------------------------------------*/
33988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33989 ( NULL == pEventData->pEventData))
33990 {
33991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33992 "%s: Invalid parameters", __func__);
33993 WDI_ASSERT(0);
33994 return WDI_STATUS_E_FAILURE;
33995 }
33996
33997 wdiEXTScanGetCapabilitiesRspCb =
33998 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33999 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34000 {
34001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34002 "%s: Callback function Invalid", __func__);
34003 WDI_ASSERT(0);
34004 return WDI_STATUS_E_FAILURE;
34005 }
34006
34007 wdiEXTScanGetCapabilitiesRspCb(
34008 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34009
34010 return WDI_STATUS_SUCCESS;
34011}
34012
34013/**
34014 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34015 response is being received over the bus from HAL)
34016
34017 @param pWDICtx: pointer to the WLAN DAL context
34018 pEventData: pointer to the event information structure
34019
34020 @see
34021 @return Result of the function call
34022*/
34023WDI_Status
34024WDI_ProcessEXTScanSetHotlistBSSIDRsp
34025(
34026 WDI_ControlBlockType* pWDICtx,
34027 WDI_EventInfoType* pEventData
34028)
34029{
34030 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34031
34032 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34033 "%s: %d ",__func__, __LINE__);
34034
34035
34036 /*-------------------------------------------------------------------------
34037 Sanity check
34038 -------------------------------------------------------------------------*/
34039 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34040 ( NULL == pEventData->pEventData))
34041 {
34042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34043 "%s: Invalid parameters", __func__);
34044 WDI_ASSERT(0);
34045 return WDI_STATUS_E_FAILURE;
34046 }
34047
34048 wdiEXTScanSetBSSIDHotlistRspCb =
34049 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34050 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34051 {
34052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34053 "%s: Callback function Invalid", __func__);
34054 WDI_ASSERT(0);
34055 return WDI_STATUS_E_FAILURE;
34056 }
34057
34058 wdiEXTScanSetBSSIDHotlistRspCb(
34059 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34060
34061 return WDI_STATUS_SUCCESS;
34062}
34063
34064/**
34065 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34066 when a response is being received over the bus from HAL)
34067
34068 @param pWDICtx: pointer to the WLAN DAL context
34069 pEventData: pointer to the event information structure
34070
34071 @see
34072 @return Result of the function call
34073*/
34074WDI_Status
34075WDI_ProcessEXTScanResetHotlistBSSIDRsp
34076(
34077 WDI_ControlBlockType* pWDICtx,
34078 WDI_EventInfoType* pEventData
34079)
34080{
34081 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34082
34083 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34084 "%s: %d ",__func__, __LINE__);
34085
34086
34087 /*-------------------------------------------------------------------------
34088 Sanity check
34089 -------------------------------------------------------------------------*/
34090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34091 ( NULL == pEventData->pEventData))
34092 {
34093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34094 "%s: Invalid parameters", __func__);
34095 WDI_ASSERT(0);
34096 return WDI_STATUS_E_FAILURE;
34097 }
34098
34099 wdiEXTScanResetBSSIDHotlistRspCb =
34100 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34101 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34102 {
34103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34104 "%s: Callback function Invalid", __func__);
34105 WDI_ASSERT(0);
34106 return WDI_STATUS_E_FAILURE;
34107 }
34108
34109 wdiEXTScanResetBSSIDHotlistRspCb(
34110 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34111
34112 return WDI_STATUS_SUCCESS;
34113}
34114
34115/**
34116 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
34117 when a response is being received over the bus from HAL)
34118
34119 @param pWDICtx: pointer to the WLAN DAL context
34120 pEventData: pointer to the event information structure
34121
34122 @see
34123 @return Result of the function call
34124*/
34125WDI_Status
34126WDI_ProcessEXTScanSetSignfRSSIChangeRsp
34127(
34128 WDI_ControlBlockType* pWDICtx,
34129 WDI_EventInfoType* pEventData
34130)
34131{
34132 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
34133
34134 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34135 "%s: %d",__func__, __LINE__);
34136
34137
34138 /*-------------------------------------------------------------------------
34139 Sanity check
34140 -------------------------------------------------------------------------*/
34141 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34142 ( NULL == pEventData->pEventData))
34143 {
34144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34145 "%s: Invalid parameters", __func__);
34146 WDI_ASSERT(0);
34147 return WDI_STATUS_E_FAILURE;
34148 }
34149
34150 wdiEXTScanSetSignfRSSIChangeRspCb =
34151 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34152 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
34153 {
34154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34155 "%s: Callback function Invalid", __func__);
34156 WDI_ASSERT(0);
34157 return WDI_STATUS_E_FAILURE;
34158 }
34159
34160 wdiEXTScanSetSignfRSSIChangeRspCb(
34161 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34162
34163 return WDI_STATUS_SUCCESS;
34164}
34165
34166/**
34167 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
34168 (called when a response is being received over the bus from HAL)
34169
34170 @param pWDICtx: pointer to the WLAN DAL context
34171 pEventData: pointer to the event information structure
34172
34173 @see
34174 @return Result of the function call
34175*/
34176WDI_Status
34177WDI_ProcessEXTScanResetSignfRSSIChangeRsp
34178(
34179 WDI_ControlBlockType* pWDICtx,
34180 WDI_EventInfoType* pEventData
34181)
34182{
34183 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
34184
34185 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34186 "%s: %d Enter",__func__, __LINE__);
34187
34188
34189 /*-------------------------------------------------------------------------
34190 Sanity check
34191 -------------------------------------------------------------------------*/
34192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34193 ( NULL == pEventData->pEventData))
34194 {
34195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34196 "%s: Invalid parameters", __func__);
34197 WDI_ASSERT(0);
34198 return WDI_STATUS_E_FAILURE;
34199 }
34200
34201 wdiEXTScanResetSignfRSSIChangeRspCb =
34202 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
34203 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
34204 {
34205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34206 "%s: Callback function Invalid", __func__);
34207 WDI_ASSERT(0);
34208 return WDI_STATUS_E_FAILURE;
34209 }
34210
34211 wdiEXTScanResetSignfRSSIChangeRspCb(
34212 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34213
34214 return WDI_STATUS_SUCCESS;
34215}
34216#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034217
34218/**
34219 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34220
34221 @param None
34222
34223 @see
34224
34225 @return Status of the request
34226*/
34227WDI_Status
34228WDI_SetSpoofMacAddrReq
34229(
34230 WDI_SpoofMacAddrInfoType* pWdiReq,
34231 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34232 void* pUserData)
34233{
34234 WDI_EventInfoType wdiEventData;
34235
34236 /*-------------------------------------------------------------------------
34237 Sanity Check
34238 ------------------------------------------------------------------------*/
34239 if (eWLAN_PAL_FALSE == gWDIInitialized)
34240 {
34241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34242 "WDI API call before module is initialized - Fail request!");
34243
34244 return WDI_STATUS_E_NOT_ALLOWED;
34245 }
34246
34247 /*-------------------------------------------------------------------------
34248 Fill in Event data and post to the Main FSM
34249 ------------------------------------------------------------------------*/
34250 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34251 wdiEventData.pEventData = pWdiReq;
34252 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34253 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34254 wdiEventData.pUserData = pUserData;
34255
34256 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34257}
34258
34259/**
34260 @brief Process SpoofMacAddr Request
34261
34262 @param pWDICtx: pointer to the WLAN DAL context
34263 pEventData: pointer to the event information structure
34264
34265 @see
34266 @return Result of the function call
34267*/
34268WDI_Status
34269WDI_ProcessSpoofMacAddrReq
34270(
34271 WDI_ControlBlockType* pWDICtx,
34272 WDI_EventInfoType* pEventData
34273)
34274{
34275 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34276 wpt_uint8* pSendBuffer = NULL;
34277 wpt_uint16 usDataOffset = 0;
34278 wpt_uint16 usSendSize = 0;
34279 WDI_Status wdiStatus;
34280 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34281 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34282
34283
34284 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34285 "%s: %d Enter",__func__, __LINE__);
34286
34287 /*-------------------------------------------------------------------------
34288 Sanity check
34289 -------------------------------------------------------------------------*/
34290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34291 ( NULL == pEventData->pEventData))
34292 {
34293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34294 "%s: Invalid parameters", __func__);
34295 WDI_ASSERT(0);
34296 return WDI_STATUS_E_FAILURE;
34297 }
34298 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34299
34300 /*-----------------------------------------------------------------------
34301 Get message buffer
34302 -----------------------------------------------------------------------*/
34303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34304 WDI_SPOOF_MAC_ADDR_REQ,
34305 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34306 &pSendBuffer, &usDataOffset, &usSendSize))||
34307 (usSendSize < (usDataOffset +
34308 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34309 {
34310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34311 "Unable to get send buffer in Process Spoof Mac Addr Req");
34312 WDI_ASSERT(0);
34313 return WDI_STATUS_E_FAILURE;
34314 }
34315
34316 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34317 wdiSpoofMacAddr->macAddr,
34318 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34319
34320 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34321
34322 wpalMemoryCopy( pSendBuffer+usDataOffset,
34323 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34324 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34325
34326 /*-------------------------------------------------------------------------
34327 Send Suspend Request to HAL
34328 -------------------------------------------------------------------------*/
34329 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34330 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34331
34332 return wdiStatus;
34333}
34334
34335/**
34336 @brief Process Spoof Mac Address Rsp function
34337 (called when a response is being received over the bus from HAL)
34338
34339 @param pWDICtx: pointer to the WLAN DAL context
34340 pEventData: pointer to the event information structure
34341
34342 @see
34343 @return Result of the function call
34344*/
34345WDI_Status
34346WDI_ProcessSpoofMacAddrRsp
34347(
34348 WDI_ControlBlockType* pWDICtx,
34349 WDI_EventInfoType* pEventData
34350)
34351{
34352 tMacSpoofedScanResp halRsp;
34353 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34354 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34355
34356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34357 "%s: %d Enter",__func__, __LINE__);
34358
34359 /*-------------------------------------------------------------------------
34360 Sanity check
34361 -------------------------------------------------------------------------*/
34362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34363 ( NULL == pEventData->pEventData))
34364 {
34365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34366 "%s: Invalid parameters", __func__);
34367 WDI_ASSERT(0);
34368 return WDI_STATUS_E_FAILURE;
34369 }
34370 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34371
34372 /*-------------------------------------------------------------------------
34373 Extract response and send it to UMAC
34374 -------------------------------------------------------------------------*/
34375 wpalMemoryCopy( &halRsp,
34376 pEventData->pEventData, sizeof(halRsp));
34377
34378 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34379
34380 /*Notify UMAC*/
34381 wdiSpoofMacAddrRspCb(
34382 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34383
34384 return WDI_STATUS_SUCCESS;
34385}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034386
34387/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034388 @brief Process Get Frame Log Rsp function
34389 (called when a response is being received over the bus from HAL)
34390
34391 @param pWDICtx: pointer to the WLAN DAL context
34392 pEventData: pointer to the event information structure
34393
34394 @see
34395 @return Result of the function call
34396*/
34397WDI_Status
34398WDI_ProcessGetFrameLogRsp
34399(
34400 WDI_ControlBlockType* pWDICtx,
34401 WDI_EventInfoType* pEventData
34402)
34403{
34404 tGetFrameLogResp halRsp;
34405 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34406 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34407
34408 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34409 "%s: %d Enter",__func__, __LINE__);
34410
34411 /*-------------------------------------------------------------------------
34412 Sanity check
34413 -------------------------------------------------------------------------*/
34414 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34415 ( NULL == pEventData->pEventData))
34416 {
34417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34418 "%s: Invalid parameters", __func__);
34419 WDI_ASSERT(0);
34420 return WDI_STATUS_E_FAILURE;
34421 }
34422
34423 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34424
34425 /*-------------------------------------------------------------------------
34426 Extract response and send it to UMAC
34427 -------------------------------------------------------------------------*/
34428 wpalMemoryCopy( &halRsp,
34429 pEventData->pEventData, sizeof(halRsp));
34430
34431 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34432
34433 /*Notify UMAC*/
34434 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34435
34436 return WDI_STATUS_SUCCESS;
34437}
34438/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034439 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053034440
34441 @param pWDICtx: pointer to the WLAN DAL context
34442 pEventData: pointer to the event information structure
34443
34444 @see
34445 @return Result of the function call
34446*/
34447WDI_Status
34448WDI_ProcessGetFrameLogReq
34449(
34450 WDI_ControlBlockType* pWDICtx,
34451 WDI_EventInfoType* pEventData
34452)
34453{
34454 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
34455 wpt_uint8* pSendBuffer = NULL;
34456 wpt_uint16 usDataOffset = 0;
34457 wpt_uint16 usSendSize = 0;
34458 WDI_Status wdiStatus;
34459 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034460 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053034461
34462
34463 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34464 "%s: %d Enter",__func__, __LINE__);
34465
34466 /*-------------------------------------------------------------------------
34467 Sanity check
34468 ------------------------------------------------------------------------*/
34469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34470 ( NULL == pEventData->pEventData))
34471 {
34472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34473 "%s: Invalid parameters", __func__);
34474 WDI_ASSERT(0);
34475 return WDI_STATUS_E_FAILURE;
34476 }
34477
34478 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
34479
34480 /*-----------------------------------------------------------------------
34481 Get message buffer
34482 -----------------------------------------------------------------------*/
34483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34484 WDI_GET_FRAME_LOG_REQ,
34485 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
34486 &pSendBuffer, &usDataOffset, &usSendSize))||
34487 (usSendSize < (usDataOffset +
34488 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
34489 {
34490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34491 "Unable to get send buffer in GetFrameLog Req");
34492 WDI_ASSERT(0);
34493 return WDI_STATUS_E_FAILURE;
34494 }
34495
34496 halGetFrameLogReq.tGetFrameLogReqParams.flags =
34497 wdiGetFrameLogReq->flags;
34498
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034499 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053034500
34501 wpalMemoryCopy( pSendBuffer+usDataOffset,
34502 &halGetFrameLogReq.tGetFrameLogReqParams,
34503 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
34504
34505 /*-------------------------------------------------------------------------
34506 Send Suspend Request to HAL
34507 ------------------------------------------------------------------------*/
34508 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34509 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
34510
34511 return wdiStatus;
34512}
34513/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034514 @brief Process MgmtFrame Logging Init Rsp function
34515 (called when a response is being received over the bus from HAL)
34516
34517 @param pWDICtx: pointer to the WLAN DAL context
34518 pEventData: pointer to the event information structure
34519
34520 @see
34521 @return Result of the function call
34522*/
34523WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034524WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034525(
34526 WDI_ControlBlockType* pWDICtx,
34527 WDI_EventInfoType* pEventData
34528)
34529{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034530 tFWLoggingInitResp halRsp;
34531 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
34532 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034533
34534 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34535 "%s: %d Enter",__func__, __LINE__);
34536
34537 /*-------------------------------------------------------------------------
34538 Sanity check
34539 -------------------------------------------------------------------------*/
34540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34541 ( NULL == pEventData->pEventData))
34542 {
34543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34544 "%s: Invalid parameters", __func__);
34545 WDI_ASSERT(0);
34546 return WDI_STATUS_E_FAILURE;
34547 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034548 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034549
34550 /*-------------------------------------------------------------------------
34551 Extract response and send it to UMAC
34552 -------------------------------------------------------------------------*/
34553 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34554
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034555 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034556
34557 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034558 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034559
34560 return WDI_STATUS_SUCCESS;
34561}
34562
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034563WDI_Status
34564WDI_ProcessFWLoggingDXEdoneInd
34565(
34566 WDI_ControlBlockType* pWDICtx,
34567 WDI_EventInfoType* pEventData
34568)
34569{
34570 wpt_uint8* pSendBuffer = NULL;
34571 wpt_uint16 usDataOffset = 0;
34572 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034573 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053034574 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034575 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34576
34577
34578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34579
34580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34581 "%s", __func__);
34582
34583 /*-------------------------------------------------------------------------
34584 Sanity check
34585 -------------------------------------------------------------------------*/
Mihir Shete5affadc2015-05-29 20:54:57 +053034586 if (NULL == pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034587 {
34588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34589 "%s: Invalid parameters", __func__);
34590 WDI_ASSERT(0);
34591 return WDI_STATUS_E_FAILURE;
34592 }
Mihir Shete5affadc2015-05-29 20:54:57 +053034593 pLoggingSession = (WDI_DS_LoggingSessionType *)
34594 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
34595 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034596 /*-----------------------------------------------------------------------
34597 Get message buffer
34598 -----------------------------------------------------------------------*/
34599
34600 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34601 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053034602 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034603 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053034604 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034605 {
34606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34607 "Unable to get send buffer in RTS CTS ind %p ",
34608 pEventData);
34609 WDI_ASSERT(0);
34610 return WDI_STATUS_E_FAILURE;
34611 }
34612 FWLoggingDxeDoneIndParams =
34613 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
34614
34615 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053034616 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034617 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053034618
34619 FWLoggingDxeDoneIndParams->status = eHAL_STATUS_SUCCESS;
34620
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034621 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053034622 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034623 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
34624
34625 pWDICtx->pReqStatusUserData = NULL;
34626 pWDICtx->pfncRspCB = NULL;
34627 /*-------------------------------------------------------------------------
34628 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
34629 -------------------------------------------------------------------------*/
34630 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34631 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34632}
34633
Sachin Ahuja715aafc2015-07-21 23:35:10 +053034634
34635/**
34636 @brief Process Fatal Event Logs Rsp function
34637 (called when a response is being received over the bus from HAL)
34638
34639 @param pWDICtx: pointer to the WLAN DAL context
34640 pEventData: pointer to the event information structure
34641
34642 @see
34643 @return Result of the function call
34644*/
34645WDI_Status
34646WDI_ProcessFatalEventLogsRsp
34647(
34648 WDI_ControlBlockType* pWDICtx,
34649 WDI_EventInfoType* pEventData
34650)
34651{
34652 tHalFatalEventLoggingRspParams halRsp;
34653 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34654 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
34655
34656 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34657 "%s: %d Enter",__func__, __LINE__);
34658
34659 /*-------------------------------------------------------------------------
34660 Sanity check
34661 -------------------------------------------------------------------------*/
34662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34663 ( NULL == pEventData->pEventData))
34664 {
34665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34666 "%s: Invalid parameters", __func__);
34667 WDI_ASSERT(0);
34668 return WDI_STATUS_E_FAILURE;
34669 }
34670 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
34671
34672 /*-------------------------------------------------------------------------
34673 Extract response and send it to UMAC
34674 -------------------------------------------------------------------------*/
34675 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
34676
34677 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34678
34679 /*Notify UMAC*/
34680 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
34681 pWDICtx->pRspCBUserData);
34682
34683 return WDI_STATUS_SUCCESS;
34684}
34685
34686/**
34687 @brief Process FatalEventLogs Request
34688
34689 @param pWDICtx: pointer to the WLAN DAL context
34690 pEventData: pointer to the event information structure
34691
34692 @see
34693 @return Result of the function call
34694*/
34695
34696WDI_Status
34697WDI_ProcessFatalEventLogsReq
34698
34699(
34700 WDI_ControlBlockType* pWDICtx,
34701 WDI_EventInfoType* pEventData
34702)
34703{
34704 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
34705 wpt_uint8* pSendBuffer = NULL;
34706 wpt_uint16 usDataOffset = 0;
34707 wpt_uint16 usSendSize = 0;
34708 WDI_Status wdiStatus;
34709 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
34710 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
34711
34712
34713 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34714 "%s: %d Enter",__func__, __LINE__);
34715
34716 /*-------------------------------------------------------------------------
34717 Sanity check
34718 ------------------------------------------------------------------------*/
34719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34720 ( NULL == pEventData->pEventData))
34721 {
34722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34723 "%s: Invalid parameters", __func__);
34724 WDI_ASSERT(0);
34725 return WDI_STATUS_E_FAILURE;
34726 }
34727 wdiFatalEventLogsReq =
34728 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
34729
34730 /*-----------------------------------------------------------------------
34731 Get message buffer
34732 -----------------------------------------------------------------------*/
34733 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34734 WDI_FATAL_EVENT_LOGGING_REQ,
34735 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
34736 &pSendBuffer, &usDataOffset, &usSendSize))||
34737 (usSendSize < (usDataOffset +
34738 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
34739 {
34740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34741 "Unable to get send buffer in Fatal Event Req");
34742 WDI_ASSERT(0);
34743 return WDI_STATUS_E_FAILURE;
34744 }
34745 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
34746 wdiFatalEventLogsReq->reason_code;
34747
34748 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
34749
34750 wpalMemoryCopy( pSendBuffer+usDataOffset,
34751 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
34752 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
34753
34754 /*-------------------------------------------------------------------------
34755 Send Mgmt Logging Init Request to HAL
34756 ------------------------------------------------------------------------*/
34757 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34758 wdiFatalEventLogsRspCb, pEventData->pUserData,
34759 WDI_FATAL_EVENT_LOGGING_RSP);
34760
34761 return wdiStatus;
34762
34763
34764}
34765
34766
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034767/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034768 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034769
34770 @param pWDICtx: pointer to the WLAN DAL context
34771 pEventData: pointer to the event information structure
34772
34773 @see
34774 @return Result of the function call
34775*/
34776WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034777WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034778(
34779 WDI_ControlBlockType* pWDICtx,
34780 WDI_EventInfoType* pEventData
34781)
34782{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034783 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034784 wpt_uint8* pSendBuffer = NULL;
34785 wpt_uint16 usDataOffset = 0;
34786 wpt_uint16 usSendSize = 0;
34787 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034788 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
34789 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034790
34791
34792 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34793 "%s: %d Enter",__func__, __LINE__);
34794
34795 /*-------------------------------------------------------------------------
34796 Sanity check
34797 ------------------------------------------------------------------------*/
34798 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34799 ( NULL == pEventData->pEventData))
34800 {
34801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34802 "%s: Invalid parameters", __func__);
34803 WDI_ASSERT(0);
34804 return WDI_STATUS_E_FAILURE;
34805 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034806 wdiFWLoggingInitReq =
34807 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034808
34809 /*-----------------------------------------------------------------------
34810 Get message buffer
34811 -----------------------------------------------------------------------*/
34812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034813 WDI_FW_LOGGING_INIT_REQ,
34814 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034815 &pSendBuffer, &usDataOffset, &usSendSize))||
34816 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034817 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034818 {
34819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34820 "Unable to get send buffer in Process Mgmt Logging Init Req");
34821 WDI_ASSERT(0);
34822 return WDI_STATUS_E_FAILURE;
34823 }
34824
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034825 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
34826 wdiFWLoggingInitReq->enableFlag;
34827 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
34828 wdiFWLoggingInitReq->frameSize;
34829 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
34830 wdiFWLoggingInitReq->frameType;
34831 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
34832 wdiFWLoggingInitReq->bufferMode;
34833 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
34834 wdiFWLoggingInitReq->continuousFrameLogging;
34835 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
34836 wdiFWLoggingInitReq->minLogBufferSize;
34837 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
34838 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053034839 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
34840 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
34841 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
34842 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034843
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034844 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034845
34846 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034847 &halFWLoggingInitReq.tFWLoggingInitReqParams,
34848 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034849
34850 /*-------------------------------------------------------------------------
34851 Send Mgmt Logging Init Request to HAL
34852 ------------------------------------------------------------------------*/
34853 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053034854 wdiFWLoggingInitRspCb, pEventData->pUserData,
34855 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053034856
34857 return wdiStatus;
34858}
34859
34860/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034861 @brief WDI_EncryptMsgReq
34862
34863 @param pwdiEncryptMsgParams: Req parameter for the FW
34864 wdiEncryptMsgCbRsp: callback for passing back the response
34865 of the Req operation received from the device
34866 pUserData: user data will be passed back with the callback
34867
34868 @return SUCCESS or FAIL
34869*/
34870WDI_Status
34871WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
34872 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
34873 void* pUserData)
34874{
34875 WDI_EventInfoType wdiEventData;
34876
34877 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34878 "%s: %d Enter" ,__func__, __LINE__);
34879 /*------------------------------------------------------------------------
34880 Sanity Check
34881 ------------------------------------------------------------------------*/
34882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34883 {
34884 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34885 "WDI API call before module is initialized - Fail request");
34886
34887 return WDI_STATUS_E_NOT_ALLOWED;
34888 }
34889
34890 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
34891 wdiEventData.pEventData = pwdiEncryptMsgParams;
34892 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
34893 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
34894 wdiEventData.pUserData = pUserData;
34895
34896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34897}
34898
34899/*
34900 * FUNCTION: WDI_ProcessEncryptMsgReq
34901 * Request to WDI to encrypt the given message.
34902 *
34903 * @param pWDICtx: pointer to the WLAN DAL context
34904 * pEventData: pointer to the event information structure
34905 *
34906 * @return Result of the function call
34907 */
34908
34909WDI_Status
34910WDI_ProcessEncryptMsgReq
34911(
34912 WDI_ControlBlockType* pWDICtx,
34913 WDI_EventInfoType* pEventData
34914)
34915{
34916 wpt_uint8* pSendBuffer = NULL;
34917 wpt_uint16 usDataOffset = 0;
34918 wpt_uint16 usSendSize = 0;
34919 WDI_EncryptMsgRspCb* wdiEncMsgCb;
34920 tSetEncryptedDataParams *pHalEncryptDataReq;
34921 wpt_pkt80211 *pkt = NULL;
34922
34923 /*-------------------------------------------------------------------------
34924 Sanity check
34925 -------------------------------------------------------------------------*/
34926 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
34927 ( NULL == pEventData->pCBfnc ) )
34928 {
34929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34930 "%s: Invalid parameters", __func__);
34931 WDI_ASSERT(0);
34932 return WDI_STATUS_E_FAILURE;
34933 }
34934
34935 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
34936
34937 /*-----------------------------------------------------------------------
34938 Get message buffer
34939 -----------------------------------------------------------------------*/
34940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34941 pWDICtx, WDI_ENCRYPT_MSG_REQ,
34942 sizeof(tSetEncryptedDataReqMsg),
34943 &pSendBuffer, &usDataOffset, &usSendSize)) ||
34944 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
34945 {
34946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34947 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
34948 pEventData);
34949 WDI_ASSERT(0);
34950 return WDI_STATUS_E_FAILURE;
34951 }
34952
34953 pWDICtx->wdiReqStatusCB = NULL;
34954 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34955 pkt = (wpt_pkt80211 *)pEventData->pEventData;
34956
34957 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
34958 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
34959
34960 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
34961
34962 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
34963 pkt->encParams.keyParams.key[0].keyId;
34964
34965 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
34966 &pkt->encParams.keyParams.key[0].key[0], 16);
34967
34968 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
34969
34970 pHalEncryptDataReq->data.length = pkt->data.length;
34971 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
34972
34973 /*-------------------------------------------------------------------------
34974 Send Get STA Request to HAL
34975 -------------------------------------------------------------------------*/
34976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
34977 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
34978}
34979
34980/*
34981 * FUNCTION: WDI_ProcessEncryptMsgRsp
34982 * Receives the encrypted message from the firmware
34983 * @param pWDICtx: pointer to the WLAN DAL context
34984 * pEventData: pointer to the event information structure
34985 *
34986 * @return Result of the function call
34987 */
34988WDI_Status
34989WDI_ProcessEncryptMsgRsp
34990(
34991 WDI_ControlBlockType* pWDICtx,
34992 WDI_EventInfoType* pEventData
34993)
34994{
34995 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
34996 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
34997
34998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34999 "In %s",__func__);
35000
35001 /*-------------------------------------------------------------------------
35002 Sanity check
35003 -------------------------------------------------------------------------*/
35004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35005 ( NULL == pEventData->pEventData))
35006 {
35007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35008 "%s: Invalid parameters", __func__);
35009 WDI_ASSERT(0);
35010 return WDI_STATUS_E_FAILURE;
35011 }
35012
35013 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35014
35015 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35016
35017 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35018 pEventData->pEventData,
35019 pWDICtx->pRspCBUserData);
35020 return WDI_STATUS_SUCCESS;
35021}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035022
35023WDI_Status
35024WDI_NanRequest
35025(
35026 WDI_NanRequestType *pwdiNanRequest,
35027 void *usrData
35028)
35029{
35030 WDI_EventInfoType wdiEventData;
35031
35032 /*------------------------------------------------------------------------
35033 Sanity Check
35034 ------------------------------------------------------------------------*/
35035 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35036 {
35037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35038 "WDI API call before module is initialized - Fail request");
35039
35040 return WDI_STATUS_E_NOT_ALLOWED;
35041 }
35042
35043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35044 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35045 pwdiNanRequest->request_data_len);
35046
35047 /*------------------------------------------------------------------------
35048 Fill in Event data and post to the Main FSM
35049 ------------------------------------------------------------------------*/
35050 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35051 wdiEventData.pEventData = pwdiNanRequest;
35052 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35053 + pwdiNanRequest->request_data_len;
35054 wdiEventData.pUserData = usrData;
35055 wdiEventData.pCBfnc = NULL;
35056
35057
35058 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35059}
35060
35061WDI_Status
35062WDI_ProcessNanRequest
35063(
35064 WDI_ControlBlockType* pWDICtx,
35065 WDI_EventInfoType* pEventData
35066)
35067{
35068 WDI_NanRequestType *pwdiNanRequest = NULL;
35069 wpt_uint8* pSendBuffer = NULL;
35070 wpt_uint16 usDataOffset = 0;
35071 wpt_uint16 usSendSize = 0;
35072
35073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35074 "WDI_ProcessNanRequest");
35075
35076 /*-------------------------------------------------------------------------
35077 Sanity check
35078 -------------------------------------------------------------------------*/
35079 if (( NULL == pEventData ) ||
35080 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35081 {
35082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35083 "%s: Invalid parameters", __FUNCTION__);
35084 WDI_ASSERT(0);
35085 return WDI_STATUS_E_FAILURE;
35086 }
35087
35088 /*-----------------------------------------------------------------------
35089 Get message buffer
35090 -----------------------------------------------------------------------*/
35091 if (( WDI_STATUS_SUCCESS
35092 != WDI_GetMessageBuffer( pWDICtx,
35093 WDI_NAN_REQUEST,
35094 pwdiNanRequest->request_data_len,
35095 &pSendBuffer,
35096 &usDataOffset,
35097 &usSendSize))||
35098 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35099 {
35100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35101 "Unable to get send buffer in NAN request %p %p",
35102 pEventData, pwdiNanRequest);
35103 WDI_ASSERT(0);
35104 return WDI_STATUS_E_FAILURE;
35105 }
35106
35107 wpalMemoryCopy( pSendBuffer+usDataOffset,
35108 pwdiNanRequest->request_data,
35109 pwdiNanRequest->request_data_len);
35110
35111 pWDICtx->pReqStatusUserData = NULL;
35112 pWDICtx->pfncRspCB = NULL;
35113 vos_mem_free( pEventData->pUserData);
35114
35115 /*-------------------------------------------------------------------------
35116 Send NAN Request to HAL
35117 -------------------------------------------------------------------------*/
35118 return WDI_SendMsg( pWDICtx,
35119 pSendBuffer,
35120 usSendSize,
35121 NULL,
35122 NULL,
35123 WDI_NAN_RESPONSE);
35124}
35125
35126/**
35127 @brief Process NAN Response function (called when a
35128 response is being received over the bus from HAL)
35129
35130 @param pWDICtx: pointer to the WLAN DAL context
35131 pEventData: pointer to the event information structure
35132
35133 @see
35134 @return Result of the function call
35135*/
35136WDI_Status
35137WDI_ProcessNanResponse
35138(
35139 WDI_ControlBlockType* pWDICtx,
35140 WDI_EventInfoType* pEventData
35141)
35142{
35143 WDI_Status wdiStatus;
35144 eHalStatus halStatus;
35145
35146 /*-------------------------------------------------------------------------
35147 Sanity check
35148 -------------------------------------------------------------------------*/
35149 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35150 ( NULL == pEventData->pEventData))
35151 {
35152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35153 "%s: Invalid parameters", __func__);
35154 WDI_ASSERT(0);
35155 return WDI_STATUS_E_FAILURE;
35156 }
35157
35158 halStatus = *((eHalStatus*)pEventData->pEventData);
35159 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35160
35161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35162 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35163
35164 return WDI_STATUS_SUCCESS;
35165}/*WDI_ProcessNanResponse*/
35166
35167
35168/**
35169 @brief Process NAN Event function (called when
35170 an indication is being received over the
35171 bus from HAL)
35172
35173 @param pWDICtx: pointer to the WLAN DAL context
35174 pEventData: pointer to the event information structure
35175
35176 @see
35177 @return Result of the function call
35178*/
35179WDI_Status
35180WDI_ProcessNanEvent
35181(
35182 WDI_ControlBlockType* pWDICtx,
35183 WDI_EventInfoType* pEventData
35184)
35185{
35186 WDI_LowLevelIndType wdiInd;
35187
35188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35189
35190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35191 ( NULL == pEventData->pEventData ))
35192 {
35193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35194 "%s: Invalid parameters", __func__);
35195 WDI_ASSERT( 0 );
35196 return WDI_STATUS_E_FAILURE;
35197 }
35198
35199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35200 "%s: Received NAN event", __func__);
35201 /*-------------------------------------------------------------------------
35202 Extract indication and send it to UMAC
35203 -------------------------------------------------------------------------*/
35204 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
35205 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
35206 pEventData->uEventDataSize;
35207 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
35208 pEventData->pEventData;
35209
35210 /*Notify UMAC*/
35211 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35212
35213 return WDI_STATUS_SUCCESS;
35214}/*WDI_ProcessNanEvent*/
35215
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053035216
35217
35218WDI_Status
35219WDI_Process_LostLinkParamInd
35220(
35221 WDI_ControlBlockType* pWDICtx,
35222 WDI_EventInfoType* pEventData
35223)
35224{
35225 WDI_LowLevelIndType wdiInd;
35226 tHalLostLinkParametersIndParams halLostLinkParamInd;
35227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35228
35229 /*-------------------------------------------------------------------------
35230 Sanity check
35231 -------------------------------------------------------------------------*/
35232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35233 ( NULL == pEventData->pEventData))
35234 {
35235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35236 "%s: Invalid parameters", __func__);
35237 WDI_ASSERT(0);
35238 return WDI_STATUS_E_FAILURE;
35239 }
35240
35241 /*-------------------------------------------------------------------------
35242 Extract indication and send it to UMAC
35243 -------------------------------------------------------------------------*/
35244 wpalMemoryCopy( (void *)&halLostLinkParamInd,
35245 pEventData->pEventData,
35246 sizeof(tHalLostLinkParametersIndParams));
35247
35248
35249 /*Fill in the indication parameters*/
35250 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
35251 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
35252 (void *)&halLostLinkParamInd,
35253 sizeof(WDI_LostLinkParamsIndType));
35254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35255 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
35256 "linkFlTx : %d,lastDataRate : %d", __func__,
35257 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
35258 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
35259 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
35260 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
35261 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
35262 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
35263 /*Notify UMAC*/
35264 if (pWDICtx->wdiLowLevelIndCB)
35265 {
35266 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
35267 }
35268
35269 return WDI_STATUS_SUCCESS;
35270
35271}
35272
Abhishek Singh41988ba2015-05-25 19:42:29 +053035273WDI_Status
35274WDI_ProcessSetRtsCtsHtvhtInd
35275(
35276 WDI_ControlBlockType* pWDICtx,
35277 WDI_EventInfoType* pEventData
35278)
35279{
35280 wpt_uint8* pSendBuffer = NULL;
35281 wpt_uint16 usDataOffset = 0;
35282 wpt_uint16 usSendSize = 0;
35283 wpt_uint32 *rtsCtsVal;
35284 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
35285 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35286
35287
35288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35289
35290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35291 "%s", __func__);
35292
35293 /*-------------------------------------------------------------------------
35294 Sanity check
35295 -------------------------------------------------------------------------*/
35296 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
35297 {
35298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35299 "%s: Invalid parameters", __func__);
35300 WDI_ASSERT(0);
35301 return WDI_STATUS_E_FAILURE;
35302 }
35303 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
35304 /*-----------------------------------------------------------------------
35305 Get message buffer
35306 -----------------------------------------------------------------------*/
35307
35308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35309 WDI_SET_RTS_CTS_HTVHT_IND,
35310 sizeof(tHalRtsCtsHtvhtIndParams),
35311 &pSendBuffer, &usDataOffset, &usSendSize))||
35312 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
35313 {
35314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35315 "Unable to get send buffer in RTS CTS ind %p ",
35316 pEventData);
35317 WDI_ASSERT(0);
35318 return WDI_STATUS_E_FAILURE;
35319 }
35320 rtsCtsHtvhtIndParams =
35321 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
35322 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
35323
35324 pWDICtx->pReqStatusUserData = NULL;
35325 pWDICtx->pfncRspCB = NULL;
35326 /*-------------------------------------------------------------------------
35327 Send SET_RTS_CTS_HTVHT Indication to HAL
35328 -------------------------------------------------------------------------*/
35329 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35330 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35331}
35332
35333WDI_Status
35334WDI_SetRtsCtsHTVhtInd
35335(
35336 wpt_uint32 rtsCtsVal
35337)
35338{
35339 WDI_EventInfoType wdiEventData;
35340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35341
35342 /*------------------------------------------------------------------------
35343 Sanity Check
35344 ------------------------------------------------------------------------*/
35345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35346 {
35347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35348 "WDI API call before module is initialized - Fail request");
35349 return WDI_STATUS_E_NOT_ALLOWED;
35350 }
35351
35352 /*------------------------------------------------------------------------
35353 Fill in Event data and post to the Main FSM
35354 ------------------------------------------------------------------------*/
35355 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
35356 wdiEventData.pEventData = (void *) &rtsCtsVal;
35357 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
35358 wdiEventData.pCBfnc = NULL;
35359 wdiEventData.pUserData = NULL;
35360
35361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35362
35363}/* WDI_SetRtsCtsHTVhtInd */