diff options
author | James Morris <jmorris@namei.org> | 2009-09-29 23:47:33 +0200 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2009-09-29 23:47:33 +0200 |
commit | 1669b049db50fc7f1d4e694fb115a0f408c63fce (patch) | |
tree | 9b3b90b5cbff9b8f30ecf0b2a44896ce8bef0c20 /drivers/net/3c503.c | |
parent | TPM: increase default TPM buffer (diff) | |
parent | Linux 2.6.32-rc1 (diff) | |
download | linux-1669b049db50fc7f1d4e694fb115a0f408c63fce.tar.xz linux-1669b049db50fc7f1d4e694fb115a0f408c63fce.zip |
Merge branch 'master' into next
Diffstat (limited to 'drivers/net/3c503.c')
-rw-r--r-- | drivers/net/3c503.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c index 134638a9759f..c71e12d05f6e 100644 --- a/drivers/net/3c503.c +++ b/drivers/net/3c503.c @@ -383,7 +383,7 @@ out: static int el2_open(struct net_device *dev) { - int retval = -EAGAIN; + int retval; if (dev->irq < 2) { int irqlist[] = {5, 9, 3, 4, 0}; @@ -391,7 +391,8 @@ el2_open(struct net_device *dev) outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ do { - if (request_irq (*irqp, NULL, 0, "bogus", dev) != -EBUSY) { + retval = request_irq(*irqp, NULL, 0, "bogus", dev); + if (retval >= 0) { /* Twinkle the interrupt, and check if it's seen. */ unsigned long cookie = probe_irq_on(); outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); @@ -400,11 +401,14 @@ el2_open(struct net_device *dev) && ((retval = request_irq(dev->irq = *irqp, eip_interrupt, 0, dev->name, dev)) == 0)) break; + } else { + if (retval != -EBUSY) + return retval; } } while (*++irqp); if (*irqp == 0) { outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ - return retval; + return -EAGAIN; } } else { if ((retval = request_irq(dev->irq, eip_interrupt, 0, dev->name, dev))) { |