On Wed, 2012-03-07 at 16:05 -0800, gree...@candelatech.com wrote:
> From: Ben Greear <gree...@candelatech.com>
> 
> On systems with multiple NICs, it's nice to know which
> one is producing warnings.  Here is an example of the
> new ouput:
> 
> ath: wiphy0: Failed to stop TX DMA, queues=0x005!

Makes some sense.

> diff --git a/drivers/net/wireless/ath/ath.h b/drivers/net/wireless/ath/ath.h
[]
> @@ -174,12 +174,13 @@ bool ath_hw_keyreset(struct ath_common *common, u16 
> entry);
>  void ath_hw_cycle_counters_update(struct ath_common *common);
>  int32_t ath_hw_get_listen_time(struct ath_common *common);
>  
> -extern __printf(2, 3) void ath_printk(const char *level, const char *fmt, 
> ...);
> +extern __printf(3, 4) void ath_printk(const char *level,
> +                                   const struct ath_common *common,
> +                                   const char *fmt, ...);

Maybe

__printf(3, 4)
void ath_printk(etc...

>  
>  #define _ath_printk(level, common, fmt, ...)                 \
>  do {                                                         \
> -     __always_unused struct ath_common *unused = common;     \
> -     ath_printk(level, fmt, ##__VA_ARGS__);                  \
> +     ath_printk(level, common, fmt, ##__VA_ARGS__);          \
>  } while (0)
>  
>  #define ath_emerg(common, fmt, ...)                          \

It's probably better to remove the _ath_printk
indirection altogether and just use ath_printk
directly in the ath_<level> macros.

> diff --git a/drivers/net/wireless/ath/main.c b/drivers/net/wireless/ath/main.c
[]
> @@ -57,7 +57,8 @@ struct sk_buff *ath_rxbuf_alloc(struct ath_common *common,
>  }
>  EXPORT_SYMBOL(ath_rxbuf_alloc);
>  
> -void ath_printk(const char *level, const char *fmt, ...)
> +void ath_printk(const char *level, const struct ath_common* common,
> +             const char *fmt, ...)
>  {
>       struct va_format vaf;
>       va_list args;
> @@ -67,7 +68,11 @@ void ath_printk(const char *level, const char *fmt, ...)
>       vaf.fmt = fmt;
>       vaf.va = &args;
>  
> -     printk("%sath: %pV", level, &vaf);
> +     if (common && common->hw && common->hw->wiphy)
> +             printk("%sath: %s: %pV",
> +                    level, wiphy_name(common->hw->wiphy), &vaf);
> +     else
> +             printk("%sath: %pV", level, &vaf);
>  
>       va_end(args);

Maybe it's better to print wiphyX: only when
multiple ath nics exist?



_______________________________________________
ath9k-devel mailing list
ath9k-devel@lists.ath9k.org
https://lists.ath9k.org/mailman/listinfo/ath9k-devel

Reply via email to