Message ID | 49065942.4040300@nortel.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: "Chris Friesen" <cfriesen@nortel.com> Date: Mon, 27 Oct 2008 18:13:54 -0600 > [PATCH] fix amd8111e rx return code > > The amd8111e rx poll routine currently mishandles the case when we process > exactly the number of packets specified in the budget. > > This patch is basically as suggested by David Miller. > > Signed-off-by: Chris Friesen <cfriesen@nortel.com> I had to apply this by hand because your email client heavily corrupted the patch. Thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Miller wrote: > From: "Chris Friesen" <cfriesen@nortel.com> > Date: Mon, 27 Oct 2008 18:13:54 -0600 > > >>[PATCH] fix amd8111e rx return code >> >>The amd8111e rx poll routine currently mishandles the case when we process >>exactly the number of packets specified in the budget. >> >>This patch is basically as suggested by David Miller. >> >>Signed-off-by: Chris Friesen <cfriesen@nortel.com> > > > I had to apply this by hand because your email client heavily > corrupted the patch. Crap. Sorry about that, it looks like I forgot to set my line-wrap to 0 before creating the email. @#$#% Thunderbird. Chris -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c index c54967f..ba1be0b 100644 --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c @@ -833,12 +833,14 @@ static int amd8111e_rx_poll(struct napi_struct *napi, int budget) } while(intr0 & RINT0); - /* Receive descriptor is empty now */ - spin_lock_irqsave(&lp->lock, flags); - __netif_rx_complete(dev, napi); - writel(VAL0|RINTEN0, mmio + INTEN0); - writel(VAL2 | RDMD0, mmio + CMD0); - spin_unlock_irqrestore(&lp->lock, flags); + if (rx_pkt_limit > 0) { + /* Receive descriptor is empty now */ + spin_lock_irqsave(&lp->lock, flags); + __netif_rx_complete(dev, napi); + writel(VAL0|RINTEN0, mmio + INTEN0); + writel(VAL2 | RDMD0, mmio + CMD0); + spin_unlock_irqrestore(&lp->lock, flags); + } rx_not_empty: