blob: 8914e0e5f7713b5d35c885f9fa616cbbb4db1307 [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
31/* ################### defines ################### */
32/*
33 * TODO: Following constant should be shared by firwmare in
34 * wmi_unified.h. This will be done once wmi_unified.h is updated.
35 */
36#define WMI_PEER_STATE_AUTHORIZED 0x2
37
38#define WMA_2_4_GHZ_MAX_FREQ 3000
39#define WOW_CSA_EVENT_OFFSET 12
40
41#define WMA_DEFAULT_SCAN_REQUESTER_ID 1
42#define WMI_SCAN_FINISH_EVENTS (WMI_SCAN_EVENT_START_FAILED | \
43 WMI_SCAN_EVENT_COMPLETED | \
44 WMI_SCAN_EVENT_DEQUEUED)
45/* default value */
46#define DEFAULT_INFRA_STA_KEEP_ALIVE_PERIOD 20
mukul sharma72c8b222015-09-04 17:02:01 +053047#define DEFAULT_STA_SA_QUERY_MAX_RETRIES_COUNT (5)
48#define DEFAULT_STA_SA_QUERY_RETRY_INTERVAL (200)
49
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080050/* pdev vdev and peer stats*/
51#define FW_PDEV_STATS_SET 0x1
52#define FW_VDEV_STATS_SET 0x2
53#define FW_PEER_STATS_SET 0x4
54#define FW_STATS_SET 0x7
55
56/*AR9888/AR6320 noise floor approx value
57 * similar to the mentioned the WMA
58 */
59#define WMA_TGT_NOISE_FLOOR_DBM (-96)
60
61/*
62 * Make sure that link monitor and keep alive
63 * default values should be in sync with CFG.
64 */
65#define WMA_LINK_MONITOR_DEFAULT_TIME_SECS 10
66#define WMA_KEEP_ALIVE_DEFAULT_TIME_SECS 5
67
68#define AGC_DUMP 1
69#define CHAN_DUMP 2
70#define WD_DUMP 3
71#ifdef CONFIG_ATH_PCIE_ACCESS_DEBUG
72#define PCIE_DUMP 4
73#endif
74
75/* conformance test limits */
76#define FCC 0x10
77#define MKK 0x40
78#define ETSI 0x30
79
Rakesh Sunki8641f8a2015-12-10 15:11:19 -080080/* Maximum Buffer length allowed for DFS-2 phyerrors */
81#define DFS_MAX_BUF_LENGTH 4096
82
83/*
84 * Maximum Buffer length allowed for DFS-3 phyerrors
85 * When 160MHz is supported the Max length of phyerrors
86 * is larger than the legacy phyerrors.
87 */
88#define DFS3_MAX_BUF_LENGTH 4436
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080089
90#define WMI_DEFAULT_NOISE_FLOOR_DBM (-96)
91
92#define WMI_MCC_MIN_CHANNEL_QUOTA 20
93#define WMI_MCC_MAX_CHANNEL_QUOTA 80
94#define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30
95
96/* The maximum number of patterns that can be transmitted by the firmware
97 * and maximum patterns size.
98 */
99#define WMA_MAXNUM_PERIODIC_TX_PTRNS 6
100
101#define WMI_MAX_HOST_CREDITS 2
102#define WMI_WOW_REQUIRED_CREDITS 1
103
104#define MAX_HT_MCS_IDX 8
105#define MAX_VHT_MCS_IDX 10
106#define INVALID_MCS_IDX 255
107
108#define LINK_STATUS_LEGACY 0
109#define LINK_STATUS_VHT 0x1
110#define LINK_STATUS_MIMO 0x2
111#define LINK_SUPPORT_VHT 0x4
112#define LINK_SUPPORT_MIMO 0x8
113
114#define LINK_RATE_VHT 0x3
115
116#define MAX_ENTRY_HOLD_REQ_QUEUE 2
Krishna Kumaar Natarajana5c53bd2015-10-27 11:48:27 -0700117#define MAX_ENTRY_VDEV_RESP_QUEUE 10
118
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800119/**
120 * struct index_data_rate_type - non vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800121 * @mcs_index: mcs rate index
122 * @ht20_rate: HT20 supported rate table
123 * @ht40_rate: HT40 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800124 */
125struct index_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800126 uint8_t mcs_index;
127 uint16_t ht20_rate[2];
128 uint16_t ht40_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800129};
130
131#ifdef WLAN_FEATURE_11AC
132/**
133 * struct index_vht_data_rate_type - vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800134 * @mcs_index: mcs rate index
135 * @ht20_rate: VHT20 supported rate table
136 * @ht40_rate: VHT40 supported rate table
137 * @ht80_rate: VHT80 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800138 */
139struct index_vht_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800140 uint8_t mcs_index;
141 uint16_t ht20_rate[2];
142 uint16_t ht40_rate[2];
143 uint16_t ht80_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800144};
145#endif
146
147/*
148 * wma_main.c functions declarations
149 */
150
151int
152wmi_unified_pdev_set_param(wmi_unified_t wmi_handle, WMI_PDEV_PARAM param_id,
153 uint32_t param_value);
154
155void wma_send_msg(tp_wma_handle wma_handle, uint16_t msg_type,
156 void *body_ptr, uint32_t body_val);
157
158void wma_data_tx_ack_comp_hdlr(void *wma_context,
Nirav Shahcbc6d722016-03-01 16:24:53 +0530159 qdf_nbuf_t netbuf, int32_t status);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800160
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530161QDF_STATUS wma_set_ppsconfig(uint8_t vdev_id, uint16_t pps_param,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800162 int value);
163
164/*
165 * wma_scan_roam.c functions declarations
166 */
167
168#ifdef WLAN_FEATURE_ROAM_OFFLOAD
169void wma_process_roam_invoke(WMA_HANDLE handle,
170 struct wma_roam_invoke_cmd *roaminvoke);
171
172void wma_process_roam_synch_fail(WMA_HANDLE handle,
173 struct roam_offload_synch_fail *synch_fail);
174
175int wma_roam_synch_event_handler(void *handle, uint8_t *event,
176 uint32_t len);
177#endif
178
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530179QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800180 tSirScanOffloadReq *scan_req,
Govind Singh498bf2a2016-03-08 15:44:17 +0530181 struct scan_start_params *cmd);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800182
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530183QDF_STATUS wma_get_buf_stop_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800184 wmi_buf_t *buf,
185 int *buf_len,
186 tAbortScanParams *abort_scan_req);
187
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530188QDF_STATUS wma_start_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800189 tSirScanOffloadReq *scan_req, uint16_t msg_type);
190
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530191QDF_STATUS wma_stop_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800192 tAbortScanParams *abort_scan_req);
193
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530194QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800195 tSirUpdateChanList *chan_list);
196
197#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530198QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800199 wmi_roam_offload_tlv_param *
200 roam_offload_params,
201 tSirRoamOffloadScanReq *roam_req);
202#endif
203
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530204QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800205 wmi_start_scan_cmd_fixed_param *
206 scan_cmd_fp,
207 tSirRoamOffloadScanReq *roam_req,
208 uint32_t mode, uint32_t vdev_id);
209
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530210QDF_STATUS wma_roam_scan_offload_rssi_thresh(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800211 tSirRoamOffloadScanReq *roam_req);
212
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530213QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800214 uint32_t scan_period,
215 uint32_t scan_age,
216 uint32_t vdev_id);
217
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530218QDF_STATUS wma_roam_scan_offload_rssi_change(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800219 uint32_t vdev_id,
220 int32_t rssi_change_thresh,
221 uint32_t bcn_rssi_weight,
222 uint32_t hirssi_delay_btw_scans);
223
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530224QDF_STATUS wma_roam_scan_offload_chan_list(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800225 uint8_t chan_count,
226 uint8_t *chan_list,
227 uint8_t list_type, uint32_t vdev_id);
228
229A_UINT32 e_csr_auth_type_to_rsn_authmode(eCsrAuthType authtype,
230 eCsrEncryptionType encr);
231
232A_UINT32 e_csr_encryption_type_to_rsn_cipherset(eCsrEncryptionType encr);
233
234void wma_roam_scan_fill_ap_profile(tp_wma_handle wma_handle,
235 tpAniSirGlobal pMac,
236 tSirRoamOffloadScanReq *roam_req,
237 wmi_ap_profile *ap_profile_p);
238
239void wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
240 tpAniSirGlobal pMac,
241 tSirRoamOffloadScanReq *roam_req,
242 wmi_start_scan_cmd_fixed_param *
243 scan_params);
244
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530245QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800246 wmi_ap_profile *ap_profile_p,
247 uint32_t vdev_id);
248
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530249QDF_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800250 A_INT32 first_bcnt,
251 A_UINT32 final_bcnt, uint32_t vdev_id);
252
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530253QDF_STATUS wma_roam_scan_offload_command(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800254 uint32_t command, uint32_t vdev_id);
255
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530256QDF_STATUS wma_process_roam_scan_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800257 tSirRoamOffloadScanReq *roam_req);
258
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530259QDF_STATUS wma_roam_preauth_chan_set(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800260 tpSwitchChannelParams params,
261 uint8_t vdev_id);
262
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530263QDF_STATUS wma_roam_preauth_chan_cancel(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800264 tpSwitchChannelParams params,
265 uint8_t vdev_id);
266
267void wma_roam_preauth_scan_event_handler(tp_wma_handle wma_handle,
268 uint8_t vdev_id,
269 wmi_scan_event_fixed_param *
270 wmi_event);
271
272void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params);
273
274#ifdef FEATURE_WLAN_SCAN_PNO
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530275QDF_STATUS wma_pno_start(tp_wma_handle wma, tpSirPNOScanReq pno);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800276
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530277QDF_STATUS wma_pno_stop(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800278
279void wma_config_pno(tp_wma_handle wma, tpSirPNOScanReq pno);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -0700280void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
281 tpSirPNOScanReq pno);
282void wma_scan_cache_updated_ind(tp_wma_handle wma, uint8_t sessionId);
283#else
284static inline void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
285 void *pno)
286{
287 WMA_LOGD("PNO Channel Prediction feature not supported");
288 WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_FIXED_STRUC, 0);
289}
290#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800291#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530292QDF_STATUS wma_plm_start(tp_wma_handle wma, const tpSirPlmReq plm);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800293
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530294QDF_STATUS wma_plm_stop(tp_wma_handle wma, const tpSirPlmReq plm);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800295
296void wma_config_plm(tp_wma_handle wma, tpSirPlmReq plm);
297#endif
298
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800299#ifdef WLAN_FEATURE_ROAM_OFFLOAD
300void wma_set_ric_req(tp_wma_handle wma, void *msg, uint8_t is_add_ts);
301#endif
302
303#ifdef FEATURE_WLAN_EXTSCAN
304
305int wma_extscan_start_stop_event_handler(void *handle,
306 uint8_t *cmd_param_info,
307 uint32_t len);
308
309int wma_extscan_operations_event_handler(void *handle,
310 uint8_t *cmd_param_info,
311 uint32_t len);
312
313int wma_extscan_table_usage_event_handler(void *handle,
314 uint8_t *cmd_param_info,
315 uint32_t len);
316
317int wma_extscan_capabilities_event_handler(void *handle,
318 uint8_t *cmd_param_info,
319 uint32_t len);
320
321int wma_extscan_hotlist_match_event_handler(void *handle,
322 uint8_t *cmd_param_info,
323 uint32_t len);
324
325int wma_extscan_cached_results_event_handler(void *handle,
326 uint8_t *cmd_param_info,
327 uint32_t len);
328
329int wma_extscan_change_results_event_handler(void *handle,
330 uint8_t *cmd_param_info,
331 uint32_t len);
332
333int wma_passpoint_match_event_handler(void *handle,
334 uint8_t *cmd_param_info,
335 uint32_t len);
336
337int
338wma_extscan_hotlist_ssid_match_event_handler(void *handle,
339 uint8_t *cmd_param_info,
340 uint32_t len);
341#endif
342
343void wma_register_extscan_event_handler(tp_wma_handle wma_handle);
344
345#ifdef FEATURE_WLAN_EXTSCAN
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530346QDF_STATUS wma_get_buf_extscan_start_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800347 tSirWifiScanCmdReqParams *pstart,
348 wmi_buf_t *buf, int *buf_len);
349
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530350QDF_STATUS wma_start_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800351 tSirWifiScanCmdReqParams *pstart);
352
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530353QDF_STATUS wma_stop_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800354 tSirExtScanStopReqParams *pstopcmd);
355
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530356QDF_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800357 tSirExtScanSetBssidHotListReqParams *
358 photlist, int *buf_len);
359
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530360QDF_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800361 tSirExtScanSetBssidHotListReqParams
362 *photlist);
363
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530364QDF_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800365 tSirExtScanResetBssidHotlistReqParams
366 *photlist_reset);
367
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530368QDF_STATUS wma_get_buf_extscan_change_monitor_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800369 tSirExtScanSetSigChangeReqParams
370 *psigchange, wmi_buf_t *buf,
371 int *buf_len);
372
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530373QDF_STATUS wma_extscan_start_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800374 tSirExtScanSetSigChangeReqParams *
375 psigchange);
376
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530377QDF_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800378 tSirExtScanResetSignificantChangeReqParams
379 *pResetReq);
380
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530381QDF_STATUS wma_extscan_get_cached_results(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800382 tSirExtScanGetCachedResultsReqParams *
383 pcached_results);
384
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530385QDF_STATUS wma_extscan_get_capabilities(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800386 tSirGetExtScanCapabilitiesReqParams *
387 pgetcapab);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530388QDF_STATUS wma_set_epno_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800389 struct wifi_epno_params *req);
390
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530391QDF_STATUS wma_set_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800392 struct wifi_passpoint_req *req);
393
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530394QDF_STATUS wma_reset_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800395 struct wifi_passpoint_req *req);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530396QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800397wma_set_ssid_hotlist(tp_wma_handle wma,
398 struct sir_set_ssid_hotlist_request *request);
399#endif
400
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530401QDF_STATUS wma_ipa_offload_enable_disable(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800402 struct sir_ipa_offload_enable_disable *ipa_offload);
403
404#ifdef WLAN_FEATURE_ROAM_OFFLOAD
405void 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#endif
408
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530409QDF_STATUS wma_scan_probe_setoui(tp_wma_handle wma, tSirScanMacOui *psetoui);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800410
411int wma_scan_event_callback(WMA_HANDLE handle, uint8_t *data, uint32_t len);
412
413void wma_roam_better_ap_handler(tp_wma_handle wma, uint32_t vdev_id);
414
415int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
416 uint32_t len);
417
418#ifdef FEATURE_WLAN_SCAN_PNO
419int wma_nlo_match_evt_handler(void *handle, uint8_t *event, uint32_t len);
420
421int wma_nlo_scan_cmp_evt_handler(void *handle, uint8_t *event, uint32_t len);
422#endif
423
424#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Varun Reddy Yeturud5939f82015-12-24 18:14:02 -0800425void wma_process_roam_synch_complete(WMA_HANDLE handle, uint8_t vdev_id);
426static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
427 uint8_t vdev_id)
428{
429 return wma->interfaces[vdev_id].roam_synch_in_progress;
430}
431#else
432static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
433 uint8_t vdev_id)
434{
435 return false;
436}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800437#endif
438
439/*
440 * wma_dev_if.c functions declarations
441 */
442
443void *wma_find_vdev_by_addr(tp_wma_handle wma, uint8_t *addr,
444 uint8_t *vdev_id);
445
446/**
447 * wma_find_vdev_by_id() - Returns vdev handle for given vdev id.
448 * @wma - wma handle
449 * @vdev_id - vdev ID
450 *
451 * Return: Returns vdev handle if given vdev id is valid.
452 * Otherwise returns NULL.
453 */
454static inline void *wma_find_vdev_by_id(tp_wma_handle wma, uint8_t vdev_id)
455{
456 if (vdev_id > wma->max_bssid)
457 return NULL;
458
459 return wma->interfaces[vdev_id].handle;
460}
461
462/**
463 * wma_get_vdev_count() - Returns number of active vdev.
464 * @wma - wma handle
465 *
466 * Return: Returns valid vdev count.
467 */
468static inline uint8_t wma_get_vdev_count(tp_wma_handle wma)
469{
470 uint8_t vdev_count = 0, i;
471
472 for (i = 0; i < wma->max_bssid; i++) {
473 if (wma->interfaces[i].handle)
474 vdev_count++;
475 }
476 return vdev_count;
477}
478
479bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, uint8_t vdev_id);
480
481#ifdef QCA_IBSS_SUPPORT
482bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
Houston Hoffman79b4af22015-10-06 12:01:08 -0700483#else
484/**
485 * wma_is_vdev_in_ibss_mode(): dummy function
486 * @wma: wma handle
487 * @vdev_id: vdev id
488 *
489 * Return false since no vdev can be in ibss mode without ibss support
490 */
491static inline
492bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
493{
494 return false;
495}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800496#endif
497
498/**
Houston Hoffman79b4af22015-10-06 12:01:08 -0700499 * wma_is_vdev_in_beaconning_mode() - check if vdev is in a beaconning mode
500 * @wma: wma handle
501 * @vdev_id: vdev id
502 *
503 * Helper function to know whether given vdev id
504 * is in a beaconning mode or not.
505 *
506 * Return: True if vdev needs to beacon.
507 */
508static inline
509bool wma_is_vdev_in_beaconning_mode(tp_wma_handle wma, uint8_t vdev_id)
510{
511 return wma_is_vdev_in_ap_mode(wma, vdev_id) ||
512 wma_is_vdev_in_ibss_mode(wma, vdev_id);
513}
514
515/**
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800516 * wma_find_bssid_by_vdev_id() - Get the BSS ID corresponding to the vdev ID
517 * @wma - wma handle
518 * @vdev_id - vdev ID
519 *
520 * Return: Returns pointer to bssid on success,
521 * otherwise returns NULL.
522 */
523static inline uint8_t *wma_find_bssid_by_vdev_id(tp_wma_handle wma,
524 uint8_t vdev_id)
525{
526 if (vdev_id >= wma->max_bssid)
527 return NULL;
528
529 return wma->interfaces[vdev_id].bssid;
530}
531
532void *wma_find_vdev_by_bssid(tp_wma_handle wma, uint8_t *bssid,
533 uint8_t *vdev_id);
534
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530535QDF_STATUS wma_vdev_detach(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800536 struct del_sta_self_params *pdel_sta_self_req_param,
537 uint8_t generateRsp);
538
539int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
540 uint32_t len);
541
Govind Singhd76a5b02016-03-08 15:12:14 +0530542QDF_STATUS wma_vdev_set_param(wmi_unified_t wmi_handle, uint32_t if_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800543 uint32_t param_id, uint32_t param_value);
544
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800545void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
546 uint8_t vdev_id, ol_txrx_peer_handle peer,
547 bool roam_synch_in_progress);
548
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530549QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800550 ol_txrx_vdev_handle vdev,
551 u8 peer_addr[IEEE80211_ADDR_LEN],
552 uint32_t peer_type, uint8_t vdev_id,
553 bool roam_synch_in_progress);
554
555int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
556 u32 len);
557
558ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
559 struct add_sta_self_params *self_sta_req,
560 uint8_t generateRsp);
561
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530562QDF_STATUS wma_vdev_start(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800563 struct wma_vdev_start_req *req, bool isRestart);
564
565void wma_vdev_resp_timer(void *data);
566
567struct wma_target_req *wma_fill_vdev_req(tp_wma_handle wma,
568 uint8_t vdev_id,
569 uint32_t msg_type, uint8_t type,
570 void *params, uint32_t timeout);
571
572void wma_hold_req_timer(void *data);
573struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
574 uint8_t vdev_id, uint32_t msg_type,
575 uint8_t type, void *params,
576 uint32_t timeout);
577
578void wma_remove_vdev_req(tp_wma_handle wma, uint8_t vdev_id,
579 uint8_t type);
580
581void wma_add_bss(tp_wma_handle wma, tpAddBssParams params);
582
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800583void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta);
584
585void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta);
586
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800587void wma_delete_bss(tp_wma_handle wma, tpDeleteBssParams params);
588
589int32_t wma_find_vdev_by_type(tp_wma_handle wma, int32_t type);
590
591void wma_set_vdev_intrabss_fwd(tp_wma_handle wma_handle,
592 tpDisableIntraBssFwd pdis_intra_fwd);
593
594/*
595 * wma_mgmt.c functions declarations
596 */
597
598int wma_beacon_swba_handler(void *handle, uint8_t *event, uint32_t len);
599
600int wma_peer_sta_kickout_event_handler(void *handle, u8 *event, u32 len);
601
602void wma_extscan_wow_event_callback(void *handle, void *event, uint32_t len);
603
604int wma_unified_bcntx_status_event_handler(void *handle,
605 uint8_t *cmd_param_info,
606 uint32_t len);
607
mukul sharma72c8b222015-09-04 17:02:01 +0530608void wma_set_sta_sa_query_param(tp_wma_handle wma,
609 uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800610
611void wma_set_sta_keep_alive(tp_wma_handle wma, uint8_t vdev_id,
612 uint32_t method, uint32_t timeperiod,
613 uint8_t *hostv4addr, uint8_t *destv4addr,
614 uint8_t *destmac);
615
616int wma_vdev_install_key_complete_event_handler(void *handle,
617 uint8_t *event,
618 uint32_t len);
619
620int32_t wmi_unified_send_peer_assoc(tp_wma_handle wma,
621 tSirNwType nw_type,
622 tpAddStaParams params);
623
624int wmi_unified_vdev_set_gtx_cfg_send(wmi_unified_t wmi_handle, uint32_t if_id,
625 gtx_config_t *gtx_info);
626
627void wma_update_protection_mode(tp_wma_handle wma, uint8_t vdev_id,
628 uint8_t llbcoexist);
629
630void wma_process_update_beacon_params(tp_wma_handle wma,
631 tUpdateBeaconParams *bcn_params);
632
633void wma_update_cfg_params(tp_wma_handle wma, tSirMsgQ *cfgParam);
634
635void wma_set_bsskey(tp_wma_handle wma_handle, tpSetBssKeyParams key_info);
636
637void wma_adjust_ibss_heart_beat_timer(tp_wma_handle wma,
638 uint8_t vdev_id,
639 int8_t peer_num_delta);
640
641void wma_set_stakey(tp_wma_handle wma_handle, tpSetStaKeyParams key_info);
642
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530643QDF_STATUS wma_process_update_edca_param_req(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800644 tEdcaParams *edca_params);
645
646int wma_tbttoffset_update_event_handler(void *handle, uint8_t *event,
647 uint32_t len);
648
649void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
650 tpSendProbeRespParams probe_rsp_info);
651
652void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
653
654void wma_set_keepalive_req(tp_wma_handle wma,
655 tSirKeepAliveReq *keepalive);
656
657void wma_beacon_miss_handler(tp_wma_handle wma, uint32_t vdev_id);
658
659void wma_process_update_opmode(tp_wma_handle wma_handle,
660 tUpdateVHTOpMode *update_vht_opmode);
661
662void wma_process_update_rx_nss(tp_wma_handle wma_handle,
663 tUpdateRxNss *update_rx_nss);
664
665void wma_process_update_membership(tp_wma_handle wma_handle,
666 tUpdateMembership *membership);
667
668void wma_process_update_userpos(tp_wma_handle wma_handle,
669 tUpdateUserPos *userpos);
670
671void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
672 tHalHiddenSsidVdevRestart *pReq);
673
674/*
675 * wma_power.c functions declarations
676 */
677
678void wma_enable_sta_ps_mode(tp_wma_handle wma, tpEnablePsParams ps_req);
679
Govind Singhd76a5b02016-03-08 15:12:14 +0530680QDF_STATUS wma_unified_set_sta_ps_param(wmi_unified_t wmi_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800681 uint32_t vdev_id, uint32_t param,
682 uint32_t value);
683
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530684QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800685wma_set_ibss_pwrsave_params(tp_wma_handle wma, uint8_t vdev_id);
686
Govind Singhd76a5b02016-03-08 15:12:14 +0530687QDF_STATUS wma_set_ap_peer_uapsd(tp_wma_handle wma, uint32_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800688 uint8_t *peer_addr, uint8_t uapsd_value,
689 uint8_t max_sp);
690
691void wma_update_edca_params_for_ac(tSirMacEdcaParamRecord *edca_param,
692 wmi_wmm_vparams *wmm_param, int ac);
693
694void wma_set_tx_power(WMA_HANDLE handle,
695 tMaxTxPowerParams *tx_pwr_params);
696
697void wma_set_max_tx_power(WMA_HANDLE handle,
698 tMaxTxPowerParams *tx_pwr_params);
699
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800700void wma_disable_sta_ps_mode(tp_wma_handle wma, tpDisablePsParams ps_req);
701
702void wma_enable_uapsd_mode(tp_wma_handle wma, tpEnableUapsdParams ps_req);
703
704void wma_disable_uapsd_mode(tp_wma_handle wma,
705 tpDisableUapsdParams ps_req);
706
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530707QDF_STATUS wma_get_temperature(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800708
709int wma_pdev_temperature_evt_handler(void *handle, uint8_t *event,
710 uint32_t len);
711
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530712QDF_STATUS wma_process_tx_power_limits(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800713 tSirTxPowerLimit *ptxlim);
714
715void wma_update_noa(struct beacon_info *beacon,
716 struct p2p_sub_element_noa *noa_ie);
717
718void wma_update_probe_resp_noa(tp_wma_handle wma_handle,
719 struct p2p_sub_element_noa *noa_ie);
720
721int wma_p2p_noa_event_handler(void *handle, uint8_t *event,
722 uint32_t len);
723
724void wma_process_set_p2pgo_noa_req(tp_wma_handle wma,
725 tP2pPsParams *ps_params);
726
727void wma_process_set_mimops_req(tp_wma_handle wma_handle,
728 tSetMIMOPS *mimops);
729
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530730QDF_STATUS wma_set_mimops(tp_wma_handle wma, uint8_t vdev_id, int value);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800731
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530732QDF_STATUS wma_notify_modem_power_state(void *wma_ptr,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800733 tSirModemPowerStateInd *pReq);
734
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530735QDF_STATUS wma_set_smps_params(tp_wma_handle wma, uint8_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800736 int value);
737
738void wma_set_suspend_dtim(tp_wma_handle wma);
739
740void wma_set_resume_dtim(tp_wma_handle wma);
741
742/*
743 * wma_data.c functions declarations
744 */
745
746
747void wma_set_bss_rate_flags(struct wma_txrx_node *iface,
748 tpAddBssParams add_bss);
749
750int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params);
751
752void wma_update_txrx_chainmask(int num_rf_chains, int *cmd_value);
753
754int wma_peer_state_change_event_handler(void *handle,
755 uint8_t *event_buff,
756 uint32_t len);
757
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530758QDF_STATUS wma_set_enable_disable_mcc_adaptive_scheduler(uint32_t
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800759 mcc_adaptive_scheduler);
760
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530761QDF_STATUS wma_set_mcc_channel_time_latency
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800762 (tp_wma_handle wma,
763 uint32_t mcc_channel, uint32_t mcc_channel_time_latency);
764
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530765QDF_STATUS wma_set_mcc_channel_time_quota
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800766 (tp_wma_handle wma,
767 uint32_t adapter_1_chan_number,
768 uint32_t adapter_1_quota, uint32_t adapter_2_chan_number);
769
770void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params);
771
772void wma_unpause_vdev(tp_wma_handle wma);
773
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530774QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800775 tSirRateUpdateInd *
776 pRateUpdateParams);
777
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530778QDF_STATUS wma_tx_attach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800779
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530780QDF_STATUS wma_tx_detach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800781
782#if defined(QCA_LL_LEGACY_TX_FLOW_CONTROL) || defined(QCA_LL_TX_FLOW_CONTROL_V2)
783int wma_mcc_vdev_tx_pause_evt_handler(void *handle, uint8_t *event,
784 uint32_t len);
785#endif
786
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530787QDF_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800788 t_thermal_mgmt *pThermalParams);
789
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530790QDF_STATUS wma_process_set_thermal_level(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800791 uint8_t thermal_level);
792
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530793QDF_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800794 t_thermal_cmd_params thermal_info);
795
796int wma_thermal_mgmt_evt_handler(void *handle, uint8_t *event,
797 uint32_t len);
798
799/*
800 * wma_utils.c functions declarations
801 */
802
803#ifdef WLAN_FEATURE_STATS_EXT
804int wma_stats_ext_event_handler(void *handle, uint8_t *event_buf,
805 uint32_t len);
806#endif
807
808tSmpsModeValue host_map_smps_mode(A_UINT32 fw_smps_mode);
809
810#ifdef WLAN_FEATURE_LINK_LAYER_STATS
811void wma_register_ll_stats_event_handler(tp_wma_handle wma_handle);
812
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530813QDF_STATUS wma_process_ll_stats_clear_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800814 (tp_wma_handle wma, const tpSirLLStatsClearReq clearReq);
815
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530816QDF_STATUS wma_process_ll_stats_set_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800817 (tp_wma_handle wma, const tpSirLLStatsSetReq setReq);
818
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530819QDF_STATUS wma_process_ll_stats_get_req
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800820 (tp_wma_handle wma, const tpSirLLStatsGetReq getReq) ;
821
822int wma_unified_link_iface_stats_event_handler(void *handle,
823 uint8_t *cmd_param_info,
824 uint32_t len);
825#endif
826
827void wma_post_link_status(tAniGetLinkStatus *pGetLinkStatus,
828 uint8_t link_status);
829
830int wma_link_status_event_handler(void *handle, uint8_t *cmd_param_info,
831 uint32_t len);
832
833int wma_stats_event_handler(void *handle, uint8_t *cmd_param_info,
834 uint32_t len);
835
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530836QDF_STATUS wma_send_link_speed(uint32_t link_speed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800837
838int wma_link_speed_event_handler(void *handle, uint8_t *cmd_param_info,
839 uint32_t len);
840
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530841QDF_STATUS wma_wni_cfg_dnld(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800842
843int wma_unified_debug_print_event_handler(void *handle, uint8_t *datap,
844 uint32_t len);
845
846bool wma_is_sap_active(tp_wma_handle wma_handle);
847
848bool wma_is_p2p_go_active(tp_wma_handle wma_handle);
849
850bool wma_is_p2p_cli_active(tp_wma_handle wma_handle);
851
852bool wma_is_sta_active(tp_wma_handle wma_handle);
853
854WLAN_PHY_MODE wma_peer_phymode(tSirNwType nw_type, uint8_t sta_type,
855 uint8_t is_ht, uint8_t ch_width,
856 uint8_t is_vht);
857
858int32_t wma_txrx_fw_stats_reset(tp_wma_handle wma_handle,
859 uint8_t vdev_id, uint32_t value);
860
861int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle,
862 uint8_t vdev_id, uint32_t value);
863
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800864void wma_get_stats_req(WMA_HANDLE handle,
865 tAniGetPEStatsReq *get_stats_param);
866
867#if defined(QCA_WIFI_FTM)
868void wma_utf_detach(tp_wma_handle wma_handle);
869
870void wma_utf_attach(tp_wma_handle wma_handle);
871
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530872QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800873wma_process_ftm_command(tp_wma_handle wma_handle,
874 struct ar6k_testmode_cmd_data *msg_buffer);
875#endif
876
877/*
878 * wma_features.c functions declarations
879 */
880
881void wma_process_link_status_req(tp_wma_handle wma,
882 tAniGetLinkStatus *pGetLinkStatus);
883
884#ifdef FEATURE_WLAN_LPHB
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530885QDF_STATUS wma_process_lphb_conf_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800886 tSirLPHBReq *lphb_conf_req);
887
888#endif
889
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530890QDF_STATUS wma_process_dhcp_ind(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800891 tAniDHCPInd *ta_dhcp_ind);
892
893WLAN_PHY_MODE wma_chan_to_mode(u8 chan, phy_ch_width chan_width,
894 u8 vht_capable, u8 dot11_mode);
895
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530896QDF_STATUS wma_get_link_speed(WMA_HANDLE handle, tSirLinkSpeedInfo *pLinkSpeed);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800897
Govind Singha471e5e2015-10-12 17:11:14 +0530898int wma_profile_data_report_event_handler(void *handle, uint8_t *event_buf,
899 uint32_t len);
900
Govind Singhf25a0f12016-03-08 16:09:48 +0530901QDF_STATUS wma_unified_fw_profiling_cmd(wmi_unified_t wmi_handle,
Govind Singha471e5e2015-10-12 17:11:14 +0530902 uint32_t cmd, uint32_t value1, uint32_t value2);
903
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800904void wma_wow_tx_complete(void *wma);
905
906int wmi_unified_nat_keepalive_enable(tp_wma_handle wma, uint8_t vdev_id);
907
Govind Singhd76a5b02016-03-08 15:12:14 +0530908int wma_unified_csa_offload_enable(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800909
910#ifdef WLAN_FEATURE_NAN
911int wma_nan_rsp_event_handler(void *handle, uint8_t *event_buf, uint32_t len);
912#endif
913
914#ifdef FEATURE_WLAN_TDLS
915int wma_tdls_event_handler(void *handle, uint8_t *event, uint32_t len);
916#endif
917
918int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len);
919
920#ifdef WLAN_FEATURE_GTK_OFFLOAD
921int wma_gtk_offload_status_event(void *handle, uint8_t *event, uint32_t len);
922#endif
923
924#ifdef FEATURE_OEM_DATA_SUPPORT
925int wma_oem_capability_event_callback(void *handle,
926 uint8_t *datap, uint32_t len);
927
928int wma_oem_measurement_report_event_callback(void *handle, uint8_t *datap,
929 uint32_t len);
930
931int wma_oem_error_report_event_callback(void *handle, uint8_t *datap,
932 uint32_t len);
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -0800933
934int wma_oem_data_response_handler(void *handle, uint8_t *datap,
935 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800936#endif
937
938void wma_register_dfs_event_handler(tp_wma_handle wma_handle);
939
940int
941wma_unified_dfs_phyerr_filter_offload_enable(tp_wma_handle wma_handle);
942
943#if !defined(REMOVE_PKT_LOG)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530944QDF_STATUS wma_pktlog_wmi_send_cmd(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800945 struct ath_pktlog_wmi_params *params);
946#endif
947
948int wma_wow_wakeup_host_event(void *handle, uint8_t *event,
949 uint32_t len);
950int wma_pdev_resume_event_handler(void *handle, uint8_t *event, uint32_t len);
951
952/**
953 * wma_get_wow_bus_suspend() - check is wow bus suspended or not
954 * @wma: wma handle
955 *
956 * Return: true/false
957 */
958static inline int wma_get_wow_bus_suspend(tp_wma_handle wma)
959{
960
Anurag Chouhan8e0ccd32016-02-19 15:30:20 +0530961 return qdf_atomic_read(&wma->is_wow_bus_suspended);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800962}
963
Anurag Chouhan6d760662016-02-20 16:05:43 +0530964QDF_STATUS wma_resume_req(tp_wma_handle wma, enum qdf_suspend_type type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800965
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530966QDF_STATUS wma_wow_add_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800967 struct wow_add_pattern *ptrn);
968
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530969QDF_STATUS wma_wow_delete_user_pattern(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800970 struct wow_delete_pattern *pattern);
971
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530972QDF_STATUS wma_wow_enter(tp_wma_handle wma, tpSirHalWowlEnterParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800973
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530974QDF_STATUS wma_wow_exit(tp_wma_handle wma, tpSirHalWowlExitParams info);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800975
Anurag Chouhan6d760662016-02-20 16:05:43 +0530976QDF_STATUS wma_suspend_req(tp_wma_handle wma, enum qdf_suspend_type type);
Houston Hoffmana76591b2015-11-10 16:52:05 -0800977void wma_calculate_and_update_conn_state(tp_wma_handle wma);
978void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Houston Hoffman7260ecb2015-10-05 18:43:07 -0700979void wma_update_conn_state(tp_wma_handle wma, uint32_t conn_mask);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800980
981void wma_del_ts_req(tp_wma_handle wma, tDelTsParams *msg);
982
983void wma_aggr_qos_req(tp_wma_handle wma,
984 tAggrAddTsParams *pAggrQosRspMsg);
985
986void wma_add_ts_req(tp_wma_handle wma, tAddTsParams *msg);
987
988int wma_process_receive_filter_set_filter_req(tp_wma_handle wma_handle,
989 tSirRcvPktFilterCfgType *
990 rcv_filter_param);
991
992int wma_process_receive_filter_clear_filter_req(tp_wma_handle wma_handle,
993 tSirRcvFltPktClearParam *
994 rcv_clear_param);
995
996#ifdef FEATURE_OEM_DATA_SUPPORT
997void wma_start_oem_data_req(tp_wma_handle wma_handle,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530998 tStartOemDataReq * startOemDataReq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800999#endif
1000
1001#ifdef FEATURE_WLAN_ESE
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301002QDF_STATUS wma_process_tsm_stats_req(tp_wma_handle wma_handler,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001003 void *pTsmStatsMsg);
1004#endif
1005
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301006QDF_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
1007 tSirRcvFltMcAddrList * mcbc_param);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001008#ifdef WLAN_FEATURE_GTK_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301009QDF_STATUS wma_process_gtk_offload_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001010 tpSirGtkOffloadParams params);
1011
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301012QDF_STATUS wma_process_gtk_offload_getinfo_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001013 tpSirGtkOffloadGetInfoRspParams
1014 params);
1015#endif
1016
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301017QDF_STATUS wma_enable_arp_ns_offload(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001018 tpSirHostOffloadReq pHostOffloadParams,
1019 bool bArpOnly);
1020
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301021QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001022 tSirAddPeriodicTxPtrn *
1023 pAddPeriodicTxPtrnParams);
1024
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301025QDF_STATUS wma_process_del_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001026 tSirDelPeriodicTxPtrn *
1027 pDelPeriodicTxPtrnParams);
1028
1029#ifdef WLAN_FEATURE_STATS_EXT
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301030QDF_STATUS wma_stats_ext_req(void *wma_ptr, tpStatsExtRequest preq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001031#endif
1032
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301033QDF_STATUS wma_process_ibss_route_table_update_ind(void *wma_handle,
1034 tAniIbssRouteTable * pData);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001035
1036#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
1037int wma_enable_ext_wow(tp_wma_handle wma, tpSirExtWoWParams params);
1038
1039int wma_set_app_type1_params_in_fw(tp_wma_handle wma,
1040 tpSirAppType1Params appType1Params);
1041
1042int wma_set_app_type2_params_in_fw(tp_wma_handle wma,
1043 tpSirAppType2Params appType2Params);
1044#endif
1045
1046#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1047int wma_auto_shutdown_event_handler(void *handle, uint8_t *event,
1048 uint32_t len);
1049
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301050QDF_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001051 tSirAutoShutdownCmdParams *
1052 auto_sh_cmd);
1053#endif
1054
1055#ifdef WLAN_FEATURE_NAN
1056
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301057QDF_STATUS wma_nan_req(void *wma_ptr, tpNanRequest nan_req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001058#endif
1059
1060#ifdef DHCP_SERVER_OFFLOAD
1061int wma_process_dhcpserver_offload(tp_wma_handle wma_handle,
1062 tSirDhcpSrvOffloadInfo *
1063 pDhcpSrvOffloadInfo);
1064#endif
1065
1066#ifdef WLAN_FEATURE_GPIO_LED_FLASHING
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301067QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001068 tSirLedFlashingReq *flashing);
1069#endif
1070
1071#ifdef FEATURE_WLAN_CH_AVOID
1072int wma_channel_avoid_evt_handler(void *handle, uint8_t *event,
1073 uint32_t len);
1074
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301075QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001076 tSirChAvoidUpdateReq *
1077 ch_avoid_update_req);
1078#endif
1079
Govind Singhd76a5b02016-03-08 15:12:14 +05301080QDF_STATUS wma_suspend_target(WMA_HANDLE handle, int disable_target_intr);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001081
1082#ifdef FEATURE_WLAN_TDLS
1083
1084int wma_update_fw_tdls_state(WMA_HANDLE handle, void *pwmaTdlsparams);
1085int wma_update_tdls_peer_state(WMA_HANDLE handle,
1086 tTdlsPeerStateParams *peerStateParams);
1087/**
1088 * wma_set_tdls_offchan_mode() - set tdls off channel mode
1089 * @handle: wma handle
1090 * @chan_switch_params: Pointer to tdls channel switch parameter structure
1091 *
1092 * This function sets tdls off channel mode
1093 *
1094 * Return: 0 on success; negative errno otherwise
1095 */
1096int wma_set_tdls_offchan_mode(WMA_HANDLE wma_handle,
1097 tdls_chan_switch_params *chan_switch_params);
1098#endif
1099
1100struct ieee80211com *wma_dfs_attach(struct ieee80211com *dfs_ic);
1101
1102void wma_dfs_detach(struct ieee80211com *dfs_ic);
1103
1104void wma_dfs_configure(struct ieee80211com *ic);
1105
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301106struct dfs_ieee80211_channel *wma_dfs_configure_channel(
1107 struct ieee80211com *dfs_ic,
1108 wmi_channel *chan,
1109 WLAN_PHY_MODE chanmode,
1110 struct wma_vdev_start_req
1111 *req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001112void wma_set_sap_keepalive(tp_wma_handle wma, uint8_t vdev_id);
1113
1114#ifdef REMOVE_PKT_LOG
1115static inline void wma_set_wifi_start_packet_stats(void *wma_handle,
1116 struct sir_wifi_start_log *start_log)
1117{
1118 return;
1119}
1120#endif
1121int wma_rssi_breached_event_handler(void *handle,
1122 u_int8_t *cmd_param_info, u_int32_t len);
1123#ifdef WLAN_FEATURE_MEMDUMP
1124int wma_fw_mem_dump_event_handler(void *handle, u_int8_t *cmd_param_info,
1125 u_int32_t len);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301126QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001127 struct fw_dump_req *mem_dump_req);
1128#else
1129static inline int wma_fw_mem_dump_event_handler(void *handle,
1130 u_int8_t *cmd_param_info, u_int32_t len)
1131{
1132 return 0;
1133}
1134
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301135static inline QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001136 void *mem_dump_req)
1137{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301138 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001139}
1140#endif
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301141QDF_STATUS wma_process_set_ie_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001142 struct vdev_ie_info *ie_info);
1143int wma_peer_assoc_conf_handler(void *handle, uint8_t *cmd_param_info,
1144 uint32_t len);
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001145int wma_vdev_delete_handler(void *handle, uint8_t *cmd_param_info,
1146 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001147
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001148int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
1149 uint32_t len);
1150void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
1151 uint8_t type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001152#endif