netdev
[Top] [All Lists]

Re: [PATCH] [RFT] 2.6.4 - epic100 napi

To: Francois Romieu <romieu@xxxxxxxxxxxxx>
Subject: Re: [PATCH] [RFT] 2.6.4 - epic100 napi
From: Jeff Garzik <jgarzik@xxxxxxxxx>
Date: Sun, 21 Mar 2004 13:24:06 -0500
Cc: netdev@xxxxxxxxxxx
In-reply-to: <20040320152109.A31118@xxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20040320152109.A31118@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030703
Francois Romieu wrote:
People are welcome to report how the following patch behaves on their
hardware. It does not seem too bad here but it probably is still a bit rough.
A split version of the patch will follow tomorrow. This one definitely aims
at brave and/or bored testers.

Looks pretty good, but includes a standard NAPI race...

When you split up the patches, I'll throw it into my -netdev tree, which means it will be automatically included in -mm for testing (as is r8169 now).

FWIW Andrew Morton has made me lazy... I don't bother publishing separate -netdev patches anymore, since he automatically downloads my netdev-2.6 BK tree before doing each -mm release.


+       if (work_done < orig_budget) {
+               unsigned long flags;
+               int status;
+
+               spin_lock_irqsave(&ep->napi_lock, flags);
+               epic_napi_irq_on(dev, ep);
+               __netif_rx_complete(dev);
+               spin_unlock_irqrestore(&ep->napi_lock, flags);
+
+               status = inl(ioaddr + INTSTAT);
+               if (status & EpicNapiEvent) {
+                       epic_napi_irq_off(dev, ep);
+                       goto rx_action;
+               }

Need to add a netif_running() check to the 'if' test at the top of the quote.

Are you (or somebody else?) interested in reviewing all the in-tree NAPI drivers, and seeing if other drivers have this bug? I think 8139cp.c does at least, maybe e100 too... Such a fix would need to go into 2.4.x as well.

        Jeff




<Prev in Thread] Current Thread [Next in Thread>