debug.h revision 08578b8f16ca551499c54f2cd229df3e58c8f381
1394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith/*
2cee075a24eec64f1f5b2b3b14753b2d4b8ecce55Sujith * Copyright (c) 2008-2009 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"
224d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguez
23fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_txq;
24fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_buf;
25fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith
26a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#ifdef CONFIG_ATH9K_DEBUGFS
27fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++
28fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#else
29fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#define TX_STAT_INC(q, c) do { } while (0)
30fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith#endif
31fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith
32a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#ifdef CONFIG_ATH9K_DEBUGFS
33394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
34394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith/**
35394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * struct ath_interrupt_stats - Contains statistics about interrupts
36394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @total: Total no. of interrupts generated so far
37394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxok: RX with no errors
38a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez * @rxlp: RX with low priority RX
39a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez * @rxhp: RX with high priority, uapsd only
40394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxeol: RX with no more RXDESC available
41394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxorn: RX FIFO overrun
42394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @txok: TX completed at the requested rate
43394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @txurn: TX FIFO underrun
44394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @mib: MIB regs reaching its threshold
45394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rxphyerr: RX with phy errors
46394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @rx_keycache_miss: RX with key cache misses
47394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @swba: Software Beacon Alert
48394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @bmiss: Beacon Miss
49394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @bnr: Beacon Not Ready
50394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @cst: Carrier Sense TImeout
51394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @gtt: Global TX Timeout
52394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @tim: RX beacon TIM occurrence
53394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @cabend: RX End of CAB traffic
54394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @dtimsync: DTIM sync lossage
55394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith * @dtim: RX Beacon with DTIM
5608578b8f16ca551499c54f2cd229df3e58c8f381Luis R. Rodriguez * @bb_watchdog: Baseband watchdog
57394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith */
58394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath_interrupt_stats {
59394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 total;
60394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 rxok;
61a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez	u32 rxlp;
62a9616f417eb0e529023c44dac61420f3df39d8f7Luis R. Rodriguez	u32 rxhp;
63394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 rxeol;
64394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 rxorn;
65394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 txok;
66394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 txeol;
67394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 txurn;
68394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 mib;
69394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 rxphyerr;
70394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 rx_keycache_miss;
71394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 swba;
72394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 bmiss;
73394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 bnr;
74394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 cst;
75394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 gtt;
76394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 tim;
77394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 cabend;
78394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 dtimsync;
79394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 dtim;
8008578b8f16ca551499c54f2cd229df3e58c8f381Luis R. Rodriguez	u32 bb_watchdog;
81394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith};
82394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
83bedf087af96a24861d09586ac25c26691300ff4cJeff Hansenstruct ath_rc_stats {
84394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 success;
85394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 retries;
86394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	u32 xretries;
879e7127908473bfb863c5064b0a61d0f0d6b1af46Sujith	u8 per;
88394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith};
89394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
90fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith/**
91fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * struct ath_tx_stats - Statistics about TX
92fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @queued: Total MPDUs (non-aggr) queued
93fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @completed: Total MPDUs (non-aggr) completed
94fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_aggr: Total no. of aggregates queued
95fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_queued: Total AMPDUs queued
96fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_completed: Total AMPDUs completed
97fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_retries: No. of AMPDUs retried (SW)
98fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @a_xretries: No. of AMPDUs dropped due to xretries
99fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @fifo_underrun: FIFO underrun occurrences
100fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	Valid only for:
101fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith		- non-aggregate condition.
102fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith		- first packet of aggregate.
103fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @xtxop: No. of frames filtered because of TXOP limit
104fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @timer_exp: Transmit timer expiry
105fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @desc_cfg_err: Descriptor configuration errors
106fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @data_urn: TX data underrun errors
107fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith * @delim_urn: TX delimiter underrun errors
108fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith */
109fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstruct ath_tx_stats {
110fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 queued;
111fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 completed;
112fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 a_aggr;
113fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 a_queued;
114fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 a_completed;
115fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 a_retries;
116fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 a_xretries;
117fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 fifo_underrun;
118fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 xtxop;
119fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 timer_exp;
120fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 desc_cfg_err;
121fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 data_underrun;
122fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	u32 delim_underrun;
123fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith};
124fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith
1251395d3f00a4164caae168b041855d48e0fa9ea4cSujith/**
1261395d3f00a4164caae168b041855d48e0fa9ea4cSujith * struct ath_rx_stats - RX Statistics
1271395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @crc_err: No. of frames with incorrect CRC value
1281395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @decrypt_crc_err: No. of frames whose CRC check failed after
1291395d3f00a4164caae168b041855d48e0fa9ea4cSujith	decryption process completed
1301395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @phy_err: No. of frames whose reception failed because the PHY
1311395d3f00a4164caae168b041855d48e0fa9ea4cSujith	encountered an error
1321395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @mic_err: No. of frames with incorrect TKIP MIC verification failure
1331395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @pre_delim_crc_err: Pre-Frame delimiter CRC error detections
1341395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @post_delim_crc_err: Post-Frame delimiter CRC error detections
1351395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @decrypt_busy_err: Decryption interruptions counter
1361395d3f00a4164caae168b041855d48e0fa9ea4cSujith * @phy_err_stats: Individual PHY error statistics
1371395d3f00a4164caae168b041855d48e0fa9ea4cSujith */
1381395d3f00a4164caae168b041855d48e0fa9ea4cSujithstruct ath_rx_stats {
1391395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 crc_err;
1401395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 decrypt_crc_err;
1411395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 phy_err;
1421395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 mic_err;
1431395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 pre_delim_crc_err;
1441395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 post_delim_crc_err;
1451395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 decrypt_busy_err;
1461395d3f00a4164caae168b041855d48e0fa9ea4cSujith	u32 phy_err_stats[ATH9K_PHYERR_MAX];
1471395d3f00a4164caae168b041855d48e0fa9ea4cSujith};
1481395d3f00a4164caae168b041855d48e0fa9ea4cSujith
149394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath_stats {
150394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	struct ath_interrupt_stats istats;
151bedf087af96a24861d09586ac25c26691300ff4cJeff Hansen	struct ath_rc_stats rcstats[RATE_TABLE_SIZE];
152fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith	struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES];
1531395d3f00a4164caae168b041855d48e0fa9ea4cSujith	struct ath_rx_stats rxstats;
154394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith};
155394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
156394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstruct ath9k_debug {
157394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	struct dentry *debugfs_phy;
1589bff0bc4012c7f079b297eb45b47780e3713f367Felix Fietkau	u32 regidx;
159394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	struct ath_stats stats;
160394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith};
161394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
1624d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezint ath9k_init_debug(struct ath_hw *ah);
1634d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezvoid ath9k_exit_debug(struct ath_hw *ah);
1644d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguez
16519d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhosint ath9k_debug_create_root(void);
16619d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhosvoid ath9k_debug_remove_root(void);
167394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithvoid ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status);
168545750d36fa78203e28acefb4bab61ebb7c4d197Felix Fietkauvoid ath_debug_stat_rc(struct ath_softc *sc, int final_rate);
169fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithvoid ath_debug_stat_tx(struct ath_softc *sc, struct ath_txq *txq,
170db1a052b73f7c97f9e8b21f3f19a92313ed2acb1Felix Fietkau		       struct ath_buf *bf, struct ath_tx_status *ts);
1718e6f5aa250d6013ec0d66f9f45f376678d3fc4abFelix Fietkauvoid ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs);
172394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithvoid ath_debug_stat_retries(struct ath_softc *sc, int rix,
1739e7127908473bfb863c5064b0a61d0f0d6b1af46Sujith			    int xretries, int retries, u8 per);
174394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
175394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#else
176394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
1774d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezstatic inline int ath9k_init_debug(struct ath_hw *ah)
178394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{
179394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith	return 0;
180394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}
181394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
1824d6b228d84ba992ee13c90312c1ed539191c94b1Luis R. Rodriguezstatic inline void ath9k_exit_debug(struct ath_hw *ah)
183394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{
184394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}
185394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
18619d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhosstatic inline int ath9k_debug_create_root(void)
18719d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos{
18819d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos	return 0;
18919d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos}
19019d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos
19119d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhosstatic inline void ath9k_debug_remove_root(void)
19219d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos{
19319d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos}
19419d8bc22bcea749da2ba065a1ff9e054fadb556eGabor Juhos
195394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstatic inline void ath_debug_stat_interrupt(struct ath_softc *sc,
196394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith					    enum ath9k_int status)
197394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{
198394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}
199394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
200394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstatic inline void ath_debug_stat_rc(struct ath_softc *sc,
201545750d36fa78203e28acefb4bab61ebb7c4d197Felix Fietkau				     int final_rate)
202394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{
203394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}
204394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
205fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujithstatic inline void ath_debug_stat_tx(struct ath_softc *sc,
206fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith				     struct ath_txq *txq,
20732ffb1f4488b0727bcfc67a025becc0db3df7a17Felix Fietkau				     struct ath_buf *bf,
20832ffb1f4488b0727bcfc67a025becc0db3df7a17Felix Fietkau				     struct ath_tx_status *ts)
209fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith{
210fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith}
211fec247c0d5bfbaa0861774ce31d515bbd48f7fceSujith
2121395d3f00a4164caae168b041855d48e0fa9ea4cSujithstatic inline void ath_debug_stat_rx(struct ath_softc *sc,
21332ffb1f4488b0727bcfc67a025becc0db3df7a17Felix Fietkau				     struct ath_rx_status *rs)
2141395d3f00a4164caae168b041855d48e0fa9ea4cSujith{
2151395d3f00a4164caae168b041855d48e0fa9ea4cSujith}
2161395d3f00a4164caae168b041855d48e0fa9ea4cSujith
217394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujithstatic inline void ath_debug_stat_retries(struct ath_softc *sc, int rix,
2189e7127908473bfb863c5064b0a61d0f0d6b1af46Sujith					  int xretries, int retries, u8 per)
219394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith{
220394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith}
221394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
222a830df0714117574fd0d5fe98477059b3e9fd5bfFelix Fietkau#endif /* CONFIG_ATH9K_DEBUGFS */
223394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith
224394cf0a1ca02e7998c8d01975b60a3cdc121e7d8Sujith#endif /* DEBUG_H */
225