[ath] fix EDMA TX buffer flags for use when retransmitting frames.
This started showing up when doing lots of aggregate traffic. For TDMA it's always no-ACK traffic and I didn't notice this, and I didn't notice it when doing 11abg traffic as it didn't fail enough in a bad way to trigger this. This showed up as the fifo depth being < 0. Eg: Jun 19 09:23:07 gertrude kernel: ath0: ath_tx_edma_push_staging_list: queued 2 packets; depth=2, fifo depth=1 Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1, bf=0xfffffe000385f068, start=1, end=1 Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1: FIFO depth is now 0 (1) Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1, bf=0xfffffe0003866fe8, start=0, end=1 Jun 19 09:23:07 gertrude kernel: ath0: ath_edma_tx_processq: Q1: FIFO depth is now -1 (0) So, clear the flags before adding them to a TX queue, so if they're re-added for the retransmit path it'll clear whatever they were and not double-account the FIFOEND flag. Oops. Tested: * AR9380, STA mode, 11n iperf testing (~130mbit) Approved by: re (delphij)
This commit is contained in:
parent
ced91c3c20
commit
1a9bf047c2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=302024
@ -192,6 +192,9 @@ ath_tx_edma_push_staging_list(struct ath_softc *sc, struct ath_txq *txq,
|
||||
|
||||
/* Queue it into our staging list */
|
||||
TAILQ_INSERT_TAIL(&sq, bf, bf_list);
|
||||
|
||||
/* Ensure the flags are cleared */
|
||||
bf->bf_flags &= ~(ATH_BUF_FIFOPTR | ATH_BUF_FIFOEND);
|
||||
sqdepth++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user