svn commit: r227363 - head/sys/dev/ath
Adrian Chadd
adrian at FreeBSD.org
Tue Nov 8 22:01:04 UTC 2011
Author: adrian
Date: Tue Nov 8 22:01:03 2011
New Revision: 227363
URL: http://svn.freebsd.org/changeset/base/227363
Log:
Add support to the TX descriptor printing code to follow ath_buf
chains. This allows for debugging of aggregate frames.
Sponsored by: Hobnob, Inc.
Modified:
head/sys/dev/ath/if_ath_debug.c
Modified: head/sys/dev/ath/if_ath_debug.c
==============================================================================
--- head/sys/dev/ath/if_ath_debug.c Tue Nov 8 21:55:40 2011 (r227362)
+++ head/sys/dev/ath/if_ath_debug.c Tue Nov 8 22:01:03 2011 (r227363)
@@ -123,33 +123,44 @@ ath_printrxbuf(struct ath_softc *sc, con
}
void
-ath_printtxbuf(struct ath_softc *sc, const struct ath_buf *bf,
+ath_printtxbuf(struct ath_softc *sc, const struct ath_buf *first_bf,
u_int qnum, u_int ix, int done)
{
- const struct ath_tx_status *ts = &bf->bf_status.ds_txstat;
+ const struct ath_tx_status *ts = &first_bf->bf_last->bf_status.ds_txstat;
+ const struct ath_buf *bf = first_bf;
struct ath_hal *ah = sc->sc_ah;
const struct ath_desc *ds;
int i;
printf("Q%u[%3u]", qnum, ix);
- for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) {
- printf(" (DS.V:%p DS.P:%p) L:%08x D:%08x F:04%x%s\n"
- " %08x %08x %08x %08x %08x %08x\n",
- ds, (const struct ath_desc *)bf->bf_daddr + i,
- ds->ds_link, ds->ds_data, bf->bf_txflags,
- !done ? "" : (ts->ts_status == 0) ? " *" : " !",
- ds->ds_ctl0, ds->ds_ctl1,
- ds->ds_hw[0], ds->ds_hw[1], ds->ds_hw[2], ds->ds_hw[3]);
- if (ah->ah_magic == 0x20065416) {
- printf(" %08x %08x %08x %08x %08x %08x %08x %08x\n",
- ds->ds_hw[4], ds->ds_hw[5], ds->ds_hw[6],
- ds->ds_hw[7], ds->ds_hw[8], ds->ds_hw[9],
- ds->ds_hw[10],ds->ds_hw[11]);
- printf(" %08x %08x %08x %08x %08x %08x %08x %08x\n",
- ds->ds_hw[12],ds->ds_hw[13],ds->ds_hw[14],
- ds->ds_hw[15],ds->ds_hw[16],ds->ds_hw[17],
- ds->ds_hw[18], ds->ds_hw[19]);
+ while (bf != NULL) {
+ for (i = 0, ds = bf->bf_desc; i < bf->bf_nseg; i++, ds++) {
+ printf(" (DS.V:%p DS.P:%p) L:%08x D:%08x F:%04x%s\n"
+ " TXF: %04x Seq: %d swtry: %d ADDBAW?: %d DOBAW?: %d\n"
+ " %08x %08x %08x %08x %08x %08x\n",
+ ds, (const struct ath_desc *)bf->bf_daddr + i,
+ ds->ds_link, ds->ds_data, bf->bf_txflags,
+ !done ? "" : (ts->ts_status == 0) ? " *" : " !",
+ bf->bf_state.bfs_flags,
+ bf->bf_state.bfs_seqno,
+ bf->bf_state.bfs_retries,
+ bf->bf_state.bfs_addedbaw,
+ bf->bf_state.bfs_dobaw,
+ ds->ds_ctl0, ds->ds_ctl1,
+ ds->ds_hw[0], ds->ds_hw[1], ds->ds_hw[2], ds->ds_hw[3]);
+ if (ah->ah_magic == 0x20065416) {
+ printf(" %08x %08x %08x %08x %08x %08x %08x %08x\n",
+ ds->ds_hw[4], ds->ds_hw[5], ds->ds_hw[6],
+ ds->ds_hw[7], ds->ds_hw[8], ds->ds_hw[9],
+ ds->ds_hw[10],ds->ds_hw[11]);
+ printf(" %08x %08x %08x %08x %08x %08x %08x %08x\n",
+ ds->ds_hw[12],ds->ds_hw[13],ds->ds_hw[14],
+ ds->ds_hw[15],ds->ds_hw[16],ds->ds_hw[17],
+ ds->ds_hw[18], ds->ds_hw[19]);
+ }
}
+ printf(" [end]\n");
+ bf = bf->bf_next;
}
}
More information about the svn-src-all
mailing list