1f2c3c952SOleksij Rempel /* 2f2c3c952SOleksij Rempel * Copyright (c) 2008-2011 Atheros Communications Inc. 3f2c3c952SOleksij Rempel * 4f2c3c952SOleksij Rempel * Permission to use, copy, modify, and/or distribute this software for any 5f2c3c952SOleksij Rempel * purpose with or without fee is hereby granted, provided that the above 6f2c3c952SOleksij Rempel * copyright notice and this permission notice appear in all copies. 7f2c3c952SOleksij Rempel * 8f2c3c952SOleksij Rempel * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9f2c3c952SOleksij Rempel * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10f2c3c952SOleksij Rempel * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11f2c3c952SOleksij Rempel * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12f2c3c952SOleksij Rempel * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13f2c3c952SOleksij Rempel * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14f2c3c952SOleksij Rempel * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15f2c3c952SOleksij Rempel */ 16f2c3c952SOleksij Rempel 17b5a0c86aSOleksij Rempel 18b5a0c86aSOleksij Rempel 19b5a0c86aSOleksij Rempel /** 20b5a0c86aSOleksij Rempel * struct ath_rx_stats - RX Statistics 21b5a0c86aSOleksij Rempel * @rx_pkts_all: No. of total frames received, including ones that 22b5a0c86aSOleksij Rempel may have had errors. 23b5a0c86aSOleksij Rempel * @rx_bytes_all: No. of total bytes received, including ones that 24b5a0c86aSOleksij Rempel may have had errors. 25b5a0c86aSOleksij Rempel * @crc_err: No. of frames with incorrect CRC value 26b5a0c86aSOleksij Rempel * @decrypt_crc_err: No. of frames whose CRC check failed after 27b5a0c86aSOleksij Rempel decryption process completed 28b5a0c86aSOleksij Rempel * @phy_err: No. of frames whose reception failed because the PHY 29b5a0c86aSOleksij Rempel encountered an error 30b5a0c86aSOleksij Rempel * @mic_err: No. of frames with incorrect TKIP MIC verification failure 31b5a0c86aSOleksij Rempel * @pre_delim_crc_err: Pre-Frame delimiter CRC error detections 32b5a0c86aSOleksij Rempel * @post_delim_crc_err: Post-Frame delimiter CRC error detections 33b5a0c86aSOleksij Rempel * @decrypt_busy_err: Decryption interruptions counter 34b5a0c86aSOleksij Rempel * @phy_err_stats: Individual PHY error statistics 35b5a0c86aSOleksij Rempel * @rx_len_err: No. of frames discarded due to bad length. 36b5a0c86aSOleksij Rempel * @rx_oom_err: No. of frames dropped due to OOM issues. 37b5a0c86aSOleksij Rempel * @rx_rate_err: No. of frames dropped due to rate errors. 38b5a0c86aSOleksij Rempel * @rx_too_many_frags_err: Frames dropped due to too-many-frags received. 39b5a0c86aSOleksij Rempel * @rx_beacons: No. of beacons received. 40b5a0c86aSOleksij Rempel * @rx_frags: No. of rx-fragements received. 41b5a0c86aSOleksij Rempel * @rx_spectral: No of spectral packets received. 42*03224678SSimon Wunderlich * @rx_spectral_sample_good: No. of good spectral samples 43*03224678SSimon Wunderlich * @rx_spectral_sample_err: No. of good spectral samples 44b5a0c86aSOleksij Rempel */ 45b5a0c86aSOleksij Rempel struct ath_rx_stats { 46b5a0c86aSOleksij Rempel u32 rx_pkts_all; 47b5a0c86aSOleksij Rempel u32 rx_bytes_all; 48b5a0c86aSOleksij Rempel u32 crc_err; 49b5a0c86aSOleksij Rempel u32 decrypt_crc_err; 50b5a0c86aSOleksij Rempel u32 phy_err; 51b5a0c86aSOleksij Rempel u32 mic_err; 52b5a0c86aSOleksij Rempel u32 pre_delim_crc_err; 53b5a0c86aSOleksij Rempel u32 post_delim_crc_err; 54b5a0c86aSOleksij Rempel u32 decrypt_busy_err; 55b5a0c86aSOleksij Rempel u32 phy_err_stats[ATH9K_PHYERR_MAX]; 56b5a0c86aSOleksij Rempel u32 rx_len_err; 57b5a0c86aSOleksij Rempel u32 rx_oom_err; 58b5a0c86aSOleksij Rempel u32 rx_rate_err; 59b5a0c86aSOleksij Rempel u32 rx_too_many_frags_err; 60b5a0c86aSOleksij Rempel u32 rx_beacons; 61b5a0c86aSOleksij Rempel u32 rx_frags; 62b5a0c86aSOleksij Rempel u32 rx_spectral; 63*03224678SSimon Wunderlich u32 rx_spectral_sample_good; 64*03224678SSimon Wunderlich u32 rx_spectral_sample_err; 65b5a0c86aSOleksij Rempel }; 66b5a0c86aSOleksij Rempel 671077ec47SChristian Lamparter #ifdef CONFIG_ATH9K_COMMON_DEBUG 68f2c3c952SOleksij Rempel void ath9k_cmn_debug_modal_eeprom(struct dentry *debugfs_phy, 69f2c3c952SOleksij Rempel struct ath_hw *ah); 7029bf801eSOleksij Rempel void ath9k_cmn_debug_base_eeprom(struct dentry *debugfs_phy, 7129bf801eSOleksij Rempel struct ath_hw *ah); 72b5a0c86aSOleksij Rempel void ath9k_cmn_debug_stat_rx(struct ath_rx_stats *rxstats, 73b5a0c86aSOleksij Rempel struct ath_rx_status *rs); 7487ea9b0bSOleksij Rempel void ath9k_cmn_debug_recv(struct dentry *debugfs_phy, 7587ea9b0bSOleksij Rempel struct ath_rx_stats *rxstats); 76e02912cdSOleksij Rempel void ath9k_cmn_debug_phy_err(struct dentry *debugfs_phy, 77e02912cdSOleksij Rempel struct ath_rx_stats *rxstats); 781077ec47SChristian Lamparter #else 791077ec47SChristian Lamparter static inline void ath9k_cmn_debug_modal_eeprom(struct dentry *debugfs_phy, 801077ec47SChristian Lamparter struct ath_hw *ah) 811077ec47SChristian Lamparter { 821077ec47SChristian Lamparter } 831077ec47SChristian Lamparter 841077ec47SChristian Lamparter static inline void ath9k_cmn_debug_base_eeprom(struct dentry *debugfs_phy, 851077ec47SChristian Lamparter struct ath_hw *ah) 861077ec47SChristian Lamparter { 871077ec47SChristian Lamparter } 881077ec47SChristian Lamparter 891077ec47SChristian Lamparter static inline void ath9k_cmn_debug_stat_rx(struct ath_rx_stats *rxstats, 901077ec47SChristian Lamparter struct ath_rx_status *rs) 911077ec47SChristian Lamparter { 921077ec47SChristian Lamparter } 931077ec47SChristian Lamparter 941077ec47SChristian Lamparter static inline void ath9k_cmn_debug_recv(struct dentry *debugfs_phy, 951077ec47SChristian Lamparter struct ath_rx_stats *rxstats) 961077ec47SChristian Lamparter { 971077ec47SChristian Lamparter } 981077ec47SChristian Lamparter 991077ec47SChristian Lamparter static inline void ath9k_cmn_debug_phy_err(struct dentry *debugfs_phy, 1001077ec47SChristian Lamparter struct ath_rx_stats *rxstats) 1011077ec47SChristian Lamparter { 1021077ec47SChristian Lamparter } 1031077ec47SChristian Lamparter #endif /* CONFIG_ATH9K_COMMON_DEBUG */ 104