svn commit: r248091 - head/sys/dev/ath

Adrian Chadd adrian at FreeBSD.org
Sat Mar 9 08:50:18 UTC 2013


Author: adrian
Date: Sat Mar  9 08:50:17 2013
New Revision: 248091
URL: http://svnweb.freebsd.org/changeset/base/248091

Log:
  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.

Modified:
  head/sys/dev/ath/if_ath_tx.c

Modified: head/sys/dev/ath/if_ath_tx.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx.c	Sat Mar  9 06:11:58 2013	(r248090)
+++ head/sys/dev/ath/if_ath_tx.c	Sat Mar  9 08:50:17 2013	(r248091)
@@ -4340,12 +4340,23 @@ ath_tx_aggr_comp_aggr(struct ath_softc *
 	    __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)) {


More information about the svn-src-all mailing list