diff options
Diffstat (limited to 'drivers')
-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..81c148a59adf 100644 --- a/drivers/net/3c503.c +++ b/drivers/net/3c503.c | |||
@@ -383,7 +383,7 @@ out: | |||
383 | static int | 383 | static int |
384 | el2_open(struct net_device *dev) | 384 | el2_open(struct net_device *dev) |
385 | { | 385 | { |
386 | int retval = -EAGAIN; | 386 | int retval; |
387 | 387 | ||
388 | if (dev->irq < 2) { | 388 | if (dev->irq < 2) { |
389 | int irqlist[] = {5, 9, 3, 4, 0}; | 389 | int irqlist[] = {5, 9, 3, 4, 0}; |
@@ -391,7 +391,8 @@ el2_open(struct net_device *dev) | |||
391 | 391 | ||
392 | outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ | 392 | outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ |
393 | do { | 393 | do { |
394 | if (request_irq (*irqp, NULL, 0, "bogus", dev) != -EBUSY) { | 394 | retval = request_irq(*irqp, NULL, 0, "bogus", dev); |
395 | if (retval >= 0) { | ||
395 | /* Twinkle the interrupt, and check if it's seen. */ | 396 | /* Twinkle the interrupt, and check if it's seen. */ |
396 | unsigned long cookie = probe_irq_on(); | 397 | unsigned long cookie = probe_irq_on(); |
397 | outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); | 398 | outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); |
@@ -400,11 +401,14 @@ el2_open(struct net_device *dev) | |||
400 | && ((retval = request_irq(dev->irq = *irqp, | 401 | && ((retval = request_irq(dev->irq = *irqp, |
401 | eip_interrupt, 0, dev->name, dev)) == 0)) | 402 | eip_interrupt, 0, dev->name, dev)) == 0)) |
402 | break; | 403 | break; |
404 | } else { | ||
405 | if (retval != -EBUSY) | ||
406 | return reval; | ||
403 | } | 407 | } |
404 | } while (*++irqp); | 408 | } while (*++irqp); |
405 | if (*irqp == 0) { | 409 | if (*irqp == 0) { |
406 | outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ | 410 | outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ |
407 | return retval; | 411 | return -EAGAIN; |
408 | } | 412 | } |
409 | } else { | 413 | } else { |
410 | if ((retval = request_irq(dev->irq, eip_interrupt, 0, dev->name, dev))) { | 414 | if ((retval = request_irq(dev->irq, eip_interrupt, 0, dev->name, dev))) { |