Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 May 2012 23:39:37 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r235491 - head/sys/dev/ath
Message-ID:  <201205152339.q4FNdbEO011838@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Tue May 15 23:39:37 2012
New Revision: 235491
URL: http://svn.freebsd.org/changeset/base/235491

Log:
  Migrate ath_debug and sc_debug from an int to a uint64_t / QUAD;
  add some more BAR debugging logic.
  
  * Change the definition of ath_debug and ath_softc.sc_debug  from
    int to uint64_t;
  * Change the relevant sysctls;
  * Add a new BAR TX debugging field;
  * Use this in if_ath_tx.
  
  This has been tested by using the sysctl program, which happily allows
  for fields > 32 bits to be configured.

Modified:
  head/sys/dev/ath/if_ath_debug.c
  head/sys/dev/ath/if_ath_debug.h
  head/sys/dev/ath/if_ath_sysctl.c
  head/sys/dev/ath/if_ath_tx.c
  head/sys/dev/ath/if_athvar.h

Modified: head/sys/dev/ath/if_ath_debug.c
==============================================================================
--- head/sys/dev/ath/if_ath_debug.c	Tue May 15 23:31:31 2012	(r235490)
+++ head/sys/dev/ath/if_ath_debug.c	Tue May 15 23:39:37 2012	(r235491)
@@ -89,12 +89,12 @@ __FBSDID("$FreeBSD$");
 #ifdef ATH_DEBUG
 #include <dev/ath/if_ath_debug.h>
 
-int ath_debug = 0;
+uint64_t ath_debug = 0;
 
 SYSCTL_DECL(_hw_ath);
