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