Subject: Re: Printing the driver name as part of the netdev watchdog message

From: Stephen Hemminger <[email-masked]>
Date: Tue, 8 Jul 2008 20:16:58 -0700

On Tue, 8 Jul 2008 18:44:56 -0700
Arjan van de Ven <[email-masked]> wrote:

> On Tue, 08 Jul 2008 16:53:04 -0700 (PDT)
> David Miller <[email-masked]> wrote:
> 
> > From: Arjan van de Ven <[email-masked]>
> > Date: Tue, 8 Jul 2008 16:48:26 -0700
> > 
> > > On Tue, 08 Jul 2008 14:57:38 -0700 (PDT)
> > > David Miller <[email-masked]> wrote:
> > > 
> > > > What we need instead is to cache the info block into the netdev
> > > > struct when the driver is ->open()'d, and then you can fetch it
> > > > out of there however you like.
> > > 
> > > but.. isn't that like almost the same as using the object model
> > > data at that point?
> > 
> > You're right, this is getting silly
> > 
> > To be honest, the more I think about this, the driver->name should
> > be sufficient.
> > 
> 
> ok here it is:
> 
> From: Arjan van de Ven <[email-masked]>
> Subject: Print the module name as part of the watchdog message
> 
> As suggested by Dave:
> 
> This patch adds a function to get the driver name from a struct net_device,
> and consequently uses this in the watchdog timeout handler to print as 
> part of the message. 
> 
> Signed-off-by: Arjan van de Ven <[email-masked]>
> ---
>  include/linux/netdevice.h |    2 ++
>  net/core/dev.c            |   19 +++++++++++++++++++
>  net/sched/sch_generic.c   |    7 ++++---
>  3 files changed, 25 insertions(+), 3 deletions(-)
> 
> Index: linux.trees.git/include/linux/netdevice.h
> ===================================================================
> --- linux.trees.git.orig/include/linux/netdevice.h
> +++ linux.trees.git/include/linux/netdevice.h
> @@ -1516,6 +1516,8 @@ extern void dev_seq_stop(struct seq_file
>  extern int netdev_class_create_file(struct class_attribute *class_attr);
>  extern void netdev_class_remove_file(struct class_attribute *class_attr);
>  
> +extern void netdev_drivername(struct net_device *dev, char *buffer, int len);
> +
>  extern void linkwatch_run_queue(void);
>  
>  extern int netdev_compute_features(unsigned long all, unsigned long one);
> Index: linux.trees.git/net/core/dev.c
> ===================================================================
> --- linux.trees.git.orig/net/core/dev.c
> +++ linux.trees.git/net/core/dev.c
> @@ -4554,6 +4554,25 @@ err_name:
>  	return -ENOMEM;
>  }
>  
> +void netdev_drivername(struct net_device *dev, char *buffer, int len)

void netdev_drivername(const struct net_device *dev, char *buffer, int len)

since net device not changed.