summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2013-03-09 08:50:17 +0000
committeradrian <adrian@FreeBSD.org>2013-03-09 08:50:17 +0000
commit027fc2306a4b4497963b9fc7283a78944c3c9fc6 (patch)
tree27fe5ec0bc5d6607fcfe50df1a4759ef9bd5c417
parent54af10af6b71d746db7304c28a5a8d4176b46acc (diff)
downloadFreeBSD-src-027fc2306a4b4497963b9fc7283a78944c3c9fc6.zip
FreeBSD-src-027fc2306a4b4497963b9fc7283a78944c3c9fc6.tar.gz
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.
-rw-r--r--sys/dev/ath/if_ath_tx.c11
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 92b28c6..33318ea 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)) {
OpenPOWER on IntegriCloud