xref: /linux/drivers/net/wireless/ath/ath12k/debugfs.h (revision 0b897fbd900e12a08baa3d1a0457944046a882ea)
1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2 /*
3  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
4  * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
5  */
6 
7 #ifndef _ATH12K_DEBUGFS_H_
8 #define _ATH12K_DEBUGFS_H_
9 
10 #ifdef CONFIG_ATH12K_DEBUGFS
11 void ath12k_debugfs_soc_create(struct ath12k_base *ab);
12 void ath12k_debugfs_soc_destroy(struct ath12k_base *ab);
13 void ath12k_debugfs_register(struct ath12k *ar);
14 void ath12k_debugfs_unregister(struct ath12k *ar);
15 void ath12k_debugfs_fw_stats_process(struct ath12k *ar,
16 				     struct ath12k_fw_stats *stats);
17 void ath12k_debugfs_op_vif_add(struct ieee80211_hw *hw,
18 			       struct ieee80211_vif *vif);
19 
20 static inline bool ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k *ar)
21 {
22 	return ar->debug.extd_rx_stats;
23 }
24 
25 static inline int ath12k_debugfs_rx_filter(struct ath12k *ar)
26 {
27 	return ar->debug.rx_filter;
28 }
29 
30 #define ATH12K_CCK_RATES			4
31 #define ATH12K_OFDM_RATES			8
32 #define ATH12K_HT_RATES				8
33 #define ATH12K_VHT_RATES			12
34 #define ATH12K_HE_RATES				12
35 #define ATH12K_HE_RATES_WITH_EXTRA_MCS		14
36 #define ATH12K_EHT_RATES			16
37 #define HE_EXTRA_MCS_SUPPORT			GENMASK(31, 16)
38 #define ATH12K_NSS_1				1
39 #define ATH12K_NSS_4				4
40 #define ATH12K_NSS_8				8
41 #define ATH12K_HW_NSS(_rcode)			(((_rcode) >> 5) & 0x7)
42 #define TPC_STATS_WAIT_TIME			(1 * HZ)
43 #define MAX_TPC_PREAM_STR_LEN			7
44 #define TPC_INVAL				-128
45 #define TPC_MAX					127
46 #define TPC_STATS_WAIT_TIME			(1 * HZ)
47 #define TPC_STATS_TOT_ROW			700
48 #define TPC_STATS_TOT_COLUMN			100
49 #define MODULATION_LIMIT			126
50 
51 #define ATH12K_TPC_STATS_BUF_SIZE	(TPC_STATS_TOT_ROW * TPC_STATS_TOT_COLUMN)
52 
53 enum wmi_tpc_pream_bw {
54 	WMI_TPC_PREAM_CCK,
55 	WMI_TPC_PREAM_OFDM,
56 	WMI_TPC_PREAM_HT20,
57 	WMI_TPC_PREAM_HT40,
58 	WMI_TPC_PREAM_VHT20,
59 	WMI_TPC_PREAM_VHT40,
60 	WMI_TPC_PREAM_VHT80,
61 	WMI_TPC_PREAM_VHT160,
62 	WMI_TPC_PREAM_HE20,
63 	WMI_TPC_PREAM_HE40,
64 	WMI_TPC_PREAM_HE80,
65 	WMI_TPC_PREAM_HE160,
66 	WMI_TPC_PREAM_EHT20,
67 	WMI_TPC_PREAM_EHT40,
68 	WMI_TPC_PREAM_EHT60,
69 	WMI_TPC_PREAM_EHT80,
70 	WMI_TPC_PREAM_EHT120,
71 	WMI_TPC_PREAM_EHT140,
72 	WMI_TPC_PREAM_EHT160,
73 	WMI_TPC_PREAM_EHT200,
74 	WMI_TPC_PREAM_EHT240,
75 	WMI_TPC_PREAM_EHT280,
76 	WMI_TPC_PREAM_EHT320,
77 	WMI_TPC_PREAM_MAX
78 };
79 
80 enum ath12k_debug_tpc_stats_ctl_mode {
81 	ATH12K_TPC_STATS_CTL_MODE_LEGACY_5GHZ_6GHZ,
82 	ATH12K_TPC_STATS_CTL_MODE_HT_VHT20_5GHZ_6GHZ,
83 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT20_5GHZ_6GHZ,
84 	ATH12K_TPC_STATS_CTL_MODE_HT_VHT40_5GHZ_6GHZ,
85 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT40_5GHZ_6GHZ,
86 	ATH12K_TPC_STATS_CTL_MODE_VHT80_5GHZ_6GHZ,
87 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT80_5GHZ_6GHZ,
88 	ATH12K_TPC_STATS_CTL_MODE_VHT160_5GHZ_6GHZ,
89 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT160_5GHZ_6GHZ,
90 	ATH12K_TPC_STATS_CTL_MODE_HE_EHT320_5GHZ_6GHZ,
91 	ATH12K_TPC_STATS_CTL_MODE_CCK_2GHZ,
92 	ATH12K_TPC_STATS_CTL_MODE_LEGACY_2GHZ,
93 	ATH12K_TPC_STATS_CTL_MODE_HT20_2GHZ,
94 	ATH12K_TPC_STATS_CTL_MODE_HT40_2GHZ,
95 
96 	ATH12K_TPC_STATS_CTL_MODE_EHT80_SU_PUNC20 = 23,
97 	ATH12K_TPC_STATS_CTL_MODE_EHT160_SU_PUNC20,
98 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC40,
99 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC80,
100 	ATH12K_TPC_STATS_CTL_MODE_EHT320_SU_PUNC120
101 };
102 
103 enum ath12k_debug_tpc_stats_support_modes {
104 	ATH12K_TPC_STATS_SUPPORT_160 = 0,
105 	ATH12K_TPC_STATS_SUPPORT_320,
106 	ATH12K_TPC_STATS_SUPPORT_AX,
107 	ATH12K_TPC_STATS_SUPPORT_AX_EXTRA_MCS,
108 	ATH12K_TPC_STATS_SUPPORT_BE,
109 	ATH12K_TPC_STATS_SUPPORT_BE_PUNC,
110 };
111 #else
112 static inline void ath12k_debugfs_soc_create(struct ath12k_base *ab)
113 {
114 }
115 
116 static inline void ath12k_debugfs_soc_destroy(struct ath12k_base *ab)
117 {
118 }
119 
120 static inline void ath12k_debugfs_register(struct ath12k *ar)
121 {
122 }
123 
124 static inline void ath12k_debugfs_unregister(struct ath12k *ar)
125 {
126 }
127 
128 static inline void ath12k_debugfs_fw_stats_process(struct ath12k *ar,
129 						   struct ath12k_fw_stats *stats)
130 {
131 }
132 
133 static inline bool ath12k_debugfs_is_extd_rx_stats_enabled(struct ath12k *ar)
134 {
135 	return false;
136 }
137 
138 static inline int ath12k_debugfs_rx_filter(struct ath12k *ar)
139 {
140 	return 0;
141 }
142 
143 static inline void ath12k_debugfs_op_vif_add(struct ieee80211_hw *hw,
144 					     struct ieee80211_vif *vif)
145 {
146 }
147 #endif /* CONFIG_ATH12K_DEBUGFS */
148 
149 #endif /* _ATH12K_DEBUGFS_H_ */
150