blob: 6845bfda82428529dc8b237059b180c5c4d9aa7b [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -08002 * Copyright (c) 2013-2016 The Linux Foundation. All rights reserved.
Prakash Dhavali7090c5f2015-11-02 17:55:19 -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/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28#ifndef WMA_INTERNAL_H
29#define WMA_INTERNAL_H
30
Deepak Dhamdheree2dd5442016-05-27 15:05:51 -070031#if !defined(REMOVE_PKT_LOG)
32#include "pktlog_ac.h"
33#endif
34
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080035/* ################### defines ################### */
36/*
37 * TODO: Following constant should be shared by firwmare in
38 * wmi_unified.h. This will be done once wmi_unified.h is updated.
39 */
40#define WMI_PEER_STATE_AUTHORIZED 0x2
41
42#define WMA_2_4_GHZ_MAX_FREQ 3000
43#define WOW_CSA_EVENT_OFFSET 12
44
45#define WMA_DEFAULT_SCAN_REQUESTER_ID 1
46#define WMI_SCAN_FINISH_EVENTS (WMI_SCAN_EVENT_START_FAILED | \
47 WMI_SCAN_EVENT_COMPLETED | \
48 WMI_SCAN_EVENT_DEQUEUED)
49/* default value */
50#define DEFAULT_INFRA_STA_KEEP_ALIVE_PERIOD 20
mukul sharma72c8b222015-09-04 17:02:01 +053051#define DEFAULT_STA_SA_QUERY_MAX_RETRIES_COUNT (5)
52#define DEFAULT_STA_SA_QUERY_RETRY_INTERVAL (200)
53
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080054/* pdev vdev and peer stats*/
55#define FW_PDEV_STATS_SET 0x1
56#define FW_VDEV_STATS_SET 0x2
57#define FW_PEER_STATS_SET 0x4
58#define FW_STATS_SET 0x7
59
60/*AR9888/AR6320 noise floor approx value
61 * similar to the mentioned the WMA
62 */
63#define WMA_TGT_NOISE_FLOOR_DBM (-96)
64
65/*
66 * Make sure that link monitor and keep alive
67 * default values should be in sync with CFG.
68 */
69#define WMA_LINK_MONITOR_DEFAULT_TIME_SECS 10
70#define WMA_KEEP_ALIVE_DEFAULT_TIME_SECS 5
71
72#define AGC_DUMP 1
73#define CHAN_DUMP 2
74#define WD_DUMP 3
75#ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
76#define PCIE_DUMP 4
77#endif
78
79/* conformance test limits */
80#define FCC 0x10
81#define MKK 0x40
82#define ETSI 0x30
83
Rakesh Sunki8641f8a2015-12-10 15:11:19 -080084/* Maximum Buffer length allowed for DFS-2 phyerrors */
85#define DFS_MAX_BUF_LENGTH 4096
86
87/*
88 * Maximum Buffer length allowed for DFS-3 phyerrors
89 * When 160MHz is supported the Max length of phyerrors
90 * is larger than the legacy phyerrors.
91 */
92#define DFS3_MAX_BUF_LENGTH 4436
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080093
94#define WMI_DEFAULT_NOISE_FLOOR_DBM (-96)
95
96#define WMI_MCC_MIN_CHANNEL_QUOTA 20
97#define WMI_MCC_MAX_CHANNEL_QUOTA 80
98#define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30
99
100/* The maximum number of patterns that can be transmitted by the firmware
101 * and maximum patterns size.
102 */
103#define WMA_MAXNUM_PERIODIC_TX_PTRNS 6
104
105#define WMI_MAX_HOST_CREDITS 2
106#define WMI_WOW_REQUIRED_CREDITS 1
107
Rajeev Kumar8e3e2832015-11-06 16:02:54 -0800108#define WMI_MAX_MHF_ENTRIES 32
109
110
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800111#define MAX_HT_MCS_IDX 8
112#define MAX_VHT_MCS_IDX 10
113#define INVALID_MCS_IDX 255
114
115#define LINK_STATUS_LEGACY 0
116#define LINK_STATUS_VHT 0x1
117#define LINK_STATUS_MIMO 0x2
118#define LINK_SUPPORT_VHT 0x4
119#define LINK_SUPPORT_MIMO 0x8
120
121#define LINK_RATE_VHT 0x3
122
123#define MAX_ENTRY_HOLD_REQ_QUEUE 2
Krishna Kumaar Natarajana5c53bd2015-10-27 11:48:27 -0700124#define MAX_ENTRY_VDEV_RESP_QUEUE 10
125
Krishna Kumaar Natarajanb7f9a352016-03-18 11:40:07 -0700126/* Time(in ms) to detect DOS attack */
127#define WMA_MGMT_FRAME_DETECT_DOS_TIMER 1000
128
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800129/**
130 * struct index_data_rate_type - non vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800131 * @mcs_index: mcs rate index
132 * @ht20_rate: HT20 supported rate table
133 * @ht40_rate: HT40 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800134 */
135struct index_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800136 uint8_t mcs_index;
137 uint16_t ht20_rate[2];
138 uint16_t ht40_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800139};
140
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800141/**
142 * struct index_vht_data_rate_type - vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800143 * @mcs_index: mcs rate index
144 * @ht20_rate: VHT20 supported rate table
145 * @ht40_rate: VHT40 supported rate table
146 * @ht80_rate: VHT80 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800147 */
148struct index_vht_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800149 uint8_t mcs_index;
150 uint16_t ht20_rate[2];
151 uint16_t ht40_rate[2];
152 uint16_t ht80_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800153};
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800154
155/*
156 * wma_main.c functions declarations
157 */
158
159int
160wmi_unified_pdev_set_param(wmi_unified_t wmi_handle, WMI_PDEV_PARAM param_id,
161 uint32_t param_value);
162
163void wma_send_msg(tp_wma_handle wma_handle, uint16_t msg_type,
164 void *body_ptr, uint32_t body_val);
165
166void wma_data_tx_ack_comp_hdlr(void *wma_context,
Nirav Shahcbc6d722016-03-01 16:24:53 +0530167 qdf_nbuf_t netbuf, int32_t status);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800168
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530169QDF_STATUS wma_set_ppsconfig(uint8_t vdev_id, uint16_t pps_param,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800170 int value);
171
172/*
173 * wma_scan_roam.c functions declarations
174 */
175
176#ifdef WLAN_FEATURE_ROAM_OFFLOAD
177void wma_process_roam_invoke(WMA_HANDLE handle,
178 struct wma_roam_invoke_cmd *roaminvoke);
179
180void wma_process_roam_synch_fail(WMA_HANDLE handle,
181 struct roam_offload_synch_fail *synch_fail);
182
183int wma_roam_synch_event_handler(void *handle, uint8_t *event,
184 uint32_t len);
185#endif
186
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530187QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800188 tSirScanOffloadReq *scan_req,
Govind Singh498bf2a2016-03-08 15:44:17 +0530189 struct scan_start_params *cmd);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800190
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530191QDF_STATUS wma_get_buf_stop_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800192 wmi_buf_t *buf,
193 int *buf_len,
194 tAbortScanParams *abort_scan_req);
195
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530196QDF_STATUS wma_start_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800197 tSirScanOffloadReq *scan_req, uint16_t msg_type);
198
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530199QDF_STATUS wma_stop_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800200 tAbortScanParams *abort_scan_req);
201
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530202QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800203 tSirUpdateChanList *chan_list);
204
205#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530206QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800207 wmi_roam_offload_tlv_param *
208 roam_offload_params,
209 tSirRoamOffloadScanReq *roam_req);
210#endif
211
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530212QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800213 wmi_start_scan_cmd_fixed_param *
214 scan_cmd_fp,
215 tSirRoamOffloadScanReq *roam_req,
216 uint32_t mode, uint32_t vdev_id);
217
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530218QDF_STATUS wma_roam_scan_offload_rssi_thresh(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800219 tSirRoamOffloadScanReq *roam_req);
220
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530221QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800222 uint32_t scan_period,
223 uint32_t scan_age,
224 uint32_t vdev_id);
225
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530226QDF_STATUS wma_roam_scan_offload_rssi_change(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800227 uint32_t vdev_id,
228 int32_t rssi_change_thresh,
229 uint32_t bcn_rssi_weight,
230 uint32_t hirssi_delay_btw_scans);
231
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530232QDF_STATUS wma_roam_scan_offload_chan_list(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800233 uint8_t chan_count,
234 uint8_t *chan_list,
235 uint8_t list_type, uint32_t vdev_id);
236
237A_UINT32 e_csr_auth_type_to_rsn_authmode(eCsrAuthType authtype,
238 eCsrEncryptionType encr);
239
240A_UINT32 e_csr_encryption_type_to_rsn_cipherset(eCsrEncryptionType encr);
241
242void wma_roam_scan_fill_ap_profile(tp_wma_handle wma_handle,
243 tpAniSirGlobal pMac,
244 tSirRoamOffloadScanReq *roam_req,
245 wmi_ap_profile *ap_profile_p);
246
247void wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
248 tpAniSirGlobal pMac,
249 tSirRoamOffloadScanReq *roam_req,
250 wmi_start_scan_cmd_fixed_param *
251 scan_params);
252
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530253QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800254 wmi_ap_profile *ap_profile_p,
255 uint32_t vdev_id);
256
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530257QDF_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800258 A_INT32 first_bcnt,
259 A_UINT32 final_bcnt, uint32_t vdev_id);
260
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530261QDF_STATUS wma_roam_scan_offload_command(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800262 uint32_t command, uint32_t vdev_id);
263
Varun Reddy Yeturu30bc42c2016-02-04 10:07:30 -0800264QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800265 tSirRoamOffloadScanReq *roam_req);
266
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530267QDF_STATUS wma_roam_preauth_chan_set(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800268 tpSwitchChannelParams params,
269 uint8_t vdev_id);
270
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530271QDF_STATUS wma_roam_preauth_chan_cancel(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800272 tpSwitchChannelParams params,
273 uint8_t vdev_id);
274
275void wma_roam_preauth_scan_event_handler(tp_wma_handle wma_handle,
276 uint8_t vdev_id,
277 wmi_scan_event_fixed_param *
278 wmi_event);
279
280void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params);
281
282#ifdef FEATURE_WLAN_SCAN_PNO
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530283QDF_STATUS wma_pno_start(tp_wma_handle wma, tpSirPNOScanReq pno);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800284
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530285QDF_STATUS wma_pno_stop(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800286
287void wma_config_pno(tp_wma_handle wma, tpSirPNOScanReq pno);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -0700288void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
289 tpSirPNOScanReq pno);
290void wma_scan_cache_updated_ind(tp_wma_handle wma, uint8_t sessionId);
291#else
292static inline void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
293 void *pno)
294{
295 WMA_LOGD("PNO Channel Prediction feature not supported");
296 WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_FIXED_STRUC, 0);
297}
298#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800299
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800300#ifdef WLAN_FEATURE_ROAM_OFFLOAD
301void wma_set_ric_req(tp_wma_handle wma, void *msg, uint8_t is_add_ts);
302#endif
303
304#ifdef FEATURE_WLAN_EXTSCAN
305
306int wma_extscan_start_stop_event_handler(void *handle,
307 uint8_t *cmd_param_info,
308 uint32_t len);
309
310int wma_extscan_operations_event_handler(void *handle,
311 uint8_t *cmd_param_info,
312 uint32_t len);
313
314int wma_extscan_table_usage_event_handler(void *handle,
315 uint8_t *cmd_param_info,
316 uint32_t len);
317
318int wma_extscan_capabilities_event_handler(void *handle,
319 uint8_t *cmd_param_info,
320 uint32_t len);
321
322int wma_extscan_hotlist_match_event_handler(void *handle,
323 uint8_t *cmd_param_info,
324 uint32_t len);
325
326int wma_extscan_cached_results_event_handler(void *handle,
327 uint8_t *cmd_param_info,
328 uint32_t len);
329
330int wma_extscan_change_results_event_handler(void *handle,
331 uint8_t *cmd_param_info,
332 uint32_t len);
333
334int wma_passpoint_match_event_handler(void *handle,
335 uint8_t *cmd_param_info,
336 uint32_t len);
337
338int
339wma_extscan_hotlist_ssid_match_event_handler(void *handle,
340 uint8_t *cmd_param_info,
341 uint32_t len);
342#endif
343
344void wma_register_extscan_event_handler(tp_wma_handle wma_handle);
345
346#ifdef FEATURE_WLAN_EXTSCAN
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530347QDF_STATUS wma_get_buf_extscan_start_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800348 tSirWifiScanCmdReqParams *pstart,
349 wmi_buf_t *buf, int *buf_len);
350
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530351QDF_STATUS wma_start_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800352 tSirWifiScanCmdReqParams *pstart);
353
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530354QDF_STATUS wma_stop_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800355 tSirExtScanStopReqParams *pstopcmd);
356
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530357QDF_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800358 tSirExtScanSetBssidHotListReqParams *
359 photlist, int *buf_len);
360
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530361QDF_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800362 tSirExtScanSetBssidHotListReqParams
363 *photlist);
364
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530365QDF_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800366 tSirExtScanResetBssidHotlistReqParams
367 *photlist_reset);
368
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530369QDF_STATUS wma_get_buf_extscan_change_monitor_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800370 tSirExtScanSetSigChangeReqParams
371 *psigchange, wmi_buf_t *buf,
372 int *buf_len);
373
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530374QDF_STATUS wma_extscan_start_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800375 tSirExtScanSetSigChangeReqParams *
376 psigchange);
377
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530378QDF_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800379 tSirExtScanResetSignificantChangeReqParams
380 *pResetReq);
381
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530382QDF_STATUS wma_extscan_get_cached_results(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800383 tSirExtScanGetCachedResultsReqParams *
384 pcached_results);
385
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530386QDF_STATUS wma_extscan_get_capabilities(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800387 tSirGetExtScanCapabilitiesReqParams *
388 pgetcapab);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530389QDF_STATUS wma_set_epno_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800390 struct wifi_epno_params *req);
391
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530392QDF_STATUS wma_set_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800393 struct wifi_passpoint_req *req);
394
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530395QDF_STATUS wma_reset_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800396 struct wifi_passpoint_req *req);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530397QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800398wma_set_ssid_hotlist(tp_wma_handle wma,
399 struct sir_set_ssid_hotlist_request *request);
400#endif
401
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530402QDF_STATUS wma_ipa_offload_enable_disable(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800403 struct sir_ipa_offload_enable_disable *ipa_offload);
404
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800405void wma_process_unit_test_cmd(WMA_HANDLE handle,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530406 t_wma_unit_test_cmd * wma_utest);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800407
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530408QDF_STATUS wma_scan_probe_setoui(tp_wma_handle wma, tSirScanMacOui *psetoui);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800409
410int wma_scan_event_callback(WMA_HANDLE handle, uint8_t *data, uint32_t len);
411
412void wma_roam_better_ap_handler(tp_wma_handle wma, uint32_t vdev_id);
413
414int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
415 uint32_t len);
416
417#ifdef FEATURE_WLAN_SCAN_PNO
418int wma_nlo_match_evt_handler(void *handle, uint8_t *event, uint32_t len);
419
420int wma_nlo_scan_cmp_evt_handler(void *handle, uint8_t *event, uint32_t len);
421#endif
422
423#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Varun Reddy Yeturud5939f82015-12-24 18:14:02 -0800424void wma_process_roam_synch_complete(WMA_HANDLE handle, uint8_t vdev_id);
425static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
426 uint8_t vdev_id)
427{
428 return wma->interfaces[vdev_id].roam_synch_in_progress;
429}
430#else
431static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
432 uint8_t vdev_id)
433{
434 return false;
435}
Varun Reddy Yeturu101f9542016-05-24 10:07:52 -0700436static inline uint32_t wma_roam_scan_get_cckm_mode(
437 struct sSirRoamOffloadScanReq *roam_req, uint32_t auth_mode)
438{
439 return WMI_AUTH_CCKM;
440}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800441#endif
442
443/*
444 * wma_dev_if.c functions declarations
445 */
446
447void *wma_find_vdev_by_addr(tp_wma_handle wma, uint8_t *addr,
448 uint8_t *vdev_id);
449
450/**
451 * wma_find_vdev_by_id() - Returns vdev handle for given vdev id.
452 * @wma - wma handle
453 * @vdev_id - vdev ID
454 *
455 * Return: Returns vdev handle if given vdev id is valid.
456 * Otherwise returns NULL.
457 */
458static inline void *wma_find_vdev_by_id(tp_wma_handle wma, uint8_t vdev_id)
459{
460 if (vdev_id > wma->max_bssid)
461 return NULL;
462
463 return wma->interfaces[vdev_id].handle;
464}
465
466/**
467 * wma_get_vdev_count() - Returns number of active vdev.
468 * @wma - wma handle
469 *
470 * Return: Returns valid vdev count.
471 */
472static inline uint8_t wma_get_vdev_count(tp_wma_handle wma)
473{
474 uint8_t vdev_count = 0, i;
475
476 for (i = 0; i < wma->max_bssid; i++) {
477 if (wma->interfaces[i].handle)
478 vdev_count++;
479 }
480 return vdev_count;
481}
482
483bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, uint8_t vdev_id);
484
485#ifdef QCA_IBSS_SUPPORT
486bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
Houston Hoffman79b4af22015-10-06 12:01:08 -0700487#else
488/**
489 * wma_is_vdev_in_ibss_mode(): dummy function
490 * @wma: wma handle
491 * @vdev_id: vdev id
492 *
493 * Return false since no vdev can be in ibss mode without ibss support
494 */
495static inline
496bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
497{
498 return false;
499}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800500#endif
501
502/**
Houston Hoffman79b4af22015-10-06 12:01:08 -0700503 * wma_is_vdev_in_beaconning_mode() - check if vdev is in a beaconning mode
504 * @wma: wma handle
505 * @vdev_id: vdev id
506 *
507 * Helper function to know whether given vdev id
508 * is in a beaconning mode or not.
509 *
510 * Return: True if vdev needs to beacon.
511 */
512static inline
513bool wma_is_vdev_in_beaconning_mode(tp_wma_handle wma, uint8_t vdev_id)
514{
515 return wma_is_vdev_in_ap_mode(wma, vdev_id) ||
516 wma_is_vdev_in_ibss_mode(wma, vdev_id);
517}
518
519/**
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800520 * wma_find_bssid_by_vdev_id() - Get the BSS ID corresponding to the vdev ID
521 * @wma - wma handle
522 * @vdev_id - vdev ID
523 *
524 * Return: Returns pointer to bssid on success,
525 * otherwise returns NULL.
526 */
527static inline uint8_t *wma_find_bssid_by_vdev_id(tp_wma_handle wma,
528 uint8_t vdev_id)
529{
530 if (vdev_id >= wma->max_bssid)
531 return NULL;
532
533 return wma->interfaces[vdev_id].bssid;
534}
535
536void *wma_find_vdev_by_bssid(tp_wma_handle wma, uint8_t *bssid,
537 uint8_t *vdev_id);
538
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530539QDF_STATUS wma_vdev_detach(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800540 struct del_sta_self_params *pdel_sta_self_req_param,
541 uint8_t generateRsp);
542
543int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
544 uint32_t len);
545
Govind Singhd76a5b02016-03-08 15:12:14 +0530546QDF_STATUS wma_vdev_set_param(wmi_unified_t wmi_handle, uint32_t if_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800547 uint32_t param_id, uint32_t param_value);
548
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800549void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
550 uint8_t vdev_id, ol_txrx_peer_handle peer,
551 bool roam_synch_in_progress);
552
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530553QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800554 ol_txrx_vdev_handle vdev,
555 u8 peer_addr[IEEE80211_ADDR_LEN],
556 uint32_t peer_type, uint8_t vdev_id,
557 bool roam_synch_in_progress);
558
559int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
560 u32 len);
561
562ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
563 struct add_sta_self_params *self_sta_req,
564 uint8_t generateRsp);
565
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530566QDF_STATUS wma_vdev_start(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800567 struct wma_vdev_start_req *req, bool isRestart);
568
569void wma_vdev_resp_timer(void *data);
570
571struct wma_target_req *wma_fill_vdev_req(tp_wma_handle wma,
572 uint8_t vdev_id,
573 uint32_t msg_type, uint8_t type,
574 void *params, uint32_t timeout);
575
576void wma_hold_req_timer(void *data);
577struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
578 uint8_t vdev_id, uint32_t msg_type,
579 uint8_t type, void *params,
580 uint32_t timeout);
581
582void wma_remove_vdev_req(tp_wma_handle wma, uint8_t vdev_id,
583 uint8_t type);
584
585void wma_add_bss(tp_wma_handle wma, tpAddBssParams params);
586
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800587void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta);
588
589void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta);
590
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800591void wma_delete_bss(tp_wma_handle wma, tpDeleteBssParams params);
592
593int32_t wma_find_vdev_by_type(tp_wma_handle wma, int32_t type);
594
595void wma_set_vdev_intrabss_fwd(tp_wma_handle wma_handle,
596 tpDisableIntraBssFwd pdis_intra_fwd);
597
598/*
599 * wma_mgmt.c functions declarations
600 */
601
602int wma_beacon_swba_handler(void *handle, uint8_t *event, uint32_t len);
603
604int wma_peer_sta_kickout_event_handler(void *handle, u8 *event, u32 len);
605
606void wma_extscan_wow_event_callback(void *handle, void *event, uint32_t len);
607
608int wma_unified_bcntx_status_event_handler(void *handle,
609 uint8_t *cmd_param_info,
610 uint32_t len);
611
mukul sharma72c8b222015-09-04 17:02:01 +0530612void wma_set_sta_sa_query_param(tp_wma_handle wma,
613 uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800614
615void wma_set_sta_keep_alive(tp_wma_handle wma, uint8_t vdev_id,
616 uint32_t method, uint32_t timeperiod,
617 uint8_t *hostv4addr, uint8_t *destv4addr,
618 uint8_t *destmac);
619
620int wma_vdev_install_key_complete_event_handler(void *handle,
621 uint8_t *event,
622 uint32_t len);
623
Govind Singhb30d4c02016-03-24 11:01:23 +0530624QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800625 tSirNwType nw_type,
626 tpAddStaParams params);
627
Himanshu Agarwal009f1572016-03-09 17:26:02 +0530628QDF_STATUS wmi_unified_vdev_set_gtx_cfg_send(wmi_unified_t wmi_handle,
629 uint32_t if_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800630 gtx_config_t *gtx_info);
631
632void wma_update_protection_mode(tp_wma_handle wma, uint8_t vdev_id,
633 uint8_t llbcoexist);
634
635void wma_process_update_beacon_params(tp_wma_handle wma,
636 tUpdateBeaconParams *bcn_params);
637
638void wma_update_cfg_params(tp_wma_handle wma, tSirMsgQ *cfgParam);
639
640void wma_set_bsskey(tp_wma_handle wma_handle, tpSetBssKeyParams key_info);
641
642void wma_adjust_ibss_heart_beat_timer(tp_wma_handle wma,
643 uint8_t vdev_id,
644 int8_t peer_num_delta);
645
646void wma_set_stakey(tp_wma_handle wma_handle, tpSetStaKeyParams key_info);
647
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530648QDF_STATUS wma_process_update_edca_param_req(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800649 tEdcaParams *edca_params);
650
651int wma_tbttoffset_update_event_handler(void *handle, uint8_t *event,
652 uint32_t len);
653
654void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
655 tpSendProbeRespParams probe_rsp_info);
656
657void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
658
659void wma_set_keepalive_req(tp_wma_handle wma,
660 tSirKeepAliveReq *keepalive);
661
662void wma_beacon_miss_handler(tp_wma_handle wma, uint32_t vdev_id);
663
664void wma_process_update_opmode(tp_wma_handle wma_handle,
665 tUpdateVHTOpMode *update_vht_opmode);
666
667void wma_process_update_rx_nss(tp_wma_handle wma_handle,
668 tUpdateRxNss *update_rx_nss);
669
670void wma_process_update_membership(tp_wma_handle wma_handle,
671 tUpdateMembership *membership);
672
673void wma_process_update_userpos(tp_wma_handle wma_handle,
674 tUpdateUserPos *userpos);
675
676void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
677 tHalHiddenSsidVdevRestart *pReq);
678
679/*
680 * wma_power.c functions declarations
681 */
682
683void wma_enable_sta_ps_mode(tp_wma_handle wma, tpEnablePsParams ps_req);
684
Govind Singhd76a5b02016-03-08 15:12:14 +0530685QDF_STATUS wma_unified_set_sta_ps_param(wmi_unified_t wmi_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800686 uint32_t vdev_id, uint32_t param,
687 uint32_t value);
688
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530689QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800690wma_set_ibss_pwrsave_params(tp_wma_handle wma, uint8_t vdev_id);
691
Govind Singhd76a5b02016-03-08 15:12:14 +0530692QDF_STATUS wma_set_ap_peer_uapsd(tp_wma_handle wma, uint32_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800693 uint8_t *peer_addr, uint8_t uapsd_value,
694 uint8_t max_sp);
695
696void wma_update_edca_params_for_ac(tSirMacEdcaParamRecord *edca_param,
697 wmi_wmm_vparams *wmm_param, int ac);
698
699void wma_set_tx_power(WMA_HANDLE handle,
700 tMaxTxPowerParams *tx_pwr_params);
701
702void wma_set_max_tx_power(WMA_HANDLE handle,
703 tMaxTxPowerParams *tx_pwr_params);
704
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800705void wma_disable_sta_ps_mode(tp_wma_handle wma, tpDisablePsParams ps_req);
706
707void wma_enable_uapsd_mode(tp_wma_handle wma, tpEnableUapsdParams ps_req);
708
709void wma_disable_uapsd_mode(tp_wma_handle wma,
710 tpDisableUapsdParams ps_req);
711
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530712QDF_STATUS wma_get_temperature(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800713
714int wma_pdev_temperature_evt_handler(void *handle, uint8_t *event,
715 uint32_t len);
716
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530717QDF_STATUS wma_process_tx_power_limits(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800718 tSirTxPowerLimit *ptxlim);
719
720void wma_update_noa(struct beacon_info *beacon,
721 struct p2p_sub_element_noa *noa_ie);
722
723void wma_update_probe_resp_noa(tp_wma_handle wma_handle,
724 struct p2p_sub_element_noa *noa_ie);
725
726int wma_p2p_noa_event_handler(void *handle, uint8_t *event,
727 uint32_t len);
728
729void wma_process_set_p2pgo_noa_req(tp_wma_handle wma,
730 tP2pPsParams *ps_params);
731
732void wma_process_set_mimops_req(tp_wma_handle wma_handle,
733 tSetMIMOPS *mimops);
734
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530735QDF_STATUS wma_set_mimops(tp_wma_handle wma, uint8_t vdev_id, int value);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800736
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530737QDF_STATUS wma_notify_modem_power_state(void *wma_ptr,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800738 tSirModemPowerStateInd *pReq);
739
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530740QDF_STATUS wma_set_smps_params(tp_wma_handle wma, uint8_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800741 int value);
742
743void wma_set_suspend_dtim(tp_wma_handle wma);
744
745void wma_set_resume_dtim(tp_wma_handle wma);
746
747/*
748 * wma_data.c functions declarations
749 */
750
751
752void wma_set_bss_rate_flags(struct wma_txrx_node *iface,
753 tpAddBssParams add_bss);
754
755int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params);
756
757void wma_update_txrx_chainmask(int num_rf_chains, int *cmd_value);
758
759int wma_peer_state_change_event_handler(void *handle,
760 uint8_t *event_buff,
761 uint32_t len);
762
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530763QDF_STATUS wma_set_enable_disable_mcc_adaptive_scheduler(uint32_t
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800764 mcc_adaptive_scheduler);
765
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530766QDF_STATUS wma_set_mcc_channel_time_latency
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800767 (tp_wma_handle wma,
768 uint32_t mcc_channel, uint32_t mcc_channel_time_latency);
769
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530770QDF_STATUS wma_set_mcc_channel_time_quota
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800771 (tp_wma_handle wma,
772 uint32_t adapter_1_chan_number,
773 uint32_t adapter_1_quota, uint32_t adapter_2_chan_number);
774
775void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params);
776
777void wma_unpause_vdev(tp_wma_handle wma);
778
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530779QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800780 tSirRateUpdateInd *
781 pRateUpdateParams);
782
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530783QDF_STATUS wma_tx_attach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800784
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530785QDF_STATUS wma_tx_detach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800786
Poddar, Siddarth5a91f5b2016-04-28 12:24:10 +0530787#if defined(QCA_LL_LEGACY_TX_FLOW_CONTROL) || \
788 defined(QCA_LL_TX_FLOW_CONTROL_V2) || defined(CONFIG_HL_SUPPORT)
789
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800790int wma_mcc_vdev_tx_pause_evt_handler(void *handle, uint8_t *event,
791 uint32_t len);
792#endif
793
Poddar, Siddarth5a91f5b2016-04-28 12:24:10 +0530794#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
795QDF_STATUS wma_process_init_bad_peer_tx_ctl_info(tp_wma_handle wma,
796 struct t_bad_peer_txtcl_config *config);
797
798#endif
799
800
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530801QDF_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800802 t_thermal_mgmt *pThermalParams);
803
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530804QDF_STATUS wma_process_set_thermal_level(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800805 uint8_t thermal_level);
806
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530807QDF_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800808 t_thermal_cmd_params thermal_info);
809
810int wma_thermal_mgmt_evt_handler(void *handle, uint8_t *event,
811 uint32_t len);
812
Rajeev Kumar8e3e2832015-11-06 16:02:54 -0800813int wma_ibss_peer_info_event_handler(void *handle, uint8_t *data,
814 uint32_t len);
815
816int wma_fast_tx_fail_event_handler(void *handle, uint8_t *data,
817 uint32_t len);
818
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800819/*
820 * wma_utils.c functions declarations
821 */
822
823#ifdef WLAN_FEATURE_STATS_EXT
824int wma_stats_ext_event_handler(void *handle, uint8_t *event_buf,
825 uint32_t len);
826#endif
827
828tSmpsModeValue host_map_smps_mode(A_UINT32 fw_smps_mode);
Archana Ramachandran20d2e232016-02-11 16:58:40 -0800829int wma_smps_mode_to_force_mode_param(uint8_t smps_mode);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800830
831#ifdef WLAN_FEATURE_LINK_LAYER_STATS
832void wma_register_ll_stats_event_handler(tp_wma_handle wma_handle);
833
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530834QDF_STATUS wma_process_ll_stats_clear_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800835 (tp_wma_handle wma, const tpSirLLStatsClearReq clearReq);
836
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530837QDF_STATUS wma_process_ll_stats_set_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800838 (tp_wma_handle wma, const tpSirLLStatsSetReq setReq);
839
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530840QDF_STATUS wma_process_ll_stats_get_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800841 (tp_wma_handle wma, const tpSirLLStatsGetReq getReq) ;
842
843int wma_unified_link_iface_stats_event_handler(void *handle,
844 uint8_t *cmd_param_info,
845 uint32_t len);
846#endif
847
848void wma_post_link_status(tAniGetLinkStatus *pGetLinkStatus,
849 uint8_t link_status);
850
851int wma_link_status_event_handler(void *handle, uint8_t *cmd_param_info,
852 uint32_t len);
853
854int wma_stats_event_handler(void *handle, uint8_t *cmd_param_info,
855 uint32_t len);
856
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530857QDF_STATUS wma_send_link_speed(uint32_t link_speed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800858
859int wma_link_speed_event_handler(void *handle, uint8_t *cmd_param_info,
860 uint32_t len);
861
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530862QDF_STATUS wma_wni_cfg_dnld(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800863
864int wma_unified_debug_print_event_handler(void *handle, uint8_t *datap,
865 uint32_t len);
866
867bool wma_is_sap_active(tp_wma_handle wma_handle);
868
869bool wma_is_p2p_go_active(tp_wma_handle wma_handle);
870
871bool wma_is_p2p_cli_active(tp_wma_handle wma_handle);
872
873bool wma_is_sta_active(tp_wma_handle wma_handle);
874
875WLAN_PHY_MODE wma_peer_phymode(tSirNwType nw_type, uint8_t sta_type,
876 uint8_t is_ht, uint8_t ch_width,
877 uint8_t is_vht);
878
879int32_t wma_txrx_fw_stats_reset(tp_wma_handle wma_handle,
880 uint8_t vdev_id, uint32_t value);
881
882int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle,
883 uint8_t vdev_id, uint32_t value);
884
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800885void wma_get_stats_req(WMA_HANDLE handle,
886 tAniGetPEStatsReq *get_stats_param);
887
888#if defined(QCA_WIFI_FTM)
889void wma_utf_detach(tp_wma_handle wma_handle);
890
891void wma_utf_attach(tp_wma_handle wma_handle);
892
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530893QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800894wma_process_ftm_command(tp_wma_handle wma_handle,
895 struct ar6k_testmode_cmd_data *msg_buffer);
896#endif
897
898/*
899 * wma_features.c functions declarations
900 */
901
902void wma_process_link_status_req(tp_wma_handle wma,
903 tAniGetLinkStatus *pGetLinkStatus);
904
905#ifdef FEATURE_WLAN_LPHB
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530906QDF_STATUS wma_process_lphb_conf_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800907 tSirLPHBReq *lphb_conf_req);
908
909#endif
910
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530911QDF_STATUS wma_process_dhcp_ind(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800912 tAniDHCPInd *ta_dhcp_ind);
913
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530914QDF_STATUS wma_get_link_speed(WMA_HANDLE handle, tSirLinkSpeedInfo *pLinkSpeed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800915
Govind Singha471e5e2015-10-12 17:11:14 +0530916int wma_profile_data_report_event_handler(void *handle, uint8_t *event_buf,
917 uint32_t len);
918
Govind Singhf25a0f12016-03-08 16:09:48 +0530919QDF_STATUS wma_unified_fw_profiling_cmd(wmi_unified_t wmi_handle,
Govind Singha471e5e2015-10-12 17:11:14 +0530920 uint32_t cmd, uint32_t value1, uint32_t value2);
921
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800922void wma_wow_tx_complete(void *wma);
923
924int wmi_unified_nat_keepalive_enable(tp_wma_handle wma, uint8_t vdev_id);
925
Govind Singhd76a5b02016-03-08 15:12:14 +0530926int wma_unified_csa_offload_enable(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800927
928#ifdef WLAN_FEATURE_NAN
929int wma_nan_rsp_event_handler(void *handle, uint8_t *event_buf, uint32_t len);
930#endif
931
932#ifdef FEATURE_WLAN_TDLS
933int wma_tdls_event_handler(void *handle, uint8_t *event, uint32_t len);
934#endif
935
936int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len);
937
938#ifdef WLAN_FEATURE_GTK_OFFLOAD
939int wma_gtk_offload_status_event(void *handle, uint8_t *event, uint32_t len);
940#endif
941
942#ifdef FEATURE_OEM_DATA_SUPPORT
943int wma_oem_capability_event_callback(void *handle,
944 uint8_t *datap, uint32_t len);
945
946int wma_oem_measurement_report_event_callback(void *handle, uint8_t *datap,
947 uint32_t len);
948
949int wma_oem_error_report_event_callback(void *handle, uint8_t *datap,
950 uint32_t len);
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -0800951
952int wma_oem_data_response_handler(void *handle, uint8_t *datap,
953 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800954#endif
955
956void wma_register_dfs_event_handler(tp_wma_handle wma_handle);
957
958int
959wma_unified_dfs_phyerr_filter_offload_enable(tp_wma_handle wma_handle);
960
961#if !defined(REMOVE_PKT_LOG)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530962QDF_STATUS wma_pktlog_wmi_send_cmd(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800963 struct ath_pktlog_wmi_params *params);
964#endif
965
966int wma_wow_wakeup_host_event(void *handle, uint8_t *event,
967 uint32_t len);
968int wma_pdev_resume_event_handler(void *handle, uint8_t *event, uint32_t len);
969
970/**
971 * wma_get_wow_bus_suspend() - check is wow bus suspended or not
972 * @wma: wma handle
973 *
974 * Return: true/false
975 */
976static inline int wma_get_wow_bus_suspend(tp_wma_handle wma)
977{
978
Anurag Chouhan8e0ccd32016-02-19 15:30:20 +0530979 return qdf_atomic_read(&wma->is_wow_bus_suspended);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800980}
981
Anurag Chouhan6d760662016-02-20 16:05:43 +0530982QDF_STATUS wma_resume_req(tp_wma_handle wma, enum qdf_suspend_type type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800983
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530984QDF_STATUS wma_wow_add_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800985 struct wow_add_pattern *ptrn);
986
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530987QDF_STATUS wma_wow_delete_user_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800988 struct wow_delete_pattern *pattern);
989
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530990QDF_STATUS wma_wow_enter(tp_wma_handle wma, tpSirHalWowlEnterParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800991
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530992QDF_STATUS wma_wow_exit(tp_wma_handle wma, tpSirHalWowlExitParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800993
Anurag Chouhan6d760662016-02-20 16:05:43 +0530994QDF_STATUS wma_suspend_req(tp_wma_handle wma, enum qdf_suspend_type type);
Houston Hoffmana76591b2015-11-10 16:52:05 -0800995void wma_calculate_and_update_conn_state(tp_wma_handle wma);
996void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Houston Hoffman7260ecb2015-10-05 18:43:07 -0700997void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800998
999void wma_del_ts_req(tp_wma_handle wma, tDelTsParams *msg);
1000
1001void wma_aggr_qos_req(tp_wma_handle wma,
1002 tAggrAddTsParams *pAggrQosRspMsg);
1003
1004void wma_add_ts_req(tp_wma_handle wma, tAddTsParams *msg);
1005
1006int wma_process_receive_filter_set_filter_req(tp_wma_handle wma_handle,
1007 tSirRcvPktFilterCfgType *
1008 rcv_filter_param);
1009
1010int wma_process_receive_filter_clear_filter_req(tp_wma_handle wma_handle,
1011 tSirRcvFltPktClearParam *
1012 rcv_clear_param);
1013
1014#ifdef FEATURE_OEM_DATA_SUPPORT
1015void wma_start_oem_data_req(tp_wma_handle wma_handle,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301016 tStartOemDataReq * startOemDataReq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001017#endif
1018
1019#ifdef FEATURE_WLAN_ESE
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301020QDF_STATUS wma_process_tsm_stats_req(tp_wma_handle wma_handler,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001021 void *pTsmStatsMsg);
Srinivas Girigowda515a9ef2015-12-11 11:00:48 -08001022QDF_STATUS wma_plm_start(tp_wma_handle wma, const tpSirPlmReq plm);
1023QDF_STATUS wma_plm_stop(tp_wma_handle wma, const tpSirPlmReq plm);
1024void wma_config_plm(tp_wma_handle wma, tpSirPlmReq plm);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001025#endif
1026
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301027QDF_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
1028 tSirRcvFltMcAddrList * mcbc_param);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001029#ifdef WLAN_FEATURE_GTK_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301030QDF_STATUS wma_process_gtk_offload_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001031 tpSirGtkOffloadParams params);
1032
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301033QDF_STATUS wma_process_gtk_offload_getinfo_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001034 tpSirGtkOffloadGetInfoRspParams
1035 params);
1036#endif
1037
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301038QDF_STATUS wma_enable_arp_ns_offload(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001039 tpSirHostOffloadReq pHostOffloadParams,
1040 bool bArpOnly);
1041
Rajeev Kumar8e3e2832015-11-06 16:02:54 -08001042QDF_STATUS wma_process_cesium_enable_ind(tp_wma_handle wma);
1043
1044QDF_STATUS wma_process_get_peer_info_req
1045 (tp_wma_handle wma, tSirIbssGetPeerInfoReqParams *pReq);
1046
1047QDF_STATUS wma_process_tx_fail_monitor_ind
1048 (tp_wma_handle wma, tAniTXFailMonitorInd *pReq);
1049
1050QDF_STATUS wma_process_rmc_enable_ind(tp_wma_handle wma);
1051
1052QDF_STATUS wma_process_rmc_disable_ind(tp_wma_handle wma);
1053
1054QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma);
1055
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301056QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001057 tSirAddPeriodicTxPtrn *
1058 pAddPeriodicTxPtrnParams);
1059
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301060QDF_STATUS wma_process_del_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001061 tSirDelPeriodicTxPtrn *
1062 pDelPeriodicTxPtrnParams);
1063
1064#ifdef WLAN_FEATURE_STATS_EXT
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301065QDF_STATUS wma_stats_ext_req(void *wma_ptr, tpStatsExtRequest preq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001066#endif
1067
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301068QDF_STATUS wma_process_ibss_route_table_update_ind(void *wma_handle,
1069 tAniIbssRouteTable * pData);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001070
1071#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
Himanshu Agarwal44195412016-03-09 13:03:54 +05301072QDF_STATUS wma_enable_ext_wow(tp_wma_handle wma, tpSirExtWoWParams params);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001073
1074int wma_set_app_type1_params_in_fw(tp_wma_handle wma,
1075 tpSirAppType1Params appType1Params);
1076
Himanshu Agarwal44195412016-03-09 13:03:54 +05301077QDF_STATUS wma_set_app_type2_params_in_fw(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001078 tpSirAppType2Params appType2Params);
1079#endif
1080
1081#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1082int wma_auto_shutdown_event_handler(void *handle, uint8_t *event,
1083 uint32_t len);
1084
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301085QDF_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001086 tSirAutoShutdownCmdParams *
1087 auto_sh_cmd);
1088#endif
1089
Manikandan Mohan976e7562016-03-15 16:33:31 -07001090#ifdef WLAN_FEATURE_TSF
Manikandan Mohandcc21ba2016-03-15 14:31:56 -07001091int wma_vdev_tsf_handler(void *handle, uint8_t *data, uint32_t data_len);
1092QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id);
1093QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id);
Manikandan Mohan976e7562016-03-15 16:33:31 -07001094QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin);
1095#else
1096static inline QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle,
1097 uint32_t vdev_id)
1098{
1099 return QDF_STATUS_SUCCESS;
1100}
1101
1102static inline QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle,
1103 uint32_t vdev_id)
1104{
1105 return QDF_STATUS_SUCCESS;
1106}
1107
1108static inline int wma_vdev_tsf_handler(void *handle, uint8_t *data,
1109 uint32_t data_len)
1110{
1111 return 0;
1112}
1113
1114static inline QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin)
1115{
1116 return QDF_STATUS_E_INVAL;
1117}
1118#endif
Manikandan Mohan80dea792016-04-28 16:36:48 -07001119QDF_STATUS wma_set_wisa_params(tp_wma_handle wma, struct sir_wisa_params *wisa);
Manikandan Mohandcc21ba2016-03-15 14:31:56 -07001120
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001121#ifdef WLAN_FEATURE_NAN
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301122QDF_STATUS wma_nan_req(void *wma_ptr, tpNanRequest nan_req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001123#endif
1124
1125#ifdef DHCP_SERVER_OFFLOAD
1126int wma_process_dhcpserver_offload(tp_wma_handle wma_handle,
1127 tSirDhcpSrvOffloadInfo *
1128 pDhcpSrvOffloadInfo);
1129#endif
1130
1131#ifdef WLAN_FEATURE_GPIO_LED_FLASHING
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301132QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001133 tSirLedFlashingReq *flashing);
1134#endif
1135
1136#ifdef FEATURE_WLAN_CH_AVOID
1137int wma_channel_avoid_evt_handler(void *handle, uint8_t *event,
1138 uint32_t len);
1139
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301140QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001141 tSirChAvoidUpdateReq *
1142 ch_avoid_update_req);
1143#endif
1144
Govind Singhd76a5b02016-03-08 15:12:14 +05301145QDF_STATUS wma_suspend_target(WMA_HANDLE handle, int disable_target_intr);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001146
1147#ifdef FEATURE_WLAN_TDLS
1148
Himanshu Agarwal44195412016-03-09 13:03:54 +05301149QDF_STATUS wma_update_fw_tdls_state(WMA_HANDLE handle, void *pwmaTdlsparams);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001150int wma_update_tdls_peer_state(WMA_HANDLE handle,
1151 tTdlsPeerStateParams *peerStateParams);
1152/**
1153 * wma_set_tdls_offchan_mode() - set tdls off channel mode
1154 * @handle: wma handle
1155 * @chan_switch_params: Pointer to tdls channel switch parameter structure
1156 *
1157 * This function sets tdls off channel mode
1158 *
1159 * Return: 0 on success; negative errno otherwise
1160 */
Himanshu Agarwal44195412016-03-09 13:03:54 +05301161QDF_STATUS wma_set_tdls_offchan_mode(WMA_HANDLE wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001162 tdls_chan_switch_params *chan_switch_params);
1163#endif
1164
1165struct ieee80211com *wma_dfs_attach(struct ieee80211com *dfs_ic);
1166
1167void wma_dfs_detach(struct ieee80211com *dfs_ic);
1168
1169void wma_dfs_configure(struct ieee80211com *ic);
1170
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301171struct dfs_ieee80211_channel *wma_dfs_configure_channel(
1172 struct ieee80211com *dfs_ic,
Siddarth Poddar17dc4712016-03-09 16:30:27 +05301173 uint32_t band_center_freq1,
1174 uint32_t band_center_freq2,
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301175 struct wma_vdev_start_req
1176 *req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001177void wma_set_sap_keepalive(tp_wma_handle wma, uint8_t vdev_id);
1178
1179#ifdef REMOVE_PKT_LOG
1180static inline void wma_set_wifi_start_packet_stats(void *wma_handle,
1181 struct sir_wifi_start_log *start_log)
1182{
1183 return;
1184}
1185#endif
1186int wma_rssi_breached_event_handler(void *handle,
1187 u_int8_t *cmd_param_info, u_int32_t len);
1188#ifdef WLAN_FEATURE_MEMDUMP
1189int wma_fw_mem_dump_event_handler(void *handle, u_int8_t *cmd_param_info,
1190 u_int32_t len);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301191QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001192 struct fw_dump_req *mem_dump_req);
1193#else
1194static inline int wma_fw_mem_dump_event_handler(void *handle,
1195 u_int8_t *cmd_param_info, u_int32_t len)
1196{
1197 return 0;
1198}
1199
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301200static inline QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001201 void *mem_dump_req)
1202{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301203 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001204}
1205#endif
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301206QDF_STATUS wma_process_set_ie_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001207 struct vdev_ie_info *ie_info);
1208int wma_peer_assoc_conf_handler(void *handle, uint8_t *cmd_param_info,
1209 uint32_t len);
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001210int wma_vdev_delete_handler(void *handle, uint8_t *cmd_param_info,
1211 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001212
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001213int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
1214 uint32_t len);
1215void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
1216 uint8_t type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001217#endif