2007-12-12 18:39:13

by Andrew Gallatin

[permalink] [raw]
Subject: [PATCH][NETDEV]: remove netif_running() check from myri10ge_poll()

diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
index 8def865..c90958f 100644
--- a/drivers/net/myri10ge/myri10ge.c
+++ b/drivers/net/myri10ge/myri10ge.c
@@ -1239,7 +1239,7 @@ static int myri10ge_poll(struct napi_str
/* process as many rx events as NAPI will allow */
work_done = myri10ge_clean_rx_done(mgp, budget);

- if (work_done < budget || !netif_running(netdev)) {
+ if (work_done < budget) {
netif_rx_complete(netdev, napi);
put_be32(htonl(3), mgp->irq_claim);
}


Attachments:
myri10ge_remove_netif_running.diff (515.00 B)

2007-12-12 19:02:54

by David Miller

[permalink] [raw]
Subject: Re: [PATCH][NETDEV]: remove netif_running() check from myri10ge_poll()

From: Andrew Gallatin <[email protected]>
Date: Wed, 12 Dec 2007 13:38:34 -0500

> Remove the bogus netif_running() check from myri10ge_poll().
>
> This eliminates any chance that myri10ge_poll() can trigger
> an oops by calling netif_rx_complete() and returning
> with work_done == budget.
>
> Signed-off-by: Andrew Gallatin <[email protected]>

Acked-by: David S. Miller <[email protected]>

2007-12-17 23:19:52

by Jeff Garzik

[permalink] [raw]
Subject: Re: [PATCH][NETDEV]: remove netif_running() check from myri10ge_poll()

Andrew Gallatin wrote:
> Remove the bogus netif_running() check from myri10ge_poll().
>
> This eliminates any chance that myri10ge_poll() can trigger
> an oops by calling netif_rx_complete() and returning
> with work_done == budget.
>
> Signed-off-by: Andrew Gallatin <[email protected]>

holding onto this patch but not applying, because NAPI discussions
appear to be continuing...

2007-12-21 00:37:29

by David Miller

[permalink] [raw]
Subject: Re: [PATCH][NETDEV]: remove netif_running() check from myri10ge_poll()

From: Andrew Morton <[email protected]>
Date: Thu, 20 Dec 2007 16:05:18 -0800

> On Wed, 12 Dec 2007 11:02:43 -0800 (PST)
> David Miller <[email protected]> wrote:
>
> > From: Andrew Gallatin <[email protected]>
> > Date: Wed, 12 Dec 2007 13:38:34 -0500
> >
> > > Remove the bogus netif_running() check from myri10ge_poll().
> > >
> > > This eliminates any chance that myri10ge_poll() can trigger
> > > an oops by calling netif_rx_complete() and returning
> > > with work_done == budget.
> > >
> > > Signed-off-by: Andrew Gallatin <[email protected]>
> >
> > Acked-by: David S. Miller <[email protected]>
>
> hm, eight days old, fixes a possible oops and hasn't been merged anywhere
> yet?
>
> I'll put it in my for-2.6.24-via-other-subsystem queue.

This actually adds a bug back into the code.

We're trying to work out how to cleanly break out of
the net_rx_action() ->poll() loop when a device is
brought down yet getting hammered with packets.

I'll try to devote some time to this over the weekend,
meanwhile just toss this patch, we know it's an issue
that all the drivers need to get audited for but we
can't fix that until the above paragraph stuff is worked
out.

Thanks.

2007-12-21 00:06:36

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH][NETDEV]: remove netif_running() check from myri10ge_poll()

On Wed, 12 Dec 2007 11:02:43 -0800 (PST)
David Miller <[email protected]> wrote:

> From: Andrew Gallatin <[email protected]>
> Date: Wed, 12 Dec 2007 13:38:34 -0500
>
> > Remove the bogus netif_running() check from myri10ge_poll().
> >
> > This eliminates any chance that myri10ge_poll() can trigger
> > an oops by calling netif_rx_complete() and returning
> > with work_done == budget.
> >
> > Signed-off-by: Andrew Gallatin <[email protected]>
>
> Acked-by: David S. Miller <[email protected]>

hm, eight days old, fixes a possible oops and hasn't been merged anywhere
yet?

I'll put it in my for-2.6.24-via-other-subsystem queue.