2006-10-10 12:21:33

by Robert P. J. Day

[permalink] [raw]
Subject: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.


Delete the minimally-useful IXGB_DBG() macro and call pr_debug()
directly from the main routine.

Signed-off-by: Robert P. J. Day <[email protected]>
---
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
index 50ffe90..fb9fde5 100644
--- a/drivers/net/ixgb/ixgb.h
+++ b/drivers/net/ixgb/ixgb.h
@@ -77,12 +77,6 @@ #include "ixgb_hw.h"
#include "ixgb_ee.h"
#include "ixgb_ids.h"

-#ifdef _DEBUG_DRIVER_
-#define IXGB_DBG(args...) printk(KERN_DEBUG "ixgb: " args)
-#else
-#define IXGB_DBG(args...)
-#endif
-
#define PFX "ixgb: "
#define DPRINTK(nlevel, klevel, fmt, args...) \
(void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index e09f575..eada685 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1948,7 +1948,7 @@ #endif

/* All receives must fit into a single buffer */

- IXGB_DBG("Receive packet consumed multiple buffers "
+ pr_debug("ixgb: Receive packet consumed multiple buffers "
"length<%x>\n", length);

dev_kfree_skb_irq(skb);

--

all right ... what did i mess up *this* time? :-) it's good
practice. that's my story and i'm sticking to it.

rday


2006-10-10 16:16:05

by Kok, Auke

[permalink] [raw]
Subject: Re: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.

Robert P. J. Day wrote:
> Delete the minimally-useful IXGB_DBG() macro and call pr_debug()
> directly from the main routine.
>
> Signed-off-by: Robert P. J. Day <[email protected]>
> ---
> diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
> index 50ffe90..fb9fde5 100644
> --- a/drivers/net/ixgb/ixgb.h
> +++ b/drivers/net/ixgb/ixgb.h
> @@ -77,12 +77,6 @@ #include "ixgb_hw.h"
> #include "ixgb_ee.h"
> #include "ixgb_ids.h"
>
> -#ifdef _DEBUG_DRIVER_
> -#define IXGB_DBG(args...) printk(KERN_DEBUG "ixgb: " args)
> -#else
> -#define IXGB_DBG(args...)
> -#endif
> -
> #define PFX "ixgb: "
> #define DPRINTK(nlevel, klevel, fmt, args...) \
> (void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \
> diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
> index e09f575..eada685 100644
> --- a/drivers/net/ixgb/ixgb_main.c
> +++ b/drivers/net/ixgb/ixgb_main.c
> @@ -1948,7 +1948,7 @@ #endif
>
> /* All receives must fit into a single buffer */
>
> - IXGB_DBG("Receive packet consumed multiple buffers "
> + pr_debug("ixgb: Receive packet consumed multiple buffers "
> "length<%x>\n", length);
>
> dev_kfree_skb_irq(skb);
>
> --
>
> all right ... what did i mess up *this* time? :-) it's good
> practice. that's my story and i'm sticking to it.

We should really use dev_dbg() instead, as it retains the 'ethX:' annotation afaics.

I'll have to see what looks best and also handle e100 and e1000.

Thanks,

Auke

2006-10-10 16:38:10

by Robert P. J. Day

[permalink] [raw]
Subject: Re: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.

On Tue, 10 Oct 2006, Auke Kok wrote:

> Robert P. J. Day wrote:
> > Delete the minimally-useful IXGB_DBG() macro and call pr_debug()
> > directly from the main routine.
> >
> > Signed-off-by: Robert P. J. Day <[email protected]>
> > ---
> > diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
> > index 50ffe90..fb9fde5 100644
> > --- a/drivers/net/ixgb/ixgb.h
> > +++ b/drivers/net/ixgb/ixgb.h
> > @@ -77,12 +77,6 @@ #include "ixgb_hw.h"
> > #include "ixgb_ee.h"
> > #include "ixgb_ids.h"
> >
> > -#ifdef _DEBUG_DRIVER_
> > -#define IXGB_DBG(args...) printk(KERN_DEBUG "ixgb: " args)
> > -#else
> > -#define IXGB_DBG(args...)
> > -#endif
> > -
> > #define PFX "ixgb: "
> > #define DPRINTK(nlevel, klevel, fmt, args...) \
> > (void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \
> > diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
> > index e09f575..eada685 100644
> > --- a/drivers/net/ixgb/ixgb_main.c
> > +++ b/drivers/net/ixgb/ixgb_main.c
> > @@ -1948,7 +1948,7 @@ #endif
> >
> > /* All receives must fit into a single buffer */
> >
> > - IXGB_DBG("Receive packet consumed multiple buffers "
> > + pr_debug("ixgb: Receive packet consumed multiple
> > buffers "
> > "length<%x>\n", length);
> >
> > dev_kfree_skb_irq(skb);
> >
> > --
> >
> > all right ... what did i mess up *this* time? :-) it's good
> > practice. that's my story and i'm sticking to it.
>
> We should really use dev_dbg() instead, as it retains the 'ethX:'
> annotation afaics.

i actually tried to use that first, but it wasn't clear to me what i
would use as that first argument to dev_dbg(), given the definitions
in include/linux/device.h:

#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG , dev , format , ## arg)

#define dev_printk(level, dev, format, arg...) \
printk(level "%s %s: " format , dev_driver_string(dev) ,
(dev)->bus_id , ## arg)

if someone wants to tell me what, in the context of ixgb_main.c, i
would use as that "dev" argument, i'm all for that.

rday

2006-10-10 16:52:49

by Kok, Auke

[permalink] [raw]
Subject: Re: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.

Robert P. J. Day wrote:
> On Tue, 10 Oct 2006, Auke Kok wrote:
>
>> Robert P. J. Day wrote:
>>> Delete the minimally-useful IXGB_DBG() macro and call pr_debug()
>>> directly from the main routine.
>>>
>>> Signed-off-by: Robert P. J. Day <[email protected]>
>>> ---
>>> diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
>>> index 50ffe90..fb9fde5 100644
>>> --- a/drivers/net/ixgb/ixgb.h
>>> +++ b/drivers/net/ixgb/ixgb.h
>>> @@ -77,12 +77,6 @@ #include "ixgb_hw.h"
>>> #include "ixgb_ee.h"
>>> #include "ixgb_ids.h"
>>>
>>> -#ifdef _DEBUG_DRIVER_
>>> -#define IXGB_DBG(args...) printk(KERN_DEBUG "ixgb: " args)
>>> -#else
>>> -#define IXGB_DBG(args...)
>>> -#endif
>>> -
>>> #define PFX "ixgb: "
>>> #define DPRINTK(nlevel, klevel, fmt, args...) \
>>> (void)((NETIF_MSG_##nlevel & adapter->msg_enable) && \
>>> diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
>>> index e09f575..eada685 100644
>>> --- a/drivers/net/ixgb/ixgb_main.c
>>> +++ b/drivers/net/ixgb/ixgb_main.c
>>> @@ -1948,7 +1948,7 @@ #endif
>>>
>>> /* All receives must fit into a single buffer */
>>>
>>> - IXGB_DBG("Receive packet consumed multiple buffers "
>>> + pr_debug("ixgb: Receive packet consumed multiple
>>> buffers "
>>> "length<%x>\n", length);
>>>
>>> dev_kfree_skb_irq(skb);
>>>
>>> --
>>>
>>> all right ... what did i mess up *this* time? :-) it's good
>>> practice. that's my story and i'm sticking to it.
>>
>> We should really use dev_dbg() instead, as it retains the 'ethX:'
>> annotation afaics.
>
> i actually tried to use that first, but it wasn't clear to me what i
> would use as that first argument to dev_dbg(), given the definitions
> in include/linux/device.h:
>
> #define dev_dbg(dev, format, arg...) \
> dev_printk(KERN_DEBUG , dev , format , ## arg)
>
> #define dev_printk(level, dev, format, arg...) \
> printk(level "%s %s: " format , dev_driver_string(dev) ,
> (dev)->bus_id , ## arg)
>
> if someone wants to tell me what, in the context of ixgb_main.c, i
> would use as that "dev" argument, i'm all for that.

(CC netdev since it's a network driver topic).


all our macro's (e100, e1000, ixgb) use adapter->netdev->name inserted through the
DPRINTK macro.

if you'd really want to clean it all up, you'd have to replace all DPRINTK() calls with
dev_dbg(adapter->netdev->name, ....) which would just make it more lengthy and
uncomfortable to read.

which puts this in a bigger perspective. I suppose the nicest way to do program these is
to do something like this:

#define ixgb_dbg(args...) dev_dbg(adapter->netdev->name, args)
#define ixgb_err(args...) dev_err(adapter->netdev->name, args)
#define ixgb_info(args...) dev_info(adapter->netdev->name, args)

and use those consistently throughout the driver, ditto for e100/e1000.

I'll look into it and see what I can do.

Cheers,

Auke


2006-10-10 17:52:46

by Robert P. J. Day

[permalink] [raw]
Subject: Re: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.

On Tue, 10 Oct 2006, Auke Kok wrote:

> Robert P. J. Day wrote:

... snip ...

> > if someone wants to tell me what, in the context of ixgb_main.c,
> > i would use as that "dev" argument [for dev_dbg], i'm all for
> > that.
>
> (CC netdev since it's a network driver topic).
>
> all our macro's (e100, e1000, ixgb) use adapter->netdev->name
> inserted through the DPRINTK macro.
>
> if you'd really want to clean it all up, you'd have to replace all
> DPRINTK() calls with dev_dbg(adapter->netdev->name, ....) which
> would just make it more lengthy and uncomfortable to read.
>
> which puts this in a bigger perspective. I suppose the nicest way to do
> program these is to do something like this:
>
> #define ixgb_dbg(args...) dev_dbg(adapter->netdev->name, args)
> #define ixgb_err(args...) dev_err(adapter->netdev->name, args)
> #define ixgb_info(args...) dev_info(adapter->netdev->name, args)
>
> and use those consistently throughout the driver, ditto for e100/e1000.
>
> I'll look into it and see what I can do.

um, yeah. i'm rapidly getting out of my comfort zone here. this
seemed like such a simple submission six hours ago. :-) live and
learn.

rday

2006-10-10 18:23:16

by Kok, Auke

[permalink] [raw]
Subject: Re: [PATCH] ixgb: Delete IXGB_DBG() macro and call pr_debug() directly.

Robert P. J. Day wrote:
> On Tue, 10 Oct 2006, Auke Kok wrote:
>
>> Robert P. J. Day wrote:
>
> ... snip ...
>
>>> if someone wants to tell me what, in the context of ixgb_main.c,
>>> i would use as that "dev" argument [for dev_dbg], i'm all for
>>> that.
>> (CC netdev since it's a network driver topic).
>>
>> all our macro's (e100, e1000, ixgb) use adapter->netdev->name
>> inserted through the DPRINTK macro.
>>
>> if you'd really want to clean it all up, you'd have to replace all
>> DPRINTK() calls with dev_dbg(adapter->netdev->name, ....) which
>> would just make it more lengthy and uncomfortable to read.
>>
>> which puts this in a bigger perspective. I suppose the nicest way to do
>> program these is to do something like this:
>>
>> #define ixgb_dbg(args...) dev_dbg(adapter->netdev->name, args)
>> #define ixgb_err(args...) dev_err(adapter->netdev->name, args)
>> #define ixgb_info(args...) dev_info(adapter->netdev->name, args)
>>
>> and use those consistently throughout the driver, ditto for e100/e1000.
>>
>> I'll look into it and see what I can do.
>
> um, yeah. i'm rapidly getting out of my comfort zone here. this
> seemed like such a simple submission six hours ago. :-) live and
> learn.

digging into it much deeper, dev_dbg seems horribly unsuited for our needs as it prints
the pci bus address and al. That's a lot of information when we really only care about
'eth0: ' perhaps with 'ixgb: ' prepended to it.

You end up with pretty much the same code that was there before - unless we make
something common for netdevices and use that instead:

#define netdev_dbg(netdev, args...) pr_debug(netdev->name, args)

and then use this stacked in the driver:

#define ixgb_dbg(args...) netdev_dbg(adapter->netdev, args)

that would seem clean and appropriate, and since this bit of infrastructure is missing
from netdevice.h, explains the current situation in all netdrivers (chaos).

of course, I'm completely not taking netif_msg_level into account yet here, which
probably makes it a bit more hairy.


Auke