Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b479a07 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville
Browse files

ath9k: fix missed error codes in the tx status check



My previous change added in:

 commit 815833e7
    ath9k: fix tx status reporting

was not checking all possible tx error conditions. This could possibly
lead to throughput issues due to slow rate control adaption or missed
retransmissions of failed A-MPDU frames.

This patch adds a mask for all possible error conditions and uses it
in the xmit ok check.

Cc: stable@kernel.org
Reported-by: default avatarBjörn Smedman <bjorn.smedman@venatech.se>
Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8b685ba9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -77,6 +77,9 @@
#define ATH9K_TXERR_XTXOP          0x08
#define ATH9K_TXERR_TIMER_EXPIRED  0x10
#define ATH9K_TX_ACKED		   0x20
#define ATH9K_TXERR_MASK						\
	(ATH9K_TXERR_XRETRY | ATH9K_TXERR_FILT | ATH9K_TXERR_FIFO |	\
	 ATH9K_TXERR_XTXOP | ATH9K_TXERR_TIMER_EXPIRED)

#define ATH9K_TX_BA                0x01
#define ATH9K_TX_PWRMGMT           0x02
+1 −1
Original line number Diff line number Diff line
@@ -2072,7 +2072,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
				&txq->axq_q, lastbf->list.prev);

		txq->axq_depth--;
		txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_FILT);
		txok = !(ds->ds_txstat.ts_status & ATH9K_TXERR_MASK);
		txq->axq_tx_inprogress = false;
		spin_unlock_bh(&txq->axq_lock);