1394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith/* 25b68138e5659cbfd5df2879d17f9ba0b66477fecSujith Manoharan * Copyright (c) 2008-2011 Atheros Communications Inc. 3394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * 4394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * Permission to use, copy, modify, and/or distribute this software for any 5394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * purpose with or without fee is hereby granted, provided that the above 6394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * copyright notice and this permission notice appear in all copies. 7394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * 8394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith */ 16394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 17394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#ifndef DEBUG_H 18394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#define DEBUG_H 19394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 204d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguez#include "hw.h" 21545750d36fa78203e28acefb4bab61ebb7c4d197Felix Fietkau#include "rc.h" 2229942bc125374b5aa049a438fb628ea729538ca5Zefir Kurtisi#include "dfs_debug.h" 234d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguez 24fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_txq; 25fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_buf; 26fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith 27a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#ifdef CONFIG_ATH9K_DEBUGFS 28fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++ 29030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau#define RESET_STAT_INC(sc, type) sc->debug.stats.reset[type]++ 30fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#else 31fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#define TX_STAT_INC(q, c) do { } while (0) 32030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau#define RESET_STAT_INC(sc, type) do { } while (0) 33fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#endif 34fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith 35a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#ifdef CONFIG_ATH9K_DEBUGFS 36394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 37394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith/** 38394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * struct ath_interrupt_stats - Contains statistics about interrupts 39394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @total: Total no. of interrupts generated so far 40394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxok: RX with no errors 41a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez * @rxlp: RX with low priority RX 42a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez * @rxhp: RX with high priority, uapsd only 43394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxeol: RX with no more RXDESC available 44394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxorn: RX FIFO overrun 45394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @txok: TX completed at the requested rate 46394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @txurn: TX FIFO underrun 47394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @mib: MIB regs reaching its threshold 48394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxphyerr: RX with phy errors 49394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rx_keycache_miss: RX with key cache misses 50394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @swba: Software Beacon Alert 51394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @bmiss: Beacon Miss 52394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @bnr: Beacon Not Ready 53394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @cst: Carrier Sense TImeout 54394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @gtt: Global TX Timeout 55394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @tim: RX beacon TIM occurrence 56394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @cabend: RX End of CAB traffic 57394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @dtimsync: DTIM sync lossage 58394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @dtim: RX Beacon with DTIM 5908578b8f16ca551499c54f2cd229df3e58c8f381Luis R. Rodriguez * @bb_watchdog: Baseband watchdog 606dde1aabf6759848512f19d76b89ee473584c46aMohammed Shafi Shajakhan * @tsfoor: TSF out of range, indicates that the corrected TSF received 616dde1aabf6759848512f19d76b89ee473584c46aMohammed Shafi Shajakhan * from a beacon differs from the PCU's internal TSF by more than a 626dde1aabf6759848512f19d76b89ee473584c46aMohammed Shafi Shajakhan * (programmable) threshold 63394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith */ 64394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath_interrupt_stats { 65394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 total; 66394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 rxok; 67a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez u32 rxlp; 68a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez u32 rxhp; 69394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 rxeol; 70394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 rxorn; 71394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 txok; 72394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 txeol; 73394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 txurn; 74394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 mib; 75394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 rxphyerr; 76394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 rx_keycache_miss; 77394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 swba; 78394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 bmiss; 79394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 bnr; 80394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 cst; 81394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 gtt; 82394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 tim; 83394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 cabend; 84394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 dtimsync; 85394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith u32 dtim; 8608578b8f16ca551499c54f2cd229df3e58c8f381Luis R. Rodriguez u32 bb_watchdog; 876dde1aabf6759848512f19d76b89ee473584c46aMohammed Shafi Shajakhan u32 tsfoor; 88394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}; 89394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 90fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith/** 91fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * struct ath_tx_stats - Statistics about TX 9299c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear * @tx_pkts_all: No. of total frames transmitted, including ones that 9399c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear may have had errors. 9499c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear * @tx_bytes_all: No. of total bytes transmitted, including ones that 9599c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear may have had errors. 96fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @queued: Total MPDUs (non-aggr) queued 97fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @completed: Total MPDUs (non-aggr) completed 98fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_aggr: Total no. of aggregates queued 99bda8addaed08834956d5695212717893a2e0cb13Ben Greear * @a_queued_hw: Total AMPDUs queued to hardware 100bda8addaed08834956d5695212717893a2e0cb13Ben Greear * @a_queued_sw: Total AMPDUs queued to software queues 101fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_completed: Total AMPDUs completed 102fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_retries: No. of AMPDUs retried (SW) 103fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_xretries: No. of AMPDUs dropped due to xretries 104fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @fifo_underrun: FIFO underrun occurrences 105fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith Valid only for: 106fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith - non-aggregate condition. 107fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith - first packet of aggregate. 108fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @xtxop: No. of frames filtered because of TXOP limit 109fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @timer_exp: Transmit timer expiry 110fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @desc_cfg_err: Descriptor configuration errors 111fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @data_urn: TX data underrun errors 112fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @delim_urn: TX delimiter underrun errors 1132dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear * @puttxbuf: Number of times hardware was given txbuf to write. 1142dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear * @txstart: Number of times hardware was told to start tx. 1152dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear * @txprocdesc: Number of times tx descriptor was processed 116fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith */ 117fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_tx_stats { 11899c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear u32 tx_pkts_all; 11999c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear u32 tx_bytes_all; 120fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 queued; 121fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 completed; 1225a6f78afdabeb8b8e0811547fb98813323abf888Felix Fietkau u32 xretries; 123fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 a_aggr; 124bda8addaed08834956d5695212717893a2e0cb13Ben Greear u32 a_queued_hw; 125bda8addaed08834956d5695212717893a2e0cb13Ben Greear u32 a_queued_sw; 126fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 a_completed; 127fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 a_retries; 128fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 a_xretries; 129fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 fifo_underrun; 130fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 xtxop; 131fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 timer_exp; 132fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 desc_cfg_err; 133fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 data_underrun; 134fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith u32 delim_underrun; 1352dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear u32 puttxbuf; 1362dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear u32 txstart; 1372dac4fb97a41af1e6b7ab9f59c837d20838e92daBen Greear u32 txprocdesc; 138fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith}; 139fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith 1401395d3f00a4164caae168b041855d48e0fa9ea4cSujith/** 1411395d3f00a4164caae168b041855d48e0fa9ea4cSujith * struct ath_rx_stats - RX Statistics 14299c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear * @rx_pkts_all: No. of total frames received, including ones that 14399c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear may have had errors. 14499c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear * @rx_bytes_all: No. of total bytes received, including ones that 14599c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear may have had errors. 1461395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @crc_err: No. of frames with incorrect CRC value 1471395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @decrypt_crc_err: No. of frames whose CRC check failed after 1481395d3f00a4164caae168b041855d48e0fa9ea4cSujith decryption process completed 1491395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @phy_err: No. of frames whose reception failed because the PHY 1501395d3f00a4164caae168b041855d48e0fa9ea4cSujith encountered an error 1511395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @mic_err: No. of frames with incorrect TKIP MIC verification failure 1521395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @pre_delim_crc_err: Pre-Frame delimiter CRC error detections 1531395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @post_delim_crc_err: Post-Frame delimiter CRC error detections 1541395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @decrypt_busy_err: Decryption interruptions counter 1551395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @phy_err_stats: Individual PHY error statistics 1561395d3f00a4164caae168b041855d48e0fa9ea4cSujith */ 1571395d3f00a4164caae168b041855d48e0fa9ea4cSujithstruct ath_rx_stats { 15899c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear u32 rx_pkts_all; 15999c15bf575b18e12c9373304a6a09a78f9c8a017Ben Greear u32 rx_bytes_all; 1601395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 crc_err; 1611395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 decrypt_crc_err; 1621395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 phy_err; 1631395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 mic_err; 1641395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 pre_delim_crc_err; 1651395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 post_delim_crc_err; 1661395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 decrypt_busy_err; 1671395d3f00a4164caae168b041855d48e0fa9ea4cSujith u32 phy_err_stats[ATH9K_PHYERR_MAX]; 1681395d3f00a4164caae168b041855d48e0fa9ea4cSujith}; 1691395d3f00a4164caae168b041855d48e0fa9ea4cSujith 170030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkauenum ath_reset_type { 171030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_BB_HANG, 172030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_BB_WATCHDOG, 173030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_FATAL_INT, 174030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_TX_ERROR, 175030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_TX_HANG, 176030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau RESET_TYPE_PLL_HANG, 177030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau __RESET_TYPE_MAX 178030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau}; 179030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau 180394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath_stats { 181394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith struct ath_interrupt_stats istats; 182fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES]; 1831395d3f00a4164caae168b041855d48e0fa9ea4cSujith struct ath_rx_stats rxstats; 18429942bc125374b5aa049a438fb628ea729538ca5Zefir Kurtisi struct ath_dfs_stats dfs_stats; 185030d6294351bfb0e29e2814bb8f6e6c2e25ffb54Felix Fietkau u32 reset[__RESET_TYPE_MAX]; 186394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}; 187394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 188cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan#define ATH_DBG_MAX_SAMPLES 10 189cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharanstruct ath_dbg_bb_mac_samp { 190cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u32 dma_dbg_reg_vals[ATH9K_NUM_DMA_DEBUG_REGS]; 191cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u32 pcu_obs, pcu_cr, noise; 192cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan struct { 193cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u64 jiffies; 194cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl0; 195cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl1; 196cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl2; 197cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext0; 198cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext1; 199cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext2; 200cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi; 201cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan bool isok; 202cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 rts_fail_cnt; 203cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 data_fail_cnt; 204cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 rateindex; 205cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 qid; 206cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 tid; 207129321804e36721e71fadcab5b475bd37bf53044Mohammed Shafi Shajakhan u32 ba_low; 208129321804e36721e71fadcab5b475bd37bf53044Mohammed Shafi Shajakhan u32 ba_high; 209cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan } ts[ATH_DBG_MAX_SAMPLES]; 210cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan struct { 211cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u64 jiffies; 212cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl0; 213cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl1; 214cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ctl2; 215cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext0; 216cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext1; 217cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi_ext2; 218cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan int8_t rssi; 219cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan bool is_mybeacon; 220cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 antenna; 221cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 rate; 222cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan } rs[ATH_DBG_MAX_SAMPLES]; 223cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan struct ath_cycle_counters cc; 224cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan struct ath9k_nfcal_hist nfCalHist[NUM_NF_READINGS]; 225cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan}; 226cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan 227394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath9k_debug { 228394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith struct dentry *debugfs_phy; 2299bff0bc4012c7f079b297eb45b47780e3713f367Felix Fietkau u32 regidx; 230394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith struct ath_stats stats; 2315baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau#ifdef CONFIG_ATH9K_MAC_DEBUG 232cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan spinlock_t samp_lock; 233cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan struct ath_dbg_bb_mac_samp bb_mac_samp[ATH_DBG_MAX_SAMPLES]; 234cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 sampidx; 235cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 tsidx; 236cf3af74824b1bf2bd60eb6a0dd82b27f9e9236acRajkumar Manoharan u8 rsidx; 2375baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau#endif 238394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}; 239394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 2404d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezint ath9k_init_debug(struct ath_hw *ah); 2414d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguez 242394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithvoid ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status); 243066dae93bdfcc7af5e38a33617773fd5c6457607Felix Fietkauvoid ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf, 24455797b1ae5bfc33f1c0f978cdc7cd89a8d9460fcFelix Fietkau struct ath_tx_status *ts, struct ath_txq *txq, 24555797b1ae5bfc33f1c0f978cdc7cd89a8d9460fcFelix Fietkau unsigned int flags); 2468e6f5aa250d6013ec0d66f9f45f376678d3fc4abFelix Fietkauvoid ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs); 247394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 248394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#else 249394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 2504d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezstatic inline int ath9k_init_debug(struct ath_hw *ah) 251394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{ 252394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith return 0; 253394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith} 254394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 255394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstatic inline void ath_debug_stat_interrupt(struct ath_softc *sc, 256394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith enum ath9k_int status) 257394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{ 258394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith} 259394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 260fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstatic inline void ath_debug_stat_tx(struct ath_softc *sc, 26132ffb1f4488b0727bcfc67a025becc0db3df7a17Felix Fietkau struct ath_buf *bf, 2623bf63e59e577cbecd41334c866f501c4cc5d54c5Felix Fietkau struct ath_tx_status *ts, 26355797b1ae5bfc33f1c0f978cdc7cd89a8d9460fcFelix Fietkau struct ath_txq *txq, 26455797b1ae5bfc33f1c0f978cdc7cd89a8d9460fcFelix Fietkau unsigned int flags) 265fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith{ 266fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith} 267fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith 2681395d3f00a4164caae168b041855d48e0fa9ea4cSujithstatic inline void ath_debug_stat_rx(struct ath_softc *sc, 26932ffb1f4488b0727bcfc67a025becc0db3df7a17Felix Fietkau struct ath_rx_status *rs) 2701395d3f00a4164caae168b041855d48e0fa9ea4cSujith{ 2711395d3f00a4164caae168b041855d48e0fa9ea4cSujith} 2721395d3f00a4164caae168b041855d48e0fa9ea4cSujith 273a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#endif /* CONFIG_ATH9K_DEBUGFS */ 274394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith 2755baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau#ifdef CONFIG_ATH9K_MAC_DEBUG 2765baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 2775baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkauvoid ath9k_debug_samp_bb_mac(struct ath_softc *sc); 2785baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 2795baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau#else 2805baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 2815baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkaustatic inline void ath9k_debug_samp_bb_mac(struct ath_softc *sc) 2825baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau{ 2835baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau} 2845baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 2855baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau#endif 2865baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 2875baec7422c8c8f70c62b9493acf31d4854b09070Felix Fietkau 288394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#endif /* DEBUG_H */ 289