]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] Allow pcnet_cs to work with shared irq
authorStephen Hemminger <shemminger@osdl.org>
Tue, 24 Feb 2004 15:00:15 +0000 (10:00 -0500)
committerJeff Garzik <jgarzik@redhat.com>
Tue, 24 Feb 2004 15:00:15 +0000 (10:00 -0500)
Here is a rediff'd version of the patch to fix shared irq handling in pcnet_cs
and generic 8390 drivers.

drivers/net/8390.c
drivers/net/pcmcia/pcnet_cs.c

index eb33f04a1ad85b98a1b4b14460cae54c86b2872e..e4a56a5b891f6454740667afb0babb8c96604817 100644 (file)
@@ -513,7 +513,7 @@ irqreturn_t ei_interrupt(int irq, void *dev_id, struct pt_regs * regs)
                }
        }
        spin_unlock(&ei_local->page_lock);
-       return IRQ_HANDLED;
+       return IRQ_RETVAL(nr_serviced > 0);
 }
 
 /**
index ca2fc02070676b3c3f3dfd3cb8975cdf5b7eefa9..86c87eb7320276d2a11d942e6ca59bfddb0f32f3 100644 (file)
@@ -1163,10 +1163,11 @@ static irqreturn_t ei_irq_wrapper(int irq, void *dev_id, struct pt_regs *regs)
 {
     struct net_device *dev = dev_id;
     pcnet_dev_t *info = PRIV(dev);
-    info->stale = 0;
-    ei_interrupt(irq, dev_id, regs);
-    /* FIXME! Was it really ours? */
-    return IRQ_HANDLED;
+    irqreturn_t ret = ei_interrupt(irq, dev_id, regs);
+
+    if (ret == IRQ_HANDLED)
+           info->stale = 0;
+    return ret;
 }
 
 static void ei_watchdog(u_long arg)