On Wed, 03 Oct 2007 14:58:07 -0700 (PDT)
David Miller <[EMAIL PROTECTED]> wrote:

> From: Peter Zijlstra <[EMAIL PROTECTED]>
> Date: Wed, 03 Oct 2007 17:44:53 +0200
> 
> > Index: linux-2.6/net/core/dev.c
> > ===================================================================
> > --- linux-2.6.orig/net/core/dev.c
> > +++ linux-2.6/net/core/dev.c
> > @@ -2095,11 +2095,11 @@ static int process_backlog(struct napi_s
> >  
> >             local_irq_disable();
> >             skb = __skb_dequeue(&queue->input_pkt_queue);
> > -           local_irq_enable();
> >             if (!skb) {
> > -                   napi_complete(napi);
> > +                   __napi_complete(napi);
> >                     break;
> >             }
> > +           local_irq_enable();
> 
> What re-enables interrupts in the !skb path?

This looks like a better fix. the irq_enable is needed in both cases.

--- a/net/core/dev.c    2007-09-27 07:19:10.000000000 -0700
+++ b/net/core/dev.c    2007-10-03 15:03:54.000000000 -0700
@@ -2077,12 +2077,14 @@ static int process_backlog(struct napi_s
 
                local_irq_disable();
                skb = __skb_dequeue(&queue->input_pkt_queue);
-               local_irq_enable();
                if (!skb) {
-                       napi_complete(napi);
+                       __napi_complete(napi);
+                       local_irq_enable();
                        break;
                }
 
+               local_irq_enable();
+
                dev = skb->dev;
 
                netif_receive_skb(skb);


-- 
Stephen Hemminger <[EMAIL PROTECTED]>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to