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>