summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-05-16 17:46:32 +0000
committeradrian <adrian@FreeBSD.org>2013-05-16 17:46:32 +0000
commitf671503c183f908471da761eaf86f09e44e0fe03 (patch)
tree2010d3922b371b0ebd5d465707af9636567574a8 /sys/dev
parent49cc8337ff7b5110ad8f0939790d9fb52ef85798 (diff)
downloadFreeBSD-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.c8
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;
}
OpenPOWER on IntegriCloud