blob: 6d2dd9acb7fca796dc8552969e88ed22bf1045a9 [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
Rajeev Kumar8e3e2832015-11-06 16:02:54 -0800104#define WMI_MAX_MHF_ENTRIES 32
105
106
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800107#define MAX_HT_MCS_IDX 8
108#define MAX_VHT_MCS_IDX 10
109#define INVALID_MCS_IDX 255
110
111#define LINK_STATUS_LEGACY 0
112#define LINK_STATUS_VHT 0x1
113#define LINK_STATUS_MIMO 0x2
114#define LINK_SUPPORT_VHT 0x4
115#define LINK_SUPPORT_MIMO 0x8
116
117#define LINK_RATE_VHT 0x3
118
119#define MAX_ENTRY_HOLD_REQ_QUEUE 2
Krishna Kumaar Natarajana5c53bd2015-10-27 11:48:27 -0700120#define MAX_ENTRY_VDEV_RESP_QUEUE 10
121
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800122/**
123 * struct index_data_rate_type - non vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800124 * @mcs_index: mcs rate index
125 * @ht20_rate: HT20 supported rate table
126 * @ht40_rate: HT40 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800127 */
128struct index_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800129 uint8_t mcs_index;
130 uint16_t ht20_rate[2];
131 uint16_t ht40_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800132};
133
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800134/**
135 * struct index_vht_data_rate_type - vht data rate type
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800136 * @mcs_index: mcs rate index
137 * @ht20_rate: VHT20 supported rate table
138 * @ht40_rate: VHT40 supported rate table
139 * @ht80_rate: VHT80 supported rate table
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800140 */
141struct index_vht_data_rate_type {
Ryan Hsu6139d2d2015-11-04 17:29:00 -0800142 uint8_t mcs_index;
143 uint16_t ht20_rate[2];
144 uint16_t ht40_rate[2];
145 uint16_t ht80_rate[2];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800146};
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800147
148/*
149 * wma_main.c functions declarations
150 */
151
152int
153wmi_unified_pdev_set_param(wmi_unified_t wmi_handle, WMI_PDEV_PARAM param_id,
154 uint32_t param_value);
155
156void wma_send_msg(tp_wma_handle wma_handle, uint16_t msg_type,
157 void *body_ptr, uint32_t body_val);
158
159void wma_data_tx_ack_comp_hdlr(void *wma_context,
Nirav Shahcbc6d722016-03-01 16:24:53 +0530160 qdf_nbuf_t netbuf, int32_t status);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800161
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530162QDF_STATUS wma_set_ppsconfig(uint8_t vdev_id, uint16_t pps_param,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800163 int value);
164
165/*
166 * wma_scan_roam.c functions declarations
167 */
168
169#ifdef WLAN_FEATURE_ROAM_OFFLOAD
170void wma_process_roam_invoke(WMA_HANDLE handle,
171 struct wma_roam_invoke_cmd *roaminvoke);
172
173void wma_process_roam_synch_fail(WMA_HANDLE handle,
174 struct roam_offload_synch_fail *synch_fail);
175
176int wma_roam_synch_event_handler(void *handle, uint8_t *event,
177 uint32_t len);
178#endif
179
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530180QDF_STATUS wma_get_buf_start_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800181 tSirScanOffloadReq *scan_req,
Govind Singh498bf2a2016-03-08 15:44:17 +0530182 struct scan_start_params *cmd);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800183
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530184QDF_STATUS wma_get_buf_stop_scan_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800185 wmi_buf_t *buf,
186 int *buf_len,
187 tAbortScanParams *abort_scan_req);
188
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530189QDF_STATUS wma_start_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800190 tSirScanOffloadReq *scan_req, uint16_t msg_type);
191
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530192QDF_STATUS wma_stop_scan(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800193 tAbortScanParams *abort_scan_req);
194
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530195QDF_STATUS wma_update_channel_list(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800196 tSirUpdateChanList *chan_list);
197
198#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530199QDF_STATUS wma_roam_scan_fill_self_caps(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800200 wmi_roam_offload_tlv_param *
201 roam_offload_params,
202 tSirRoamOffloadScanReq *roam_req);
203#endif
204
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530205QDF_STATUS wma_roam_scan_offload_mode(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800206 wmi_start_scan_cmd_fixed_param *
207 scan_cmd_fp,
208 tSirRoamOffloadScanReq *roam_req,
209 uint32_t mode, uint32_t vdev_id);
210
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530211QDF_STATUS wma_roam_scan_offload_rssi_thresh(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800212 tSirRoamOffloadScanReq *roam_req);
213
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530214QDF_STATUS wma_roam_scan_offload_scan_period(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800215 uint32_t scan_period,
216 uint32_t scan_age,
217 uint32_t vdev_id);
218
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530219QDF_STATUS wma_roam_scan_offload_rssi_change(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800220 uint32_t vdev_id,
221 int32_t rssi_change_thresh,
222 uint32_t bcn_rssi_weight,
223 uint32_t hirssi_delay_btw_scans);
224
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530225QDF_STATUS wma_roam_scan_offload_chan_list(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800226 uint8_t chan_count,
227 uint8_t *chan_list,
228 uint8_t list_type, uint32_t vdev_id);
229
230A_UINT32 e_csr_auth_type_to_rsn_authmode(eCsrAuthType authtype,
231 eCsrEncryptionType encr);
232
233A_UINT32 e_csr_encryption_type_to_rsn_cipherset(eCsrEncryptionType encr);
234
235void wma_roam_scan_fill_ap_profile(tp_wma_handle wma_handle,
236 tpAniSirGlobal pMac,
237 tSirRoamOffloadScanReq *roam_req,
238 wmi_ap_profile *ap_profile_p);
239
240void wma_roam_scan_fill_scan_params(tp_wma_handle wma_handle,
241 tpAniSirGlobal pMac,
242 tSirRoamOffloadScanReq *roam_req,
243 wmi_start_scan_cmd_fixed_param *
244 scan_params);
245
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530246QDF_STATUS wma_roam_scan_offload_ap_profile(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800247 wmi_ap_profile *ap_profile_p,
248 uint32_t vdev_id);
249
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530250QDF_STATUS wma_roam_scan_bmiss_cnt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800251 A_INT32 first_bcnt,
252 A_UINT32 final_bcnt, uint32_t vdev_id);
253
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530254QDF_STATUS wma_roam_scan_offload_command(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800255 uint32_t command, uint32_t vdev_id);
256
Varun Reddy Yeturu30bc42c2016-02-04 10:07:30 -0800257QDF_STATUS wma_process_roaming_config(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800258 tSirRoamOffloadScanReq *roam_req);
259
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530260QDF_STATUS wma_roam_preauth_chan_set(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800261 tpSwitchChannelParams params,
262 uint8_t vdev_id);
263
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530264QDF_STATUS wma_roam_preauth_chan_cancel(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800265 tpSwitchChannelParams params,
266 uint8_t vdev_id);
267
268void wma_roam_preauth_scan_event_handler(tp_wma_handle wma_handle,
269 uint8_t vdev_id,
270 wmi_scan_event_fixed_param *
271 wmi_event);
272
273void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params);
274
275#ifdef FEATURE_WLAN_SCAN_PNO
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530276QDF_STATUS wma_pno_start(tp_wma_handle wma, tpSirPNOScanReq pno);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800277
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530278QDF_STATUS wma_pno_stop(tp_wma_handle wma, uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800279
280void wma_config_pno(tp_wma_handle wma, tpSirPNOScanReq pno);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -0700281void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
282 tpSirPNOScanReq pno);
283void wma_scan_cache_updated_ind(tp_wma_handle wma, uint8_t sessionId);
284#else
285static inline void wma_set_pno_channel_prediction(uint8_t *buf_ptr,
286 void *pno)
287{
288 WMA_LOGD("PNO Channel Prediction feature not supported");
289 WMITLV_SET_HDR(buf_ptr, WMITLV_TAG_ARRAY_FIXED_STRUC, 0);
290}
291#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800292
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800293#ifdef WLAN_FEATURE_ROAM_OFFLOAD
294void wma_set_ric_req(tp_wma_handle wma, void *msg, uint8_t is_add_ts);
295#endif
296
297#ifdef FEATURE_WLAN_EXTSCAN
298
299int wma_extscan_start_stop_event_handler(void *handle,
300 uint8_t *cmd_param_info,
301 uint32_t len);
302
303int wma_extscan_operations_event_handler(void *handle,
304 uint8_t *cmd_param_info,
305 uint32_t len);
306
307int wma_extscan_table_usage_event_handler(void *handle,
308 uint8_t *cmd_param_info,
309 uint32_t len);
310
311int wma_extscan_capabilities_event_handler(void *handle,
312 uint8_t *cmd_param_info,
313 uint32_t len);
314
315int wma_extscan_hotlist_match_event_handler(void *handle,
316 uint8_t *cmd_param_info,
317 uint32_t len);
318
319int wma_extscan_cached_results_event_handler(void *handle,
320 uint8_t *cmd_param_info,
321 uint32_t len);
322
323int wma_extscan_change_results_event_handler(void *handle,
324 uint8_t *cmd_param_info,
325 uint32_t len);
326
327int wma_passpoint_match_event_handler(void *handle,
328 uint8_t *cmd_param_info,
329 uint32_t len);
330
331int
332wma_extscan_hotlist_ssid_match_event_handler(void *handle,
333 uint8_t *cmd_param_info,
334 uint32_t len);
335#endif
336
337void wma_register_extscan_event_handler(tp_wma_handle wma_handle);
338
339#ifdef FEATURE_WLAN_EXTSCAN
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530340QDF_STATUS wma_get_buf_extscan_start_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800341 tSirWifiScanCmdReqParams *pstart,
342 wmi_buf_t *buf, int *buf_len);
343
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530344QDF_STATUS wma_start_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800345 tSirWifiScanCmdReqParams *pstart);
346
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530347QDF_STATUS wma_stop_extscan(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800348 tSirExtScanStopReqParams *pstopcmd);
349
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530350QDF_STATUS wma_get_buf_extscan_hotlist_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800351 tSirExtScanSetBssidHotListReqParams *
352 photlist, int *buf_len);
353
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530354QDF_STATUS wma_extscan_start_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800355 tSirExtScanSetBssidHotListReqParams
356 *photlist);
357
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530358QDF_STATUS wma_extscan_stop_hotlist_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800359 tSirExtScanResetBssidHotlistReqParams
360 *photlist_reset);
361
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530362QDF_STATUS wma_get_buf_extscan_change_monitor_cmd(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800363 tSirExtScanSetSigChangeReqParams
364 *psigchange, wmi_buf_t *buf,
365 int *buf_len);
366
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530367QDF_STATUS wma_extscan_start_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800368 tSirExtScanSetSigChangeReqParams *
369 psigchange);
370
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530371QDF_STATUS wma_extscan_stop_change_monitor(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800372 tSirExtScanResetSignificantChangeReqParams
373 *pResetReq);
374
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530375QDF_STATUS wma_extscan_get_cached_results(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800376 tSirExtScanGetCachedResultsReqParams *
377 pcached_results);
378
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530379QDF_STATUS wma_extscan_get_capabilities(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800380 tSirGetExtScanCapabilitiesReqParams *
381 pgetcapab);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530382QDF_STATUS wma_set_epno_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800383 struct wifi_epno_params *req);
384
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530385QDF_STATUS wma_set_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800386 struct wifi_passpoint_req *req);
387
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530388QDF_STATUS wma_reset_passpoint_network_list(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800389 struct wifi_passpoint_req *req);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530390QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800391wma_set_ssid_hotlist(tp_wma_handle wma,
392 struct sir_set_ssid_hotlist_request *request);
393#endif
394
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530395QDF_STATUS wma_ipa_offload_enable_disable(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800396 struct sir_ipa_offload_enable_disable *ipa_offload);
397
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800398void wma_process_unit_test_cmd(WMA_HANDLE handle,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530399 t_wma_unit_test_cmd * wma_utest);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800400
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530401QDF_STATUS wma_scan_probe_setoui(tp_wma_handle wma, tSirScanMacOui *psetoui);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800402
403int wma_scan_event_callback(WMA_HANDLE handle, uint8_t *data, uint32_t len);
404
405void wma_roam_better_ap_handler(tp_wma_handle wma, uint32_t vdev_id);
406
407int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
408 uint32_t len);
409
410#ifdef FEATURE_WLAN_SCAN_PNO
411int wma_nlo_match_evt_handler(void *handle, uint8_t *event, uint32_t len);
412
413int wma_nlo_scan_cmp_evt_handler(void *handle, uint8_t *event, uint32_t len);
414#endif
415
416#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Varun Reddy Yeturud5939f82015-12-24 18:14:02 -0800417void wma_process_roam_synch_complete(WMA_HANDLE handle, uint8_t vdev_id);
418static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
419 uint8_t vdev_id)
420{
421 return wma->interfaces[vdev_id].roam_synch_in_progress;
422}
423#else
424static inline bool wma_is_roam_synch_in_progress(tp_wma_handle wma,
425 uint8_t vdev_id)
426{
427 return false;
428}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800429#endif
430
431/*
432 * wma_dev_if.c functions declarations
433 */
434
435void *wma_find_vdev_by_addr(tp_wma_handle wma, uint8_t *addr,
436 uint8_t *vdev_id);
437
438/**
439 * wma_find_vdev_by_id() - Returns vdev handle for given vdev id.
440 * @wma - wma handle
441 * @vdev_id - vdev ID
442 *
443 * Return: Returns vdev handle if given vdev id is valid.
444 * Otherwise returns NULL.
445 */
446static inline void *wma_find_vdev_by_id(tp_wma_handle wma, uint8_t vdev_id)
447{
448 if (vdev_id > wma->max_bssid)
449 return NULL;
450
451 return wma->interfaces[vdev_id].handle;
452}
453
454/**
455 * wma_get_vdev_count() - Returns number of active vdev.
456 * @wma - wma handle
457 *
458 * Return: Returns valid vdev count.
459 */
460static inline uint8_t wma_get_vdev_count(tp_wma_handle wma)
461{
462 uint8_t vdev_count = 0, i;
463
464 for (i = 0; i < wma->max_bssid; i++) {
465 if (wma->interfaces[i].handle)
466 vdev_count++;
467 }
468 return vdev_count;
469}
470
471bool wma_is_vdev_in_ap_mode(tp_wma_handle wma, uint8_t vdev_id);
472
473#ifdef QCA_IBSS_SUPPORT
474bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
Houston Hoffman79b4af22015-10-06 12:01:08 -0700475#else
476/**
477 * wma_is_vdev_in_ibss_mode(): dummy function
478 * @wma: wma handle
479 * @vdev_id: vdev id
480 *
481 * Return false since no vdev can be in ibss mode without ibss support
482 */
483static inline
484bool wma_is_vdev_in_ibss_mode(tp_wma_handle wma, uint8_t vdev_id);
485{
486 return false;
487}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800488#endif
489
490/**
Houston Hoffman79b4af22015-10-06 12:01:08 -0700491 * wma_is_vdev_in_beaconning_mode() - check if vdev is in a beaconning mode
492 * @wma: wma handle
493 * @vdev_id: vdev id
494 *
495 * Helper function to know whether given vdev id
496 * is in a beaconning mode or not.
497 *
498 * Return: True if vdev needs to beacon.
499 */
500static inline
501bool wma_is_vdev_in_beaconning_mode(tp_wma_handle wma, uint8_t vdev_id)
502{
503 return wma_is_vdev_in_ap_mode(wma, vdev_id) ||
504 wma_is_vdev_in_ibss_mode(wma, vdev_id);
505}
506
507/**
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800508 * wma_find_bssid_by_vdev_id() - Get the BSS ID corresponding to the vdev ID
509 * @wma - wma handle
510 * @vdev_id - vdev ID
511 *
512 * Return: Returns pointer to bssid on success,
513 * otherwise returns NULL.
514 */
515static inline uint8_t *wma_find_bssid_by_vdev_id(tp_wma_handle wma,
516 uint8_t vdev_id)
517{
518 if (vdev_id >= wma->max_bssid)
519 return NULL;
520
521 return wma->interfaces[vdev_id].bssid;
522}
523
524void *wma_find_vdev_by_bssid(tp_wma_handle wma, uint8_t *bssid,
525 uint8_t *vdev_id);
526
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530527QDF_STATUS wma_vdev_detach(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800528 struct del_sta_self_params *pdel_sta_self_req_param,
529 uint8_t generateRsp);
530
531int wma_vdev_start_resp_handler(void *handle, uint8_t *cmd_param_info,
532 uint32_t len);
533
Govind Singhd76a5b02016-03-08 15:12:14 +0530534QDF_STATUS wma_vdev_set_param(wmi_unified_t wmi_handle, uint32_t if_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800535 uint32_t param_id, uint32_t param_value);
536
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800537void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
538 uint8_t vdev_id, ol_txrx_peer_handle peer,
539 bool roam_synch_in_progress);
540
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530541QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800542 ol_txrx_vdev_handle vdev,
543 u8 peer_addr[IEEE80211_ADDR_LEN],
544 uint32_t peer_type, uint8_t vdev_id,
545 bool roam_synch_in_progress);
546
547int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
548 u32 len);
549
550ol_txrx_vdev_handle wma_vdev_attach(tp_wma_handle wma_handle,
551 struct add_sta_self_params *self_sta_req,
552 uint8_t generateRsp);
553
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530554QDF_STATUS wma_vdev_start(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800555 struct wma_vdev_start_req *req, bool isRestart);
556
557void wma_vdev_resp_timer(void *data);
558
559struct wma_target_req *wma_fill_vdev_req(tp_wma_handle wma,
560 uint8_t vdev_id,
561 uint32_t msg_type, uint8_t type,
562 void *params, uint32_t timeout);
563
564void wma_hold_req_timer(void *data);
565struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
566 uint8_t vdev_id, uint32_t msg_type,
567 uint8_t type, void *params,
568 uint32_t timeout);
569
570void wma_remove_vdev_req(tp_wma_handle wma, uint8_t vdev_id,
571 uint8_t type);
572
573void wma_add_bss(tp_wma_handle wma, tpAddBssParams params);
574
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800575void wma_add_sta(tp_wma_handle wma, tpAddStaParams add_sta);
576
577void wma_delete_sta(tp_wma_handle wma, tpDeleteStaParams del_sta);
578
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800579void wma_delete_bss(tp_wma_handle wma, tpDeleteBssParams params);
580
581int32_t wma_find_vdev_by_type(tp_wma_handle wma, int32_t type);
582
583void wma_set_vdev_intrabss_fwd(tp_wma_handle wma_handle,
584 tpDisableIntraBssFwd pdis_intra_fwd);
585
586/*
587 * wma_mgmt.c functions declarations
588 */
589
590int wma_beacon_swba_handler(void *handle, uint8_t *event, uint32_t len);
591
592int wma_peer_sta_kickout_event_handler(void *handle, u8 *event, u32 len);
593
594void wma_extscan_wow_event_callback(void *handle, void *event, uint32_t len);
595
596int wma_unified_bcntx_status_event_handler(void *handle,
597 uint8_t *cmd_param_info,
598 uint32_t len);
599
mukul sharma72c8b222015-09-04 17:02:01 +0530600void wma_set_sta_sa_query_param(tp_wma_handle wma,
601 uint8_t vdev_id);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800602
603void wma_set_sta_keep_alive(tp_wma_handle wma, uint8_t vdev_id,
604 uint32_t method, uint32_t timeperiod,
605 uint8_t *hostv4addr, uint8_t *destv4addr,
606 uint8_t *destmac);
607
608int wma_vdev_install_key_complete_event_handler(void *handle,
609 uint8_t *event,
610 uint32_t len);
611
Govind Singhb30d4c02016-03-24 11:01:23 +0530612QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800613 tSirNwType nw_type,
614 tpAddStaParams params);
615
Himanshu Agarwal009f1572016-03-09 17:26:02 +0530616QDF_STATUS wmi_unified_vdev_set_gtx_cfg_send(wmi_unified_t wmi_handle,
617 uint32_t if_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800618 gtx_config_t *gtx_info);
619
620void wma_update_protection_mode(tp_wma_handle wma, uint8_t vdev_id,
621 uint8_t llbcoexist);
622
623void wma_process_update_beacon_params(tp_wma_handle wma,
624 tUpdateBeaconParams *bcn_params);
625
626void wma_update_cfg_params(tp_wma_handle wma, tSirMsgQ *cfgParam);
627
628void wma_set_bsskey(tp_wma_handle wma_handle, tpSetBssKeyParams key_info);
629
630void wma_adjust_ibss_heart_beat_timer(tp_wma_handle wma,
631 uint8_t vdev_id,
632 int8_t peer_num_delta);
633
634void wma_set_stakey(tp_wma_handle wma_handle, tpSetStaKeyParams key_info);
635
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530636QDF_STATUS wma_process_update_edca_param_req(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800637 tEdcaParams *edca_params);
638
639int wma_tbttoffset_update_event_handler(void *handle, uint8_t *event,
640 uint32_t len);
641
642void wma_send_probe_rsp_tmpl(tp_wma_handle wma,
643 tpSendProbeRespParams probe_rsp_info);
644
645void wma_send_beacon(tp_wma_handle wma, tpSendbeaconParams bcn_info);
646
647void wma_set_keepalive_req(tp_wma_handle wma,
648 tSirKeepAliveReq *keepalive);
649
650void wma_beacon_miss_handler(tp_wma_handle wma, uint32_t vdev_id);
651
652void wma_process_update_opmode(tp_wma_handle wma_handle,
653 tUpdateVHTOpMode *update_vht_opmode);
654
655void wma_process_update_rx_nss(tp_wma_handle wma_handle,
656 tUpdateRxNss *update_rx_nss);
657
658void wma_process_update_membership(tp_wma_handle wma_handle,
659 tUpdateMembership *membership);
660
661void wma_process_update_userpos(tp_wma_handle wma_handle,
662 tUpdateUserPos *userpos);
663
664void wma_hidden_ssid_vdev_restart(tp_wma_handle wma_handle,
665 tHalHiddenSsidVdevRestart *pReq);
666
667/*
668 * wma_power.c functions declarations
669 */
670
671void wma_enable_sta_ps_mode(tp_wma_handle wma, tpEnablePsParams ps_req);
672
Govind Singhd76a5b02016-03-08 15:12:14 +0530673QDF_STATUS wma_unified_set_sta_ps_param(wmi_unified_t wmi_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800674 uint32_t vdev_id, uint32_t param,
675 uint32_t value);
676
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530677QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800678wma_set_ibss_pwrsave_params(tp_wma_handle wma, uint8_t vdev_id);
679
Govind Singhd76a5b02016-03-08 15:12:14 +0530680QDF_STATUS wma_set_ap_peer_uapsd(tp_wma_handle wma, uint32_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800681 uint8_t *peer_addr, uint8_t uapsd_value,
682 uint8_t max_sp);
683
684void wma_update_edca_params_for_ac(tSirMacEdcaParamRecord *edca_param,
685 wmi_wmm_vparams *wmm_param, int ac);
686
687void wma_set_tx_power(WMA_HANDLE handle,
688 tMaxTxPowerParams *tx_pwr_params);
689
690void wma_set_max_tx_power(WMA_HANDLE handle,
691 tMaxTxPowerParams *tx_pwr_params);
692
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800693void wma_disable_sta_ps_mode(tp_wma_handle wma, tpDisablePsParams ps_req);
694
695void wma_enable_uapsd_mode(tp_wma_handle wma, tpEnableUapsdParams ps_req);
696
697void wma_disable_uapsd_mode(tp_wma_handle wma,
698 tpDisableUapsdParams ps_req);
699
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530700QDF_STATUS wma_get_temperature(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800701
702int wma_pdev_temperature_evt_handler(void *handle, uint8_t *event,
703 uint32_t len);
704
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530705QDF_STATUS wma_process_tx_power_limits(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800706 tSirTxPowerLimit *ptxlim);
707
708void wma_update_noa(struct beacon_info *beacon,
709 struct p2p_sub_element_noa *noa_ie);
710
711void wma_update_probe_resp_noa(tp_wma_handle wma_handle,
712 struct p2p_sub_element_noa *noa_ie);
713
714int wma_p2p_noa_event_handler(void *handle, uint8_t *event,
715 uint32_t len);
716
717void wma_process_set_p2pgo_noa_req(tp_wma_handle wma,
718 tP2pPsParams *ps_params);
719
720void wma_process_set_mimops_req(tp_wma_handle wma_handle,
721 tSetMIMOPS *mimops);
722
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530723QDF_STATUS wma_set_mimops(tp_wma_handle wma, uint8_t vdev_id, int value);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800724
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530725QDF_STATUS wma_notify_modem_power_state(void *wma_ptr,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800726 tSirModemPowerStateInd *pReq);
727
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530728QDF_STATUS wma_set_smps_params(tp_wma_handle wma, uint8_t vdev_id,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800729 int value);
730
731void wma_set_suspend_dtim(tp_wma_handle wma);
732
733void wma_set_resume_dtim(tp_wma_handle wma);
734
735/*
736 * wma_data.c functions declarations
737 */
738
739
740void wma_set_bss_rate_flags(struct wma_txrx_node *iface,
741 tpAddBssParams add_bss);
742
743int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params);
744
745void wma_update_txrx_chainmask(int num_rf_chains, int *cmd_value);
746
747int wma_peer_state_change_event_handler(void *handle,
748 uint8_t *event_buff,
749 uint32_t len);
750
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530751QDF_STATUS wma_set_enable_disable_mcc_adaptive_scheduler(uint32_t
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800752 mcc_adaptive_scheduler);
753
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530754QDF_STATUS wma_set_mcc_channel_time_latency
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800755 (tp_wma_handle wma,
756 uint32_t mcc_channel, uint32_t mcc_channel_time_latency);
757
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530758QDF_STATUS wma_set_mcc_channel_time_quota
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800759 (tp_wma_handle wma,
760 uint32_t adapter_1_chan_number,
761 uint32_t adapter_1_quota, uint32_t adapter_2_chan_number);
762
763void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params);
764
765void wma_unpause_vdev(tp_wma_handle wma);
766
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530767QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800768 tSirRateUpdateInd *
769 pRateUpdateParams);
770
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530771QDF_STATUS wma_tx_attach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800772
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530773QDF_STATUS wma_tx_detach(tp_wma_handle wma_handle);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800774
775#if defined(QCA_LL_LEGACY_TX_FLOW_CONTROL) || defined(QCA_LL_TX_FLOW_CONTROL_V2)
776int wma_mcc_vdev_tx_pause_evt_handler(void *handle, uint8_t *event,
777 uint32_t len);
778#endif
779
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530780QDF_STATUS wma_process_init_thermal_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800781 t_thermal_mgmt *pThermalParams);
782
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530783QDF_STATUS wma_process_set_thermal_level(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800784 uint8_t thermal_level);
785
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530786QDF_STATUS wma_set_thermal_mgmt(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800787 t_thermal_cmd_params thermal_info);
788
789int wma_thermal_mgmt_evt_handler(void *handle, uint8_t *event,
790 uint32_t len);
791
Rajeev Kumar8e3e2832015-11-06 16:02:54 -0800792int wma_ibss_peer_info_event_handler(void *handle, uint8_t *data,
793 uint32_t len);
794
795int wma_fast_tx_fail_event_handler(void *handle, uint8_t *data,
796 uint32_t len);
797
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800798/*
799 * wma_utils.c functions declarations
800 */
801
802#ifdef WLAN_FEATURE_STATS_EXT
803int wma_stats_ext_event_handler(void *handle, uint8_t *event_buf,
804 uint32_t len);
805#endif
806
807tSmpsModeValue host_map_smps_mode(A_UINT32 fw_smps_mode);
Archana Ramachandran20d2e232016-02-11 16:58:40 -0800808int wma_smps_mode_to_force_mode_param(uint8_t smps_mode);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800809
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
Kiran Kumar Lokere13644672016-02-29 15:40:10 -0800893WLAN_PHY_MODE wma_chan_to_mode(u8 chan, enum phy_ch_width chan_width,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800894 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);
Srinivas Girigowda515a9ef2015-12-11 11:00:48 -08001004QDF_STATUS wma_plm_start(tp_wma_handle wma, const tpSirPlmReq plm);
1005QDF_STATUS wma_plm_stop(tp_wma_handle wma, const tpSirPlmReq plm);
1006void wma_config_plm(tp_wma_handle wma, tpSirPlmReq plm);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001007#endif
1008
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301009QDF_STATUS wma_process_mcbc_set_filter_req(tp_wma_handle wma_handle,
1010 tSirRcvFltMcAddrList * mcbc_param);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001011#ifdef WLAN_FEATURE_GTK_OFFLOAD
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301012QDF_STATUS wma_process_gtk_offload_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001013 tpSirGtkOffloadParams params);
1014
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301015QDF_STATUS wma_process_gtk_offload_getinfo_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001016 tpSirGtkOffloadGetInfoRspParams
1017 params);
1018#endif
1019
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301020QDF_STATUS wma_enable_arp_ns_offload(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001021 tpSirHostOffloadReq pHostOffloadParams,
1022 bool bArpOnly);
1023
Rajeev Kumar8e3e2832015-11-06 16:02:54 -08001024QDF_STATUS wma_process_cesium_enable_ind(tp_wma_handle wma);
1025
1026QDF_STATUS wma_process_get_peer_info_req
1027 (tp_wma_handle wma, tSirIbssGetPeerInfoReqParams *pReq);
1028
1029QDF_STATUS wma_process_tx_fail_monitor_ind
1030 (tp_wma_handle wma, tAniTXFailMonitorInd *pReq);
1031
1032QDF_STATUS wma_process_rmc_enable_ind(tp_wma_handle wma);
1033
1034QDF_STATUS wma_process_rmc_disable_ind(tp_wma_handle wma);
1035
1036QDF_STATUS wma_process_rmc_action_period_ind(tp_wma_handle wma);
1037
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301038QDF_STATUS wma_process_add_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001039 tSirAddPeriodicTxPtrn *
1040 pAddPeriodicTxPtrnParams);
1041
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301042QDF_STATUS wma_process_del_periodic_tx_ptrn_ind(WMA_HANDLE handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001043 tSirDelPeriodicTxPtrn *
1044 pDelPeriodicTxPtrnParams);
1045
1046#ifdef WLAN_FEATURE_STATS_EXT
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301047QDF_STATUS wma_stats_ext_req(void *wma_ptr, tpStatsExtRequest preq);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001048#endif
1049
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301050QDF_STATUS wma_process_ibss_route_table_update_ind(void *wma_handle,
1051 tAniIbssRouteTable * pData);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001052
1053#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
Himanshu Agarwal44195412016-03-09 13:03:54 +05301054QDF_STATUS wma_enable_ext_wow(tp_wma_handle wma, tpSirExtWoWParams params);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001055
1056int wma_set_app_type1_params_in_fw(tp_wma_handle wma,
1057 tpSirAppType1Params appType1Params);
1058
Himanshu Agarwal44195412016-03-09 13:03:54 +05301059QDF_STATUS wma_set_app_type2_params_in_fw(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001060 tpSirAppType2Params appType2Params);
1061#endif
1062
1063#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1064int wma_auto_shutdown_event_handler(void *handle, uint8_t *event,
1065 uint32_t len);
1066
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301067QDF_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001068 tSirAutoShutdownCmdParams *
1069 auto_sh_cmd);
1070#endif
1071
1072#ifdef WLAN_FEATURE_NAN
1073
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301074QDF_STATUS wma_nan_req(void *wma_ptr, tpNanRequest nan_req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001075#endif
1076
1077#ifdef DHCP_SERVER_OFFLOAD
1078int wma_process_dhcpserver_offload(tp_wma_handle wma_handle,
1079 tSirDhcpSrvOffloadInfo *
1080 pDhcpSrvOffloadInfo);
1081#endif
1082
1083#ifdef WLAN_FEATURE_GPIO_LED_FLASHING
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301084QDF_STATUS wma_set_led_flashing(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001085 tSirLedFlashingReq *flashing);
1086#endif
1087
1088#ifdef FEATURE_WLAN_CH_AVOID
1089int wma_channel_avoid_evt_handler(void *handle, uint8_t *event,
1090 uint32_t len);
1091
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301092QDF_STATUS wma_process_ch_avoid_update_req(tp_wma_handle wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001093 tSirChAvoidUpdateReq *
1094 ch_avoid_update_req);
1095#endif
1096
Govind Singhd76a5b02016-03-08 15:12:14 +05301097QDF_STATUS wma_suspend_target(WMA_HANDLE handle, int disable_target_intr);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001098
1099#ifdef FEATURE_WLAN_TDLS
1100
Himanshu Agarwal44195412016-03-09 13:03:54 +05301101QDF_STATUS wma_update_fw_tdls_state(WMA_HANDLE handle, void *pwmaTdlsparams);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001102int wma_update_tdls_peer_state(WMA_HANDLE handle,
1103 tTdlsPeerStateParams *peerStateParams);
1104/**
1105 * wma_set_tdls_offchan_mode() - set tdls off channel mode
1106 * @handle: wma handle
1107 * @chan_switch_params: Pointer to tdls channel switch parameter structure
1108 *
1109 * This function sets tdls off channel mode
1110 *
1111 * Return: 0 on success; negative errno otherwise
1112 */
Himanshu Agarwal44195412016-03-09 13:03:54 +05301113QDF_STATUS wma_set_tdls_offchan_mode(WMA_HANDLE wma_handle,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001114 tdls_chan_switch_params *chan_switch_params);
1115#endif
1116
1117struct ieee80211com *wma_dfs_attach(struct ieee80211com *dfs_ic);
1118
1119void wma_dfs_detach(struct ieee80211com *dfs_ic);
1120
1121void wma_dfs_configure(struct ieee80211com *ic);
1122
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301123struct dfs_ieee80211_channel *wma_dfs_configure_channel(
1124 struct ieee80211com *dfs_ic,
Siddarth Poddar17dc4712016-03-09 16:30:27 +05301125 uint32_t band_center_freq1,
1126 uint32_t band_center_freq2,
Chandrasekaran, Manishekar22a7e1e2015-11-05 10:38:49 +05301127 struct wma_vdev_start_req
1128 *req);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001129void wma_set_sap_keepalive(tp_wma_handle wma, uint8_t vdev_id);
1130
1131#ifdef REMOVE_PKT_LOG
1132static inline void wma_set_wifi_start_packet_stats(void *wma_handle,
1133 struct sir_wifi_start_log *start_log)
1134{
1135 return;
1136}
1137#endif
1138int wma_rssi_breached_event_handler(void *handle,
1139 u_int8_t *cmd_param_info, u_int32_t len);
1140#ifdef WLAN_FEATURE_MEMDUMP
1141int wma_fw_mem_dump_event_handler(void *handle, u_int8_t *cmd_param_info,
1142 u_int32_t len);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301143QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001144 struct fw_dump_req *mem_dump_req);
1145#else
1146static inline int wma_fw_mem_dump_event_handler(void *handle,
1147 u_int8_t *cmd_param_info, u_int32_t len)
1148{
1149 return 0;
1150}
1151
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301152static inline QDF_STATUS wma_process_fw_mem_dump_req(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001153 void *mem_dump_req)
1154{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301155 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001156}
1157#endif
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05301158QDF_STATUS wma_process_set_ie_info(tp_wma_handle wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001159 struct vdev_ie_info *ie_info);
1160int wma_peer_assoc_conf_handler(void *handle, uint8_t *cmd_param_info,
1161 uint32_t len);
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001162int wma_vdev_delete_handler(void *handle, uint8_t *cmd_param_info,
1163 uint32_t len);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001164
Sandeep Puligilla19ddda22016-01-05 12:18:02 -08001165int wma_peer_delete_handler(void *handle, uint8_t *cmd_param_info,
1166 uint32_t len);
1167void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
1168 uint8_t type);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001169#endif