svn commit: r225752 - user/adrian/if_ath_tx/sys/dev/ath

Adrian Chadd adrian at FreeBSD.org
Sun Sep 25 07:49:03 UTC 2011


Author: adrian
Date: Sun Sep 25 07:49:03 2011
New Revision: 225752
URL: http://svn.freebsd.org/changeset/base/225752

Log:
  Add some further debugging to get a handle on when this BAW tracking
  error occurs.

Modified:
  user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c	Sun Sep 25 07:43:07 2011	(r225751)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_tx.c	Sun Sep 25 07:49:03 2011	(r225752)
@@ -1897,11 +1897,22 @@ ath_tx_update_baw(struct ath_softc *sc, 
 
 	DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
 	    "%s: tid=%d, baw=%d:%d, seqno=%d, index=%d, cindex=%d, baw head=%d, tail=%d\n",
-	    __func__, tid->tid, tap->txa_start, tap->txa_wnd, seqno, index, cindex, tid->baw_head, tid->baw_tail);
+	    __func__, tid->tid, tap->txa_start, tap->txa_wnd, seqno, index,
+	    cindex, tid->baw_head, tid->baw_tail);
 
+	/*
+	 * If this occurs then we have a big problem - something else
+	 * has slid tap->txa_start along without updating the BAW
+	 * tracking start/end pointers. Thus the TX BAW state is now
+	 * completely busted.
+	 */
 	if (tid->tx_buf[cindex] != bf) {
-		device_printf(sc->sc_dev, "%s: seqno %d: tx_buf bf=%p; comp bf=%p!\n",
-		    __func__, seqno, tid->tx_buf[cindex], bf);
+		device_printf(sc->sc_dev,
+		    "%s: comp bf=%p, seq=%d; slot bf=%p, seqno=%d\n",
+		    __func__,
+		    bf, SEQNO(bf->bf_state.bfs_seqno),
+		    tid->tx_buf[cindex],
+		    SEQNO(tid->tx_buf[cindex]->bf_state.bfs_seqno));
 	}
 
 	tid->tx_buf[cindex] = NULL;


More information about the svn-src-user mailing list