diff options
author | Adrian Chadd <adrian@FreeBSD.org> | 2013-03-09 08:50:17 +0000 |
---|---|---|
committer | Adrian Chadd <adrian@FreeBSD.org> | 2013-03-09 08:50:17 +0000 |
commit | b3420862a728d760ca22968b32eac2f36b779372 (patch) | |
tree | 27fe5ec0bc5d6607fcfe50df1a4759ef9bd5c417 | |
parent | 9d2a962bf3ee10192e53e336d3df262b9467dac6 (diff) | |
download | src-b3420862a728d760ca22968b32eac2f36b779372.tar.gz src-b3420862a728d760ca22968b32eac2f36b779372.zip |
Disable the hw TID != buffer TID check.
I can 100% reliably trigger this on TID 1 traffic by using iperf -S 32
<client fields> to create traffic that maps to TID 1.
The reference driver doesn't do this check.
Notes
Notes:
svn path=/head/; revision=248091
-rw-r--r-- | sys/dev/ath/if_ath_tx.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath_tx.c b/sys/dev/ath/if_ath_tx.c index 92b28c60e53c..33318eab9144 100644 --- a/sys/dev/ath/if_ath_tx.c +++ b/sys/dev/ath/if_ath_tx.c @@ -4340,12 +4340,23 @@ ath_tx_aggr_comp_aggr(struct ath_softc *sc, struct ath_buf *bf_first, __func__, tap->txa_start, tx_ok, ts.ts_status, ts.ts_flags, isaggr, seq_st, hasba, ba[0], ba[1]); + /* + * The reference driver doesn't do this; it simply ignores + * this check in its entirety. + * + * I've seen this occur when using iperf to send traffic + * out tid 1 - the aggregate frames are all marked as TID 1, + * but the TXSTATUS has TID=0. So, let's just ignore this + * check. + */ +#if 0 /* Occasionally, the MAC sends a tx status for the wrong TID. */ if (tid != ts.ts_tid) { device_printf(sc->sc_dev, "%s: tid %d != hw tid %d\n", __func__, tid, ts.ts_tid); tx_ok = 0; } +#endif /* AR5416 BA bug; this requires an interface reset */ if (isaggr && tx_ok && (! hasba)) { |