-SYSCTL_INT(_hw_ath, OID_AUTO, debug, CTLFLAG_RW, &ath_debug,
+SYSCTL_QUAD(_hw_ath, OID_AUTO, debug, CTLFLAG_RW, &ath_debug,
 	    0, "control debugging printfs");
-TUNABLE_INT("hw.ath.debug", &ath_debug);
+TUNABLE_QUAD("hw.ath.debug", &ath_debug);
 
 void
 ath_printrxbuf(struct ath_softc *sc, const struct ath_buf *bf,

Modified: head/sys/dev/ath/if_ath_debug.h
==============================================================================
--- head/sys/dev/ath/if_ath_debug.h	Tue May 15 23:31:31 2012	(r235490)
+++ head/sys/dev/ath/if_ath_debug.h	Tue May 15 23:39:37 2012	(r235491)
@@ -34,39 +34,40 @@
 #ifdef	ATH_DEBUG
 
 enum { 
-	ATH_DEBUG_XMIT		= 0x00000001,	/* basic xmit operation */
-	ATH_DEBUG_XMIT_DESC	= 0x00000002,	/* xmit descriptors */
-	ATH_DEBUG_RECV		= 0x00000004,	/* basic recv operation */
-	ATH_DEBUG_RECV_DESC	= 0x00000008,	/* recv descriptors */
-	ATH_DEBUG_RATE		= 0x00000010,	/* rate control */
-	ATH_DEBUG_RESET		= 0x00000020,	/* reset processing */
-	ATH_DEBUG_MODE		= 0x00000040,	/* mode init/setup */
-	ATH_DEBUG_BEACON	= 0x00000080,	/* beacon handling */
-	ATH_DEBUG_WATCHDOG	= 0x00000100,	/* watchdog timeout */
-	ATH_DEBUG_INTR		= 0x00001000,	/* ISR */
-	ATH_DEBUG_TX_PROC	= 0x00002000,	/* tx ISR proc */
-	ATH_DEBUG_RX_PROC	= 0x00004000,	/* rx ISR proc */
-	ATH_DEBUG_BEACON_PROC	= 0x00008000,	/* beacon ISR proc */
-	ATH_DEBUG_CALIBRATE	= 0x00010000,	/* periodic calibration */
-	ATH_DEBUG_KEYCACHE	= 0x00020000,	/* key cache management */
-	ATH_DEBUG_STATE		= 0x00040000,	/* 802.11 state transitions */
-	ATH_DEBUG_NODE		= 0x00080000,	/* node management */
-	ATH_DEBUG_LED		= 0x00100000,	/* led management */
-	ATH_DEBUG_FF		= 0x00200000,	/* fast frames */
-	ATH_DEBUG_DFS		= 0x00400000,	/* DFS processing */
-	ATH_DEBUG_TDMA		= 0x00800000,	/* TDMA processing */
-	ATH_DEBUG_TDMA_TIMER	= 0x01000000,	/* TDMA timer processing */
-	ATH_DEBUG_REGDOMAIN	= 0x02000000,	/* regulatory processing */
-	ATH_DEBUG_SW_TX		= 0x04000000,	/* per-packet software TX */
-	ATH_DEBUG_SW_TX_BAW	= 0x08000000,	/* BAW handling */
-	ATH_DEBUG_SW_TX_CTRL	= 0x10000000,	/* queue control */
-	ATH_DEBUG_SW_TX_AGGR	= 0x20000000,	/* aggregate TX */
-	ATH_DEBUG_SW_TX_RETRIES	= 0x40000000,	/* software TX retries */
-	ATH_DEBUG_FATAL		= 0x80000000,	/* fatal errors */
-	ATH_DEBUG_ANY		= 0xffffffff
+	ATH_DEBUG_XMIT		= 0x000000001ULL,	/* basic xmit operation */
+	ATH_DEBUG_XMIT_DESC	= 0x000000002ULL,	/* xmit descriptors */
+	ATH_DEBUG_RECV		= 0x000000004ULL,	/* basic recv operation */
+	ATH_DEBUG_RECV_DESC	= 0x000000008ULL,	/* recv descriptors */
+	ATH_DEBUG_RATE		= 0x000000010ULL,	/* rate control */
+	ATH_DEBUG_RESET		= 0x000000020ULL,	/* reset processing */
+	ATH_DEBUG_MODE		= 0x000000040ULL,	/* mode init/setup */
+	ATH_DEBUG_BEACON	= 0x000000080ULL,	/* beacon handling */
+	ATH_DEBUG_WATCHDOG	= 0x000000100ULL,	/* watchdog timeout */
+	ATH_DEBUG_INTR		= 0x000001000ULL,	/* ISR */
+	ATH_DEBUG_TX_PROC	= 0x000002000ULL,	/* tx ISR proc */
+	ATH_DEBUG_RX_PROC	= 0x000004000ULL,	/* rx ISR proc */
+	ATH_DEBUG_BEACON_PROC	= 0x000008000ULL,	/* beacon ISR proc */
+	ATH_DEBUG_CALIBRATE	= 0x000010000ULL,	/* periodic calibration */
+	ATH_DEBUG_KEYCACHE	= 0x000020000ULL,	/* key cache management */
+	ATH_DEBUG_STATE		= 0x000040000ULL,	/* 802.11 state transitions */
+	ATH_DEBUG_NODE		= 0x000080000ULL,	/* node management */
+	ATH_DEBUG_LED		= 0x000100000ULL,	/* led management */
+	ATH_DEBUG_FF		= 0x000200000ULL,	/* fast frames */
+	ATH_DEBUG_DFS		= 0x000400000ULL,	/* DFS processing */
+	ATH_DEBUG_TDMA		= 0x000800000ULL,	/* TDMA processing */
+	ATH_DEBUG_TDMA_TIMER	= 0x001000000ULL,	/* TDMA timer processing */
+	ATH_DEBUG_REGDOMAIN	= 0x002000000ULL,	/* regulatory processing */
+	ATH_DEBUG_SW_TX		= 0x004000000ULL,	/* per-packet software TX */
+	ATH_DEBUG_SW_TX_BAW	= 0x008000000ULL,	/* BAW handling */
+	ATH_DEBUG_SW_TX_CTRL	= 0x010000000ULL,	/* queue control */
+	ATH_DEBUG_SW_TX_AGGR	= 0x020000000ULL,	/* aggregate TX */
+	ATH_DEBUG_SW_TX_RETRIES	= 0x040000000ULL,	/* software TX retries */
+	ATH_DEBUG_FATAL		= 0x080000000ULL,	/* fatal errors */
+	ATH_DEBUG_SW_TX_BAR	= 0x100000000ULL,	/* BAR TX */
+	ATH_DEBUG_ANY		= 0xffffffffffffffffULL
 };
 
-extern int	ath_debug;
+extern uint64_t ath_debug;
 
 #define	IFF_DUMPPKTS(sc, m) \
 	((sc->sc_debug & (m)) || \

Modified: head/sys/dev/ath/if_ath_sysctl.c
==============================================================================
--- head/sys/dev/ath/if_ath_sysctl.c	Tue May 15 23:31:31 2012	(r235490)
+++ head/sys/dev/ath/if_ath_sysctl.c	Tue May 15 23:39:37 2012	(r235491)
@@ -501,8 +501,8 @@ ath_sysctlattach(struct ath_softc *sc)
 		"regdomain", CTLFLAG_RD, &sc->sc_eerd, 0,
 		"EEPROM regdomain code");
 #ifdef	ATH_DEBUG
-	SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
-		"debug", CTLFLAG_RW, &sc->sc_debug, 0,
+	SYSCTL_ADD_QUAD(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+		"debug", CTLFLAG_RW, &sc->sc_debug,
 		"control debugging printfs");
 #endif
 	SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,

Modified: head/sys/dev/ath/if_ath_tx.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx.c	Tue May 15 23:31:31 2012	(r235490)
+++ head/sys/dev/ath/if_ath_tx.c	Tue May 15 23:39:37 2012	(r235491)
@@ -2673,7 +2673,7 @@ ath_tx_tid_bar_suspend(struct ath_softc 
 {
 	ATH_TXQ_LOCK_ASSERT(sc->sc_ac2q[tid->ac]);
 
-	DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
 	    "%s: tid=%p, called\n",
 	    __func__,
 	    tid);
@@ -2704,7 +2704,7 @@ ath_tx_tid_bar_unsuspend(struct ath_soft
 {
 	ATH_TXQ_LOCK_ASSERT(sc->sc_ac2q[tid->ac]);
 
-	DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
 	    "%s: tid=%p, called\n",
 	    __func__,
 	    tid);
@@ -2732,6 +2732,9 @@ ath_tx_tid_bar_tx_ready(struct ath_softc
 	if (tid->bar_wait == 0 || tid->hwq_depth > 0)
 		return (0);
 
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR, "%s: tid=%p (%d), bar ready\n",
+	    __func__, tid, tid->tid);
+
 	return (1);
 }
 
@@ -2754,7 +2757,7 @@ ath_tx_tid_bar_tx(struct ath_softc *sc, 
 
 	ATH_TXQ_LOCK_ASSERT(sc->sc_ac2q[tid->ac]);
 
-	DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
 	    "%s: tid=%p, called\n",
 	    __func__,
 	    tid);
@@ -2776,7 +2779,7 @@ ath_tx_tid_bar_tx(struct ath_softc *sc, 
 
 	/* Don't do anything if we still have pending frames */
 	if (tid->hwq_depth > 0) {
-		DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
+		DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
 		    "%s: tid=%p, hwq_depth=%d, waiting\n",
 		    __func__,
 		    tid,
@@ -2793,7 +2796,7 @@ ath_tx_tid_bar_tx(struct ath_softc *sc, 
 	 *
 	 * XXX verify this is _actually_ the valid value to begin at!
 	 */
-	DPRINTF(sc, ATH_DEBUG_SW_TX_BAW,
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
 	    "%s: tid=%p, new BAW left edge=%d\n",
 	    __func__,
 	    tid,
@@ -2865,10 +2868,11 @@ ath_tx_tid_drain(struct ath_softc *sc, s
 			    SEQNO(bf->bf_state.bfs_seqno),
 			    bf->bf_state.bfs_retries);
 			device_printf(sc->sc_dev,
-			    "%s: node %p: bf=%p: tid txq_depth=%d hwq_depth=%d\n",
+			    "%s: node %p: bf=%p: tid txq_depth=%d hwq_depth=%d, bar_wait=%d\n",
 			    __func__, ni, bf,
 			    tid->axq_depth,
-			    tid->hwq_depth);
+			    tid->hwq_depth,
+			    tid->bar_wait);
 			device_printf(sc->sc_dev,
 			    "%s: node %p: bf=%p: tid %d: txq_depth=%d, "
 			    "txq_aggr_depth=%d, sched=%d, paused=%d, "
@@ -4440,8 +4444,11 @@ ath_bar_response(struct ieee80211_node *
 	struct ath_tid *atid = &an->an_tid[tid];
 	int attempts = tap->txa_attempts;
 
-	DPRINTF(sc, ATH_DEBUG_SW_TX_CTRL,
-	    "%s: called; status=%d\n", __func__, status);
+	DPRINTF(sc, ATH_DEBUG_SW_TX_BAR,
+	    "%s: called; status=%d, attempts=%d\n",
+	    __func__,
+	    status,
+	    attempts);
 
 	/* Note: This may update the BAW details */
 	sc->sc_bar_response(ni, tap, status);

Modified: head/sys/dev/ath/if_athvar.h
==============================================================================
--- head/sys/dev/ath/if_athvar.h	Tue May 15 23:31:31 2012	(r235490)
+++ head/sys/dev/ath/if_athvar.h	Tue May 15 23:39:37 2012	(r235491)
@@ -351,7 +351,7 @@ struct ath_softc {
 	struct ath_stats	sc_stats;	/* interface statistics */
 	struct ath_tx_aggr_stats	sc_aggr_stats;
 	struct ath_intr_stats	sc_intr_stats;
-	int			sc_debug;
+	uint64_t		sc_debug;
 	int			sc_nvaps;	/* # vaps */
 	int			sc_nstavaps;	/* # station vaps */
 	int			sc_nmeshvaps;	/* # mbss vaps */



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