diff options
Diffstat (limited to 'package')
| -rw-r--r-- | package/mac80211/patches/540-ath9k_fix_queue_debug.patch | 101 | 
1 files changed, 101 insertions, 0 deletions
diff --git a/package/mac80211/patches/540-ath9k_fix_queue_debug.patch b/package/mac80211/patches/540-ath9k_fix_queue_debug.patch new file mode 100644 index 000000000..f2d784640 --- /dev/null +++ b/package/mac80211/patches/540-ath9k_fix_queue_debug.patch @@ -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); + 	}  | 
