ath9k: Add ATH9K_DEBUG configuration option
Make debugging configurable, and add a module parameter to give the debug mask. Add debug.c to hold all debug specific code. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
04bd463809
commit
88b126af94
|
@ -9,3 +9,14 @@ config ATH9K
|
|||
Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets.
|
||||
|
||||
If you choose to build a module, it'll be called ath9k.
|
||||
|
||||
config ATH9K_DEBUG
|
||||
bool "Atheros ath9k debugging"
|
||||
depends on ATH9K
|
||||
---help---
|
||||
Say Y, if you need ath9k to display debug messages.
|
||||
Pass the debug mask as a module parameter:
|
||||
|
||||
modprobe ath9k debug=0x00002000
|
||||
|
||||
Look in ath9k/core.h for possible debug masks
|
||||
|
|
|
@ -11,4 +11,6 @@ ath9k-y += hw.o \
|
|||
xmit.o \
|
||||
rc.o
|
||||
|
||||
ath9k-$(CONFIG_ATH9K_DEBUG) += debug.o
|
||||
|
||||
obj-$(CONFIG_ATH9K) += ath9k.o
|
||||
|
|
|
@ -105,6 +105,24 @@ enum ATH_DEBUG {
|
|||
|
||||
#define DBG_DEFAULT (ATH_DBG_FATAL)
|
||||
|
||||
#ifdef CONFIG_ATH9K_DEBUG
|
||||
|
||||
void DPRINTF(struct ath_softc *sc, int dbg_mask, const char *fmt, ...);
|
||||
void ath9k_init_debug(struct ath_softc *sc);
|
||||
|
||||
#else
|
||||
|
||||
static inline void DPRINTF(struct ath_softc *sc, int dbg_mask,
|
||||
const char *fmt, ...)
|
||||
{
|
||||
}
|
||||
|
||||
static inline ath9k_init_debug(struct ath_softc *sc)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
struct ath_config {
|
||||
u32 ath_aggr_prot;
|
||||
u16 txpowlimit;
|
||||
|
@ -619,7 +637,9 @@ struct ath_softc {
|
|||
u8 sc_myaddr[ETH_ALEN];
|
||||
u8 sc_bssidmask[ETH_ALEN];
|
||||
|
||||
#ifdef CONFIG_ATH9K_DEBUG
|
||||
int sc_debug;
|
||||
#endif
|
||||
u32 sc_intrstatus;
|
||||
u32 sc_flags; /* SC_OP_* */
|
||||
unsigned int rx_filter;
|
||||
|
@ -713,7 +733,6 @@ struct ath_softc {
|
|||
struct ath_ani sc_ani;
|
||||
};
|
||||
|
||||
void DPRINTF(struct ath_softc *sc, int dbg_mask, const char *fmt, ...);
|
||||
int ath_reset(struct ath_softc *sc, bool retry_tx);
|
||||
int ath_get_hal_qnum(u16 queue, struct ath_softc *sc);
|
||||
int ath_get_mac80211_qnum(u32 queue, struct ath_softc *sc);
|
||||
|
|
40
drivers/net/wireless/ath9k/debug.c
Normal file
40
drivers/net/wireless/ath9k/debug.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* Copyright (c) 2008 Atheros Communications Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
||||
static unsigned int ath9k_debug = DBG_DEFAULT;
|
||||
module_param_named(debug, ath9k_debug, uint, 0);
|
||||
|
||||
void DPRINTF(struct ath_softc *sc, int dbg_mask, const char *fmt, ...)
|
||||
{
|
||||
if (!sc)
|
||||
return;
|
||||
|
||||
if (sc->sc_debug & dbg_mask) {
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
printk(KERN_DEBUG "ath9k: ");
|
||||
vprintk(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
void ath9k_init_debug(struct ath_softc *sc)
|
||||
{
|
||||
sc->sc_debug = ath9k_debug;
|
||||
}
|
|
@ -38,21 +38,6 @@ static struct pci_device_id ath_pci_id_table[] __devinitdata = {
|
|||
|
||||
static void ath_detach(struct ath_softc *sc);
|
||||
|
||||
void DPRINTF(struct ath_softc *sc, int dbg_mask, const char *fmt, ...)
|
||||
{
|
||||
if (!sc)
|
||||
return;
|
||||
|
||||
if (sc->sc_debug & dbg_mask) {
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
printk(KERN_DEBUG "ath9k: ");
|
||||
vprintk(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
}
|
||||
|
||||
/* return bus cachesize in 4B word units */
|
||||
|
||||
static void bus_read_cachesize(struct ath_softc *sc, int *csz)
|
||||
|
@ -1325,7 +1310,8 @@ static int ath_init(u16 devid, struct ath_softc *sc)
|
|||
|
||||
/* XXX: hardware will not be ready until ath_open() being called */
|
||||
sc->sc_flags |= SC_OP_INVALID;
|
||||
sc->sc_debug = DBG_DEFAULT;
|
||||
|
||||
ath9k_init_debug(sc);
|
||||
|
||||
spin_lock_init(&sc->sc_resetlock);
|
||||
tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc);
|
||||
|
|
Loading…
Reference in a new issue