diff options
author | adrian <adrian@FreeBSD.org> | 2013-05-16 17:46:32 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2013-05-16 17:46:32 +0000 |
commit | f671503c183f908471da761eaf86f09e44e0fe03 (patch) | |
tree | 2010d3922b371b0ebd5d465707af9636567574a8 /sys/dev | |
parent | 49cc8337ff7b5110ad8f0939790d9fb52ef85798 (diff) | |
download | FreeBSD-src-f671503c183f908471da761eaf86f09e44e0fe03.zip FreeBSD-src-f671503c183f908471da761eaf86f09e44e0fe03.tar.gz |
Limit the number of software queued frames when doing non-aggregation.
This should prevent the TX queue being filled with non-aggregate frames,
causing starvation and non-fair queue behaviour.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/ath/if_ath_tx.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/ath/if_ath_tx.c b/sys/dev/ath/if_ath_tx.c index 274fa2b..44a496e 100644 --- a/sys/dev/ath/if_ath_tx.c +++ b/sys/dev/ath/if_ath_tx.c @@ -5449,8 +5449,12 @@ ath_txq_sched(struct ath_softc *sc, struct ath_txq *txq) if (tid->axq_depth != 0) ath_tx_tid_sched(sc, tid); - /* Give the software queue time to aggregate more packets */ - if (txq->axq_aggr_depth >= sc->sc_hwq_limit) { + /* + * Give the software queue time to aggregate more + * packets. If we aren't running aggregation then + * we should still limit the hardware queue depth. + */ + if (txq->axq_depth >= sc->sc_hwq_limit) { break; } |