1 | /* SPDX-License-Identifier: BSD-3-Clause-Clear */ |
2 | /* |
3 | * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. |
4 | * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. |
5 | */ |
6 | |
7 | #ifndef ATH12K_MAC_H |
8 | #define ATH12K_MAC_H |
9 | |
10 | #include <net/mac80211.h> |
11 | #include <net/cfg80211.h> |
12 | |
13 | struct ath12k; |
14 | struct ath12k_base; |
15 | struct ath12k_hw; |
16 | struct ath12k_pdev_map; |
17 | |
18 | struct ath12k_generic_iter { |
19 | struct ath12k *ar; |
20 | int ret; |
21 | }; |
22 | |
23 | /* number of failed packets (20 packets with 16 sw reties each) */ |
24 | #define ATH12K_KICKOUT_THRESHOLD (20 * 16) |
25 | |
26 | /* Use insanely high numbers to make sure that the firmware implementation |
27 | * won't start, we have the same functionality already in hostapd. Unit |
28 | * is seconds. |
29 | */ |
30 | #define ATH12K_KEEPALIVE_MIN_IDLE 3747 |
31 | #define ATH12K_KEEPALIVE_MAX_IDLE 3895 |
32 | #define ATH12K_KEEPALIVE_MAX_UNRESPONSIVE 3900 |
33 | |
34 | /* FIXME: should these be in ieee80211.h? */ |
35 | #define IEEE80211_VHT_MCS_SUPPORT_0_11_MASK GENMASK(23, 16) |
36 | #define IEEE80211_DISABLE_VHT_MCS_SUPPORT_0_11 BIT(24) |
37 | |
38 | #define ATH12K_CHAN_WIDTH_NUM 14 |
39 | |
40 | #define ATH12K_TX_POWER_MAX_VAL 70 |
41 | #define ATH12K_TX_POWER_MIN_VAL 0 |
42 | |
43 | enum ath12k_supported_bw { |
44 | ATH12K_BW_20 = 0, |
45 | ATH12K_BW_40 = 1, |
46 | ATH12K_BW_80 = 2, |
47 | ATH12K_BW_160 = 3, |
48 | ATH12K_BW_320 = 4, |
49 | }; |
50 | |
51 | extern const struct htt_rx_ring_tlv_filter ath12k_mac_mon_status_filter_default; |
52 | |
53 | void ath12k_mac_destroy(struct ath12k_base *ab); |
54 | void ath12k_mac_unregister(struct ath12k_base *ab); |
55 | int ath12k_mac_register(struct ath12k_base *ab); |
56 | int ath12k_mac_allocate(struct ath12k_base *ab); |
57 | int ath12k_mac_hw_ratecode_to_legacy_rate(u8 hw_rc, u8 preamble, u8 *rateidx, |
58 | u16 *rate); |
59 | u8 ath12k_mac_bitrate_to_idx(const struct ieee80211_supported_band *sband, |
60 | u32 bitrate); |
61 | u8 ath12k_mac_hw_rate_to_idx(const struct ieee80211_supported_band *sband, |
62 | u8 hw_rate, bool cck); |
63 | |
64 | void __ath12k_mac_scan_finish(struct ath12k *ar); |
65 | void ath12k_mac_scan_finish(struct ath12k *ar); |
66 | |
67 | struct ath12k_vif *ath12k_mac_get_arvif(struct ath12k *ar, u32 vdev_id); |
68 | struct ath12k_vif *ath12k_mac_get_arvif_by_vdev_id(struct ath12k_base *ab, |
69 | u32 vdev_id); |
70 | struct ath12k *ath12k_mac_get_ar_by_vdev_id(struct ath12k_base *ab, u32 vdev_id); |
71 | struct ath12k *ath12k_mac_get_ar_by_pdev_id(struct ath12k_base *ab, u32 pdev_id); |
72 | |
73 | void ath12k_mac_drain_tx(struct ath12k *ar); |
74 | void ath12k_mac_peer_cleanup_all(struct ath12k *ar); |
75 | int ath12k_mac_tx_mgmt_pending_free(int buf_id, void *skb, void *ctx); |
76 | enum rate_info_bw ath12k_mac_bw_to_mac80211_bw(enum ath12k_supported_bw bw); |
77 | enum ath12k_supported_bw ath12k_mac_mac80211_bw_to_ath12k_bw(enum rate_info_bw bw); |
78 | enum hal_encrypt_type ath12k_dp_tx_get_encrypt_type(u32 cipher); |
79 | int ath12k_mac_rfkill_enable_radio(struct ath12k *ar, bool enable); |
80 | int ath12k_mac_rfkill_config(struct ath12k *ar); |
81 | #endif |
82 | |