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