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