ethoc: clear only pending irqs
authorThomas Chou <thomas@wytron.com.tw>
Wed, 7 Oct 2009 14:16:43 +0000 (14:16 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 19 Oct 2009 04:24:16 +0000 (21:24 -0700)
This patch fixed the problem of dropped packets due to lost of
interrupt requests. We should only clear what was pending at the
moment we read the irq source reg.

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethoc.c

index 88a1c5223069df15d185ba22d33aaaa4741cd0bd..590473afb3dc2c7970bea4e096868689a7dcf4bc 100644 (file)
@@ -508,7 +508,7 @@ static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
                return IRQ_NONE;
        }
 
-       ethoc_ack_irq(priv, INT_MASK_ALL);
+       ethoc_ack_irq(priv, pending);
 
        if (pending & INT_MASK_BUSY) {
                dev_err(&dev->dev, "packet dropped\n");