diff options
author | adrian <adrian@FreeBSD.org> | 2012-03-25 23:50:34 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2012-03-25 23:50:34 +0000 |
commit | 6abfad5150cb0a448c3eb6918d82fc2169985977 (patch) | |
tree | 6b6d53aeb92079d9a8785b338f78060c3dc7f9a9 | |
parent | 5582dc37431b1ccf3d2183079d886588fd1bb96f (diff) | |
download | FreeBSD-src-6abfad5150cb0a448c3eb6918d82fc2169985977.zip FreeBSD-src-6abfad5150cb0a448c3eb6918d82fc2169985977.tar.gz |
Add some more debugging to try and nail down exactly what's going on when
I see traffic stalls.
It turns out that the bug isn't because the first and last frame in the
BAW is in the software queue. It is more likely that it's because
the first frame in the BAW is still in the software queue and thus there's
no more room to allocate and do subsequent TX.
PR: kern/166357
-rw-r--r-- | sys/dev/ath/if_ath_tx.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/ath/if_ath_tx.c b/sys/dev/ath/if_ath_tx.c index 6944371..72e84cf 100644 --- a/sys/dev/ath/if_ath_tx.c +++ b/sys/dev/ath/if_ath_tx.c @@ -2357,6 +2357,7 @@ ath_tx_xmit_aggr(struct ath_softc *sc, struct ath_node *an, struct ath_buf *bf) /* paused? queue */ if (tid->paused) { ATH_TXQ_INSERT_TAIL(tid, bf, bf_list); + /* XXX don't sched - we're paused! */ return; } @@ -2647,13 +2648,19 @@ ath_tx_tid_drain(struct ath_softc *sc, struct ath_node *an, if (t == 0) { device_printf(sc->sc_dev, "%s: node %p: bf=%p: addbaw=%d, dobaw=%d, " - "seqno_assign=%d, seqno_required=%d, seqno=%d\n", + "seqno_assign=%d, seqno_required=%d, seqno=%d, retry=%d\n", __func__, ni, bf, bf->bf_state.bfs_addedbaw, bf->bf_state.bfs_dobaw, bf->bf_state.bfs_need_seqno, bf->bf_state.bfs_seqno_assigned, - SEQNO(bf->bf_state.bfs_seqno)); + SEQNO(bf->bf_state.bfs_seqno), + bf->bf_state.bfs_retries); + device_printf(sc->sc_dev, + "%s: node %p: bf=%p: tid txq_depth=%d hwq_depth=%d\n", + __func__, ni, bf, + tid->axq_depth, + tid->hwq_depth); device_printf(sc->sc_dev, "%s: node %p: bf=%p: tid %d: txq_depth=%d, " "txq_aggr_depth=%d, sched=%d, paused=%d, " |