mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 20:04:05 +02:00
ath9k: fix tx queue debug counters
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@25099 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
fc69050270
commit
2fd6778e99
101
package/mac80211/patches/540-ath9k_fix_queue_debug.patch
Normal file
101
package/mac80211/patches/540-ath9k_fix_queue_debug.patch
Normal file
@ -0,0 +1,101 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -450,14 +450,15 @@ static const struct file_operations fops
|
||||
.llseek = default_llseek,
|
||||
};
|
||||
|
||||
+#define PR_QNUM(_n) sc->tx.txq_map[_n]->axq_qnum
|
||||
#define PR(str, elem) \
|
||||
do { \
|
||||
len += snprintf(buf + len, size - len, \
|
||||
"%s%13u%11u%10u%10u\n", str, \
|
||||
- sc->debug.stats.txstats[WME_AC_BE].elem, \
|
||||
- sc->debug.stats.txstats[WME_AC_BK].elem, \
|
||||
- sc->debug.stats.txstats[WME_AC_VI].elem, \
|
||||
- sc->debug.stats.txstats[WME_AC_VO].elem); \
|
||||
+ sc->debug.stats.txstats[PR_QNUM(WME_AC_BE)].elem, \
|
||||
+ sc->debug.stats.txstats[PR_QNUM(WME_AC_BK)].elem, \
|
||||
+ sc->debug.stats.txstats[PR_QNUM(WME_AC_VI)].elem, \
|
||||
+ sc->debug.stats.txstats[PR_QNUM(WME_AC_VO)].elem); \
|
||||
if (len >= size) \
|
||||
goto done; \
|
||||
} while(0)
|
||||
@@ -466,10 +467,10 @@ static const struct file_operations fops
|
||||
do { \
|
||||
len += snprintf(buf + len, size - len, \
|
||||
"%s%13u%11u%10u%10u\n", str, \
|
||||
- (unsigned int)(sc->tx.txq[ATH_TXQ_AC_BE].elem), \
|
||||
- (unsigned int)(sc->tx.txq[ATH_TXQ_AC_BK].elem), \
|
||||
- (unsigned int)(sc->tx.txq[ATH_TXQ_AC_VI].elem), \
|
||||
- (unsigned int)(sc->tx.txq[ATH_TXQ_AC_VO].elem)); \
|
||||
+ (unsigned int)(sc->tx.txq_map[WME_AC_BE]->elem), \
|
||||
+ (unsigned int)(sc->tx.txq_map[WME_AC_BK]->elem), \
|
||||
+ (unsigned int)(sc->tx.txq_map[WME_AC_VI]->elem), \
|
||||
+ (unsigned int)(sc->tx.txq_map[WME_AC_VO]->elem)); \
|
||||
if (len >= size) \
|
||||
goto done; \
|
||||
} while(0)
|
||||
@@ -478,10 +479,10 @@ do { \
|
||||
do { \
|
||||
len += snprintf(buf + len, size - len, \
|
||||
"%s%13i%11i%10i%10i\n", str, \
|
||||
- list_empty(&sc->tx.txq[ATH_TXQ_AC_BE].elem), \
|
||||
- list_empty(&sc->tx.txq[ATH_TXQ_AC_BK].elem), \
|
||||
- list_empty(&sc->tx.txq[ATH_TXQ_AC_VI].elem), \
|
||||
- list_empty(&sc->tx.txq[ATH_TXQ_AC_VO].elem)); \
|
||||
+ list_empty(&sc->tx.txq_map[WME_AC_BE]->elem), \
|
||||
+ list_empty(&sc->tx.txq_map[WME_AC_BK]->elem), \
|
||||
+ list_empty(&sc->tx.txq_map[WME_AC_VI]->elem), \
|
||||
+ list_empty(&sc->tx.txq_map[WME_AC_VO]->elem)); \
|
||||
if (len >= size) \
|
||||
goto done; \
|
||||
} while (0)
|
||||
@@ -528,10 +529,10 @@ static ssize_t read_file_xmit(struct fil
|
||||
PR("hw-tx-proc-desc: ", txprocdesc);
|
||||
len += snprintf(buf + len, size - len,
|
||||
"%s%11p%11p%10p%10p\n", "txq-memory-address:",
|
||||
- &(sc->tx.txq[ATH_TXQ_AC_BE]),
|
||||
- &(sc->tx.txq[ATH_TXQ_AC_BK]),
|
||||
- &(sc->tx.txq[ATH_TXQ_AC_VI]),
|
||||
- &(sc->tx.txq[ATH_TXQ_AC_VO]));
|
||||
+ &(sc->tx.txq_map[WME_AC_BE]),
|
||||
+ &(sc->tx.txq_map[WME_AC_BK]),
|
||||
+ &(sc->tx.txq_map[WME_AC_VI]),
|
||||
+ &(sc->tx.txq_map[WME_AC_VO]));
|
||||
if (len >= size)
|
||||
goto done;
|
||||
|
||||
@@ -751,9 +752,9 @@ static ssize_t read_file_misc(struct fil
|
||||
}
|
||||
|
||||
void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
|
||||
- struct ath_tx_status *ts)
|
||||
+ struct ath_tx_status *ts, struct ath_txq *txq)
|
||||
{
|
||||
- int qnum = skb_get_queue_mapping(bf->bf_mpdu);
|
||||
+ int qnum = txq->axq_qnum;
|
||||
|
||||
TX_STAT_INC(qnum, tx_pkts_all);
|
||||
sc->debug.stats.txstats[qnum].tx_bytes_all += bf->bf_mpdu->len;
|
||||
--- a/drivers/net/wireless/ath/ath9k/debug.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.h
|
||||
@@ -175,7 +175,7 @@ int ath9k_init_debug(struct ath_hw *ah);
|
||||
|
||||
void ath_debug_stat_interrupt(struct ath_softc *sc, enum ath9k_int status);
|
||||
void ath_debug_stat_tx(struct ath_softc *sc, struct ath_buf *bf,
|
||||
- struct ath_tx_status *ts);
|
||||
+ struct ath_tx_status *ts, struct ath_txq *txq);
|
||||
void ath_debug_stat_rx(struct ath_softc *sc, struct ath_rx_status *rs);
|
||||
|
||||
#else
|
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -1913,7 +1913,7 @@ static void ath_tx_complete_buf(struct a
|
||||
else
|
||||
complete(&sc->paprd_complete);
|
||||
} else {
|
||||
- ath_debug_stat_tx(sc, bf, ts);
|
||||
+ ath_debug_stat_tx(sc, bf, ts, txq);
|
||||
ath_tx_complete(sc, skb, tx_flags,
|
||||
bf->bf_state.bfs_ftype, txq);
|
||||
}
|
Loading…
Reference in New Issue
Block a user