Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Sep 2011 02:31:57 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r225411 - user/adrian/if_ath_tx/sys/dev/ath
Message-ID:  <201109060231.p862VviT064155@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Tue Sep  6 02:31:57 2011
New Revision: 225411
URL: http://svn.freebsd.org/changeset/base/225411

Log:
  Add some debugging to keep track when TX buffers are either busy or missing.

Modified:
  user/adrian/if_ath_tx/sys/dev/ath/if_ath.c
  user/adrian/if_ath_tx/sys/dev/ath/if_ath_sysctl.c
  user/adrian/if_ath_tx/sys/dev/ath/if_athioctl.h

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath.c	Tue Sep  6 01:42:49 2011	(r225410)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath.c	Tue Sep  6 02:31:57 2011	(r225411)
@@ -1860,6 +1860,15 @@ _ath_getbuf_locked(struct ath_softc *sc)
 	ATH_TXBUF_LOCK_ASSERT(sc);
 
 	bf = TAILQ_FIRST(&sc->sc_txbuf);
+	if (bf == NULL) {
+		sc->sc_stats.ast_tx_getnobuf++;
+	} else {
+		if (bf->bf_flags & ATH_BUF_BUSY) {
+			sc->sc_stats.ast_tx_getbusybuf++;
+			bf = NULL;
+		}
+	}
+
 	if (bf != NULL && (bf->bf_flags & ATH_BUF_BUSY) == 0)
 		TAILQ_REMOVE(&sc->sc_txbuf, bf, bf_list);
 	else

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_ath_sysctl.c
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_ath_sysctl.c	Tue Sep  6 01:42:49 2011	(r225410)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_ath_sysctl.c	Tue Sep  6 02:31:57 2011	(r225411)
@@ -313,6 +313,9 @@ ath_sysctl_txagg(SYSCTL_HANDLER_ARGS)
 	if (param != 1)
 		return 0;
 
+	printf("no tx bufs (empty list): %d\n", sc->sc_stats.ast_tx_getnobuf);
+	printf("no tx bufs (was busy): %d\n", sc->sc_stats.ast_tx_getbusybuf);
+
 	printf("aggr single packet: %d\n",
 	    sc->sc_aggr_stats.aggr_single_pkt);
 	printf("aggr single packet w/ BAW closed: %d\n",

Modified: user/adrian/if_ath_tx/sys/dev/ath/if_athioctl.h
==============================================================================
--- user/adrian/if_ath_tx/sys/dev/ath/if_athioctl.h	Tue Sep  6 01:42:49 2011	(r225410)
+++ user/adrian/if_ath_tx/sys/dev/ath/if_athioctl.h	Tue Sep  6 02:31:57 2011	(r225411)
@@ -149,6 +149,8 @@ struct ath_stats {
 	u_int32_t	ast_tx_data_underrun;
 	u_int32_t	ast_tx_delim_underrun;
 	u_int32_t	ast_tx_aggrfail;		/* aggregate TX failed in its entirety */
+	u_int32_t	ast_tx_getnobuf;
+	u_int32_t	ast_tx_getbusybuf;
 	u_int32_t	ast_tx_intr;
 	u_int32_t	ast_rx_intr;
 	u_int32_t	ast_pad[7];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109060231.p862VviT064155>