On Tuesday 05 February 2008 00:03:54 Luis R. Rodriguez wrote:
> diff --git a/drivers/net/wireless/ath5k/Kconfig
> b/drivers/net/wireless/ath5k/Kconfig index af1b6b8..31d570e 100644
> --- a/drivers/net/wireless/ath5k/Kconfig
> +++ b/drivers/net/wireless/ath5k/Kconfig
> @@ -14,3 +14,24 @@ config ATH5K
>
> If you choose to build a module, it'll be called ath5k. Say M if
> unsure.
> +
> +config ATH5K_DEBUG
> + bool "Atheros 5xxx debugging"
> + depends on ATH5K
> + ---help---
> + Atheros 5xxx debugging messages.
> +
> + Say Y, if and you will get debug options for ath5k.
> + To use this, you need to mount debugfs:
> +
> + mkdir /debug/
> + mount -t debugfs debug /debug/
> +
> + You will get access to files under:
> + /debug/ath5k/phy0/
> +
> + To enable debug, pass the debug level to the debug module
> + parameter. For example:
> +
> + modprobe ath5k debug=0x00000400
maybe worth to note too:
also you can echo the debug level into /debug/ath5k/phy0/debug to toggle its
state, e.g.
echo dumptx > /debug/ath5k/phy0/debug
> -ath5k_debug_dump_modes(struct ath5k_softc *sc, struct ieee80211_hw_mode
> *modes) +ath5k_debug_dump_bands(struct ath5k_softc *sc)
> {
> - unsigned int m, i;
> + unsigned int b, i;
>
> - if (likely(!(sc->debug.level & ATH5K_DEBUG_DUMPMODES)))
> + if (likely(!(sc->debug.level & ATH5K_DEBUG_DUMPBANDS)))
> return;
>
> - for (m = 0; m < NUM_DRIVER_MODES; m++) {
> - printk(KERN_DEBUG "Mode %u: channels %d, rates %d\n", m,
> - modes[m].num_channels, modes[m].num_rates);
> + BUG_ON(!sc->sbands);
> +
> + for (b = 0; b < IEEE80211_NUM_BANDS; b++) {
> + struct ieee80211_supported_band *band = &sc->sbands[b];
> + char bname[5];
> + switch (band->band) {
> + case IEEE80211_BAND_2GHZ:
> + strcpy(bname, "2 GHz");
> + break;
> + case IEEE80211_BAND_5GHZ:
> + strcpy(bname, "5 GHz");
> + break;
> + default:
> + printk(KERN_DEBUG "Band not supported: %d\n",
> + band->band);
> + return;
> + }
> + printk(KERN_DEBUG "Band %s: channels %d, rates %d\n", bname,
> + band->n_channels, band->n_bitrates);
that looks a bit unnecessary to me. wouldn't something like that:
printk(KERN_DEBUG "Band %d GHz: channels %d, rates %d\n",
band->band == IEEE80211_BAND_2GHZ ? 2 : 5,
band->n_channels, band->n_bitrates);
be easier? but whatever, it's just debug code.
> printk(KERN_DEBUG " channels:\n");
> - for (i = 0; i < modes[m].num_channels; i++)
> + for (i = 0; i < band->n_channels; i++)
> printk(KERN_DEBUG " %3d %d %.4x %.4x\n",
> - modes[m].channels[i].chan,
> - modes[m].channels[i].freq,
> - modes[m].channels[i].val,
> - modes[m].channels[i].flag);
> + ieee80211_frequency_to_channel(
> + band->channels[i].center_freq),
> + band->channels[i].center_freq,
> + band->channels[i].hw_value,
> + band->channels[i].flags);
> printk(KERN_DEBUG " rates:\n");
> - for (i = 0; i < modes[m].num_rates; i++)
> + for (i = 0; i < band->n_bitrates; i++)
> printk(KERN_DEBUG " %4d %.4x %.4x %.4x\n",
> - modes[m].rates[i].rate,
> - modes[m].rates[i].val,
> - modes[m].rates[i].flags,
> - modes[m].rates[i].val2);
> + band->bitrates[i].bitrate,
> + band->bitrates[i].hw_value,
> + band->bitrates[i].flags,
> + band->bitrates[i].hw_value_short);
> }
> }
>
> @@ -548,4 +565,4 @@ ath5k_debug_printtxbuf(struct ath5k_softc *sc,
> !done ? ' ' : (ds->ds_txstat.ts_status == 0) ? '*' : '!');
> }
>
> -#endif /* if ATH5K_DEBUG */
> +#endif /* ifdef CONFIG_ATH5K_DEBUG */
> diff --git a/drivers/net/wireless/ath5k/debug.h
> b/drivers/net/wireless/ath5k/debug.h index c4fd8c4..16fbb6f 100644
> --- a/drivers/net/wireless/ath5k/debug.h
> +++ b/drivers/net/wireless/ath5k/debug.h
> @@ -61,11 +61,6 @@
> #ifndef _ATH5K_DEBUG_H
> #define _ATH5K_DEBUG_H
>
> -/* set this to 1 for debugging output */
> -#ifndef ATH5K_DEBUG
> -#define ATH5K_DEBUG 0
> -#endif
> -
> struct ath5k_softc;
> struct ath5k_hw;
> struct ieee80211_hw_mode;
> @@ -96,7 +91,7 @@ struct ath5k_dbg_info {
> * @ATH5K_DEBUG_LED: led management
> * @ATH5K_DEBUG_DUMP_RX: print received skb content
> * @ATH5K_DEBUG_DUMP_TX: print transmit skb content
> - * @ATH5K_DEBUG_DUMPMODES: dump modes
> + * @ATH5K_DEBUG_DUMPBANDS: dump bands
> * @ATH5K_DEBUG_TRACE: trace function calls
> * @ATH5K_DEBUG_ANY: show at any debug level
> *
> @@ -118,12 +113,12 @@ enum ath5k_debug_level {
> ATH5K_DEBUG_LED = 0x00000080,
> ATH5K_DEBUG_DUMP_RX = 0x00000100,
> ATH5K_DEBUG_DUMP_TX = 0x00000200,
> - ATH5K_DEBUG_DUMPMODES = 0x00000400,
> + ATH5K_DEBUG_DUMPBANDS = 0x00000400,
> ATH5K_DEBUG_TRACE = 0x00001000,
> ATH5K_DEBUG_ANY = 0xffffffff
> };
>
> -#if ATH5K_DEBUG
> +#ifdef CONFIG_ATH5K_DEBUG
>
> #define ATH5K_TRACE(_sc) do { \
> if (unlikely((_sc)->debug.level & ATH5K_DEBUG_TRACE)) \
> @@ -158,8 +153,7 @@ void
> ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah);
>
> void
> -ath5k_debug_dump_modes(struct ath5k_softc *sc,
> - struct ieee80211_hw_mode *modes);
> +ath5k_debug_dump_bands(struct ath5k_softc *sc);
>
> void
> ath5k_debug_dump_skb(struct ath5k_softc *sc,
> @@ -196,8 +190,7 @@ static inline void
> ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah) {}
>
> static inline void
> -ath5k_debug_dump_modes(struct ath5k_softc *sc,
> - struct ieee80211_hw_mode *modes) {}
> +ath5k_debug_dump_bands(struct ath5k_softc *sc) {}
>
> static inline void
> ath5k_debug_dump_skb(struct ath5k_softc *sc,
> @@ -207,6 +200,6 @@ static inline void
> ath5k_debug_printtxbuf(struct ath5k_softc *sc,
> struct ath5k_buf *bf, int done) {}
>
> -#endif /* if ATH5K_DEBUG */
> +#endif /* ifdef CONFIG_ATH5K_DEBUG */
>
> #endif /* ifndef _ATH5K_DEBUG_H */
_______________________________________________
ath5k-devel mailing list
[email protected]
https://lists.ath5k.org/mailman/listinfo/ath5k-devel