blob: b5fc9f4eae48099fb503854ea4f33b2f5275ddd8 [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,
Himanshu Agarwalb56ad2e2016-07-19 15:43:09 +0530207 roam_offload_param *
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800208 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
Mahesh Kumar Kalikot Veetil32e4fc72016-09-09 17:05:22 -0700496bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id)
Houston Hoffman79b4af22015-10-06 12:01:08 -0700497{
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);
Mohit Khanna0fe61672016-05-19 16:53:39 -0700797#else
798static inline QDF_STATUS
799wma_process_init_bad_peer_tx_ctl_info(tp_wma_handle wma,
800 struct t_bad_peer_txtcl_config *config)
801{
802 return QDF_STATUS_E_FAILURE;
803}
Poddar, Siddarth5a91f5b2016-04-28 12:24:10 +0530804#endif
805
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530806QDF_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800807 t_thermal_mgmt *pThermalParams);
808
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530809QDF_STATUS wma_process_set_thermal_level(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800810 uint8_t thermal_level);
811
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530812QDF_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800813 t_thermal_cmd_params thermal_info);
814
815int wma_thermal_mgmt_evt_handler(void *handle, uint8_t *event,
816 uint32_t len);
817
Rajeev Kumar8e3e2832015-11-06 16:02:54 -0800818int wma_ibss_peer_info_event_handler(void *handle, uint8_t *data,
819 uint32_t len);
820
821int wma_fast_tx_fail_event_handler(void *handle, uint8_t *data,
822 uint32_t len);
823
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800824/*
825 * wma_utils.c functions declarations
826 */
827
828#ifdef WLAN_FEATURE_STATS_EXT
829int wma_stats_ext_event_handler(void *handle, uint8_t *event_buf,
830 uint32_t len);
831#endif
832
833tSmpsModeValue host_map_smps_mode(A_UINT32 fw_smps_mode);
Archana Ramachandran20d2e232016-02-11 16:58:40 -0800834int wma_smps_mode_to_force_mode_param(uint8_t smps_mode);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800835
836#ifdef WLAN_FEATURE_LINK_LAYER_STATS
837void wma_register_ll_stats_event_handler(tp_wma_handle wma_handle);
838
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530839QDF_STATUS wma_process_ll_stats_clear_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800840 (tp_wma_handle wma, const tpSirLLStatsClearReq clearReq);
841
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530842QDF_STATUS wma_process_ll_stats_set_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800843 (tp_wma_handle wma, const tpSirLLStatsSetReq setReq);
844
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530845QDF_STATUS wma_process_ll_stats_get_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800846 (tp_wma_handle wma, const tpSirLLStatsGetReq getReq) ;
847
848int wma_unified_link_iface_stats_event_handler(void *handle,
849 uint8_t *cmd_param_info,
850 uint32_t len);
851#endif
852
853void wma_post_link_status(tAniGetLinkStatus *pGetLinkStatus,
854 uint8_t link_status);
855
856int wma_link_status_event_handler(void *handle, uint8_t *cmd_param_info,
857 uint32_t len);
858
859int wma_stats_event_handler(void *handle, uint8_t *cmd_param_info,
860 uint32_t len);
861
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530862QDF_STATUS wma_send_link_speed(uint32_t link_speed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800863
864int wma_link_speed_event_handler(void *handle, uint8_t *cmd_param_info,
865 uint32_t len);
866
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530867QDF_STATUS wma_wni_cfg_dnld(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800868
869int wma_unified_debug_print_event_handler(void *handle, uint8_t *datap,
870 uint32_t len);
871
872bool wma_is_sap_active(tp_wma_handle wma_handle);
873
874bool wma_is_p2p_go_active(tp_wma_handle wma_handle);
875
876bool wma_is_p2p_cli_active(tp_wma_handle wma_handle);
877
878bool wma_is_sta_active(tp_wma_handle wma_handle);
879
880WLAN_PHY_MODE wma_peer_phymode(tSirNwType nw_type, uint8_t sta_type,
881 uint8_t is_ht, uint8_t ch_width,
882 uint8_t is_vht);
883
884int32_t wma_txrx_fw_stats_reset(tp_wma_handle wma_handle,
885 uint8_t vdev_id, uint32_t value);
886
887int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle,
888 uint8_t vdev_id, uint32_t value);
889
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800890void wma_get_stats_req(WMA_HANDLE handle,
891 tAniGetPEStatsReq *get_stats_param);
892
893#if defined(QCA_WIFI_FTM)
894void wma_utf_detach(tp_wma_handle wma_handle);
895
896void wma_utf_attach(tp_wma_handle wma_handle);
897
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530898QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800899wma_process_ftm_command(tp_wma_handle wma_handle,
900 struct ar6k_testmode_cmd_data *msg_buffer);
901#endif
902
903/*
904 * wma_features.c functions declarations
905 */
906
907void wma_process_link_status_req(tp_wma_handle wma,
908 tAniGetLinkStatus *pGetLinkStatus);
909
910#ifdef FEATURE_WLAN_LPHB
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530911QDF_STATUS wma_process_lphb_conf_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800912 tSirLPHBReq *lphb_conf_req);
913
914#endif
915
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530916QDF_STATUS wma_process_dhcp_ind(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800917 tAniDHCPInd *ta_dhcp_ind);
918
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530919QDF_STATUS wma_get_link_speed(WMA_HANDLE handle, tSirLinkSpeedInfo *pLinkSpeed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800920
Govind Singha471e5e2015-10-12 17:11:14 +0530921int wma_profile_data_report_event_handler(void *handle, uint8_t *event_buf,
922 uint32_t len);
923
Govind Singhf25a0f12016-03-08 16:09:48 +0530924QDF_STATUS wma_unified_fw_profiling_cmd(wmi_unified_t wmi_handle,
Govind Singha471e5e2015-10-12 17:11:14 +0530925 uint32_t cmd, uint32_t value1, uint32_t value2);
926
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800927void wma_wow_tx_complete(void *wma);
928
929int wmi_unified_nat_keepalive_enable(tp_wma_handle wma, uint8_t vdev_id);
930
Govind Singhd76a5b02016-03-08 15:12:14 +0530931int wma_unified_csa_offload_enable(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800932
933#ifdef WLAN_FEATURE_NAN
934int wma_nan_rsp_event_handler(void *handle, uint8_t *event_buf, uint32_t len);
935#endif
936
937#ifdef FEATURE_WLAN_TDLS
938int wma_tdls_event_handler(void *handle, uint8_t *event, uint32_t len);
939#endif
940
941int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len);
942
943#ifdef WLAN_FEATURE_GTK_OFFLOAD
944int wma_gtk_offload_status_event(void *handle, uint8_t *event, uint32_t len);
945#endif
946
947#ifdef FEATURE_OEM_DATA_SUPPORT
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -0800948int wma_oem_data_response_handler(void *handle, uint8_t *datap,
949 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800950#endif
951
952void wma_register_dfs_event_handler(tp_wma_handle wma_handle);
953
954int
955wma_unified_dfs_phyerr_filter_offload_enable(tp_wma_handle wma_handle);
956
957#if !defined(REMOVE_PKT_LOG)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530958QDF_STATUS wma_pktlog_wmi_send_cmd(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800959 struct ath_pktlog_wmi_params *params);
960#endif
961
962int wma_wow_wakeup_host_event(void *handle, uint8_t *event,
963 uint32_t len);
964int wma_pdev_resume_event_handler(void *handle, uint8_t *event, uint32_t len);
965
966/**
967 * wma_get_wow_bus_suspend() - check is wow bus suspended or not
968 * @wma: wma handle
969 *
970 * Return: true/false
971 */
972static inline int wma_get_wow_bus_suspend(tp_wma_handle wma)
973{
974
Anurag Chouhan8e0ccd32016-02-19 15:30:20 +0530975 return qdf_atomic_read(&wma->is_wow_bus_suspended);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800976}
977
Anurag Chouhan6d760662016-02-20 16:05:43 +0530978QDF_STATUS wma_resume_req(tp_wma_handle wma, enum qdf_suspend_type type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800979
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530980QDF_STATUS wma_wow_add_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800981 struct wow_add_pattern *ptrn);
982
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530983QDF_STATUS wma_wow_delete_user_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800984 struct wow_delete_pattern *pattern);
985
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530986QDF_STATUS wma_wow_enter(tp_wma_handle wma, tpSirHalWowlEnterParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800987
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530988QDF_STATUS wma_wow_exit(tp_wma_handle wma, tpSirHalWowlExitParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800989
Anurag Chouhan6d760662016-02-20 16:05:43 +0530990QDF_STATUS wma_suspend_req(tp_wma_handle wma, enum qdf_suspend_type type);
Houston Hoffmana76591b2015-11-10 16:52:05 -0800991void wma_calculate_and_update_conn_state(tp_wma_handle wma);
992void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Houston Hoffman7260ecb2015-10-05 18:43:07 -0700993void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800994
995void wma_del_ts_req(tp_wma_handle wma, tDelTsParams *msg);
996
997void wma_aggr_qos_req(tp_wma_handle wma,
998 tAggrAddTsParams *pAggrQosRspMsg);
999
1000void wma_add_ts_req(tp_wma_handle wma, tAddTsParams *msg);
1001
1002int wma_process_receive_filter_set_filter_req(tp_wma_handle wma_handle,
1003 tSirRcvPktFilterCfgType *
1004 rcv_filter_param);
1005
1006int wma_process_receive_filter_clear_filter_req(tp_wma_handle wma_handle,
1007 tSirRcvFltPktClearParam *
1008 rcv_clear_param);
1009
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001010#ifdef FEATURE_WLAN_ESE
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301011QDF_STATUS wma_process_tsm_stats_req(tp_wma_handle wma_handler,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001012 void *pTsmStatsMsg);
Srinivas Girigowda515a9ef2015-12-11 11:00:48 -08001013QDF_STATUS wma_plm_start(tp_wma_handle wma, const tpSirPlmReq plm);
1014QDF_STATUS wma_plm_stop(tp_wma_handle wma, const tpSirPlmReq plm);
1015void wma_config_plm(tp_wma_handle wma, tpSirPlmReq plm);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001016#endif
1017
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301018QDF_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
1019 tSirRcvFltMcAddrList * mcbc_param);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001020#ifdef WLAN_FEATURE_GTK_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301021QDF_STATUS wma_process_gtk_offload_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001022 tpSirGtkOffloadParams params);
1023
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301024QDF_STATUS wma_process_gtk_offload_getinfo_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001025 tpSirGtkOffloadGetInfoRspParams
1026 params);
1027#endif
1028
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301029QDF_STATUS wma_enable_arp_ns_offload(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001030 tpSirHostOffloadReq pHostOffloadParams,
1031 bool bArpOnly);
1032
Rajeev Kumar8e3e2832015-11-06 16:02:54 -08001033QDF_STATUS wma_process_cesium_enable_ind(tp_wma_handle wma);
1034
1035QDF_STATUS wma_process_get_peer_info_req
1036 (tp_wma_handle wma, tSirIbssGetPeerInfoReqParams *pReq);
1037
1038QDF_STATUS wma_process_tx_fail_monitor_ind
1039 (tp_wma_handle wma, tAniTXFailMonitorInd *pReq);
1040
1041QDF_STATUS wma_process_rmc_enable_ind(tp_wma_handle wma);
1042
1043QDF_STATUS wma_process_rmc_disable_ind(tp_wma_handle wma);
1044
1045QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma);
1046
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301047QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001048 tSirAddPeriodicTxPtrn *
1049 pAddPeriodicTxPtrnParams);
1050
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301051QDF_STATUS wma_process_del_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001052 tSirDelPeriodicTxPtrn *
1053 pDelPeriodicTxPtrnParams);
1054
1055#ifdef WLAN_FEATURE_STATS_EXT
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301056QDF_STATUS wma_stats_ext_req(void *wma_ptr, tpStatsExtRequest preq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001057#endif
1058
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301059QDF_STATUS wma_process_ibss_route_table_update_ind(void *wma_handle,
1060 tAniIbssRouteTable * pData);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001061
1062#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
Himanshu Agarwal44195412016-03-09 13:03:54 +05301063QDF_STATUS wma_enable_ext_wow(tp_wma_handle wma, tpSirExtWoWParams params);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001064
1065int wma_set_app_type1_params_in_fw(tp_wma_handle wma,
1066 tpSirAppType1Params appType1Params);
1067
Himanshu Agarwal44195412016-03-09 13:03:54 +05301068QDF_STATUS wma_set_app_type2_params_in_fw(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001069 tpSirAppType2Params appType2Params);
1070#endif
1071
1072#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1073int wma_auto_shutdown_event_handler(void *handle, uint8_t *event,
1074 uint32_t len);
1075
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301076QDF_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001077 tSirAutoShutdownCmdParams *
1078 auto_sh_cmd);
1079#endif
1080
Manikandan Mohan976e7562016-03-15 16:33:31 -07001081#ifdef WLAN_FEATURE_TSF
Manikandan Mohandcc21ba2016-03-15 14:31:56 -07001082int wma_vdev_tsf_handler(void *handle, uint8_t *data, uint32_t data_len);
1083QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id);
1084QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id);
Manikandan Mohan976e7562016-03-15 16:33:31 -07001085QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin);
1086#else
1087static inline QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle,
1088 uint32_t vdev_id)
1089{
1090 return QDF_STATUS_SUCCESS;
1091}
1092
1093static inline QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle,
1094 uint32_t vdev_id)
1095{
1096 return QDF_STATUS_SUCCESS;
1097}
1098
1099static inline int wma_vdev_tsf_handler(void *handle, uint8_t *data,
1100 uint32_t data_len)
1101{
1102 return 0;
1103}
1104
1105static inline QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin)
1106{
1107 return QDF_STATUS_E_INVAL;
1108}
1109#endif
Manikandan Mohan80dea792016-04-28 16:36:48 -07001110QDF_STATUS wma_set_wisa_params(tp_wma_handle wma, struct sir_wisa_params *wisa);
Manikandan Mohandcc21ba2016-03-15 14:31:56 -07001111
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001112#ifdef WLAN_FEATURE_NAN
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301113QDF_STATUS wma_nan_req(void *wma_ptr, tpNanRequest nan_req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001114#endif
1115
1116#ifdef DHCP_SERVER_OFFLOAD
1117int wma_process_dhcpserver_offload(tp_wma_handle wma_handle,
1118 tSirDhcpSrvOffloadInfo *
1119 pDhcpSrvOffloadInfo);
1120#endif
1121
1122#ifdef WLAN_FEATURE_GPIO_LED_FLASHING
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301123QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001124 tSirLedFlashingReq *flashing);
1125#endif
1126
1127#ifdef FEATURE_WLAN_CH_AVOID
1128int wma_channel_avoid_evt_handler(void *handle, uint8_t *event,
1129 uint32_t len);
1130
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301131QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001132 tSirChAvoidUpdateReq *
1133 ch_avoid_update_req);
1134#endif
1135
Govind Singhd76a5b02016-03-08 15:12:14 +05301136QDF_STATUS wma_suspend_target(WMA_HANDLE handle, int disable_target_intr);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001137
1138#ifdef FEATURE_WLAN_TDLS
1139
Himanshu Agarwal44195412016-03-09 13:03:54 +05301140QDF_STATUS wma_update_fw_tdls_state(WMA_HANDLE handle, void *pwmaTdlsparams);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001141int wma_update_tdls_peer_state(WMA_HANDLE handle,
1142 tTdlsPeerStateParams *peerStateParams);
1143/**
1144 * wma_set_tdls_offchan_mode() - set tdls off channel mode
1145 * @handle: wma handle
1146 * @chan_switch_params: Pointer to tdls channel switch parameter structure
1147 *
1148 * This function sets tdls off channel mode
1149 *
1150 * Return: 0 on success; negative errno otherwise
1151 */
Himanshu Agarwal44195412016-03-09 13:03:54 +05301152QDF_STATUS wma_set_tdls_offchan_mode(WMA_HANDLE wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001153 tdls_chan_switch_params *chan_switch_params);
1154#endif
1155
1156struct ieee80211com *wma_dfs_attach(struct ieee80211com *dfs_ic);
1157
1158void wma_dfs_detach(struct ieee80211com *dfs_ic);
1159
1160void wma_dfs_configure(struct ieee80211com *ic);
1161
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301162struct dfs_ieee80211_channel *wma_dfs_configure_channel(
1163 struct ieee80211com *dfs_ic,
Siddarth Poddar17dc4712016-03-09 16:30:27 +05301164 uint32_t band_center_freq1,
1165 uint32_t band_center_freq2,
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301166 struct wma_vdev_start_req
1167 *req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001168void wma_set_sap_keepalive(tp_wma_handle wma, uint8_t vdev_id);
1169
1170#ifdef REMOVE_PKT_LOG
1171static inline void wma_set_wifi_start_packet_stats(void *wma_handle,
1172 struct sir_wifi_start_log *start_log)
1173{
1174 return;
1175}
1176#endif
1177int wma_rssi_breached_event_handler(void *handle,
1178 u_int8_t *cmd_param_info, u_int32_t len);
1179#ifdef WLAN_FEATURE_MEMDUMP
1180int wma_fw_mem_dump_event_handler(void *handle, u_int8_t *cmd_param_info,
1181 u_int32_t len);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301182QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001183 struct fw_dump_req *mem_dump_req);
1184#else
1185static inline int wma_fw_mem_dump_event_handler(void *handle,
1186 u_int8_t *cmd_param_info, u_int32_t len)
1187{
1188 return 0;
1189}
1190
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301191static inline QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001192 void *mem_dump_req)
1193{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301194 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001195}
1196#endif
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301197QDF_STATUS wma_process_set_ie_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001198 struct vdev_ie_info *ie_info);
1199int wma_peer_assoc_conf_handler(void *handle, uint8_t *cmd_param_info,
1200 uint32_t len);
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001201int wma_vdev_delete_handler(void *handle, uint8_t *cmd_param_info,
1202 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001203
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001204int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
1205 uint32_t len);
1206void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
1207 uint8_t type);
Peng Xu8fdaa492016-06-22 10:20:47 -07001208int wma_p2p_lo_event_handler(void *handle, uint8_t *event_buf,
1209 uint32_t len);
Manjeet Singhf82ed072016-07-08 11:40:00 +05301210
1211QDF_STATUS wma_process_hal_pwr_dbg_cmd(WMA_HANDLE handle,
1212 struct sir_mac_pwr_dbg_cmd *
1213 sir_pwr_dbg_params);
1214
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001215#endif