Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 May 2013 21:18:00 +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: r250619 - head/sys/dev/ath
Message-ID:  <201305132118.r4DLI0lI093907@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: adrian
Date: Mon May 13 21:18:00 2013
New Revision: 250619
URL: http://svnweb.freebsd.org/changeset/base/250619

Log:
  Add ALQ beacon debugging.

Modified:
  head/sys/dev/ath/if_ath.c
  head/sys/dev/ath/if_ath_alq.h
  head/sys/dev/ath/if_ath_beacon.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Mon May 13 21:17:27 2013	(r250618)
+++ head/sys/dev/ath/if_ath.c	Mon May 13 21:18:00 2013	(r250619)
@@ -3058,6 +3058,11 @@ ath_bstuck_proc(void *arg, int pending)
 	if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0)
 		if_printf(ifp, "bb hang detected (0x%x)\n", hangs);
 
+#ifdef	ATH_DEBUG_ALQ
+	if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_STUCK_BEACON))
+		if_ath_alq_post(&sc->sc_alq, ATH_ALQ_STUCK_BEACON, 0, NULL);
+#endif
+
 	if_printf(ifp, "stuck beacon; resetting (bmiss count %u)\n",
 		sc->sc_bmisscount);
 	sc->sc_stats.ast_bstuck++;

Modified: head/sys/dev/ath/if_ath_alq.h
==============================================================================
--- head/sys/dev/ath/if_ath_alq.h	Mon May 13 21:17:27 2013	(r250618)
+++ head/sys/dev/ath/if_ath_alq.h	Mon May 13 21:18:00 2013	(r250619)
@@ -99,6 +99,20 @@ struct if_ath_alq_interrupt {
 	uint32_t	intr_syncstate;
 };
 
+#define	ATH_ALQ_MIB_COUNTERS		11
+struct if_ath_alq_mib_counters {
+	uint32_t	valid;
+	uint32_t	tx_busy;
+	uint32_t	rx_busy;
+	uint32_t	chan_busy;
+	uint32_t	ext_chan_busy;
+	uint32_t	cycle_count;
+};
+
+#define	ATH_ALQ_MISSED_BEACON		12
+#define	ATH_ALQ_STUCK_BEACON		13
+#define	ATH_ALQ_RESUME_BEACON		14
+
 /*
  * These will always be logged, regardless.
  */

Modified: head/sys/dev/ath/if_ath_beacon.c
==============================================================================
--- head/sys/dev/ath/if_ath_beacon.c	Mon May 13 21:17:27 2013	(r250618)
+++ head/sys/dev/ath/if_ath_beacon.c	Mon May 13 21:18:00 2013	(r250619)
@@ -399,6 +399,11 @@ ath_beacon_miss(struct ath_softc *sc)
 		    hangs);
 	}
 
+#ifdef	ATH_DEBUG_ALQ
+	if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_MISSED_BEACON))
+		if_ath_alq_post(&sc->sc_alq, ATH_ALQ_MISSED_BEACON, 0, NULL);
+#endif
+
 	DPRINTF(sc, ATH_DEBUG_BEACON,
 	    "%s: valid=%d, txbusy=%u, rxbusy=%u, chanbusy=%u, "
 	    "extchanbusy=%u, cyclecount=%u\n",
@@ -451,6 +456,10 @@ ath_beacon_proc(void *arg, int pending)
 			"%s: resume beacon xmit after %u misses\n",
 			__func__, sc->sc_bmisscount);
 		sc->sc_bmisscount = 0;
+#ifdef	ATH_DEBUG_ALQ
+		if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_RESUME_BEACON))
+			if_ath_alq_post(&sc->sc_alq, ATH_ALQ_RESUME_BEACON, 0, NULL);
+#endif
 	}
 
 	if (sc->sc_stagbeacons) {			/* staggered beacons */



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