3c503: fix broken IRQ autoprobing
Subsystems (2)
Fix broken IRQ autoprobing in 3c503 driver:
- improper IRQ freeing (does not free IRQs causes WARN)
- missing break when an working IRQ is found
The driver works with this patch.
drivers/net/3c503.c +2 -1
@@ -412,7 +412,7 @@ el2_open(struct net_device *dev)outb_p (0x04 << ((*irqp ==9 ) ?2 : *irqp),E33G_IDCFR );outb_p (0x00 ,E33G_IDCFR );msleep (1 ); -free_irq (*irqp, el2_probe_interrupt); +free_irq (*irqp, &seen);if (!seen)continue ;
@@ -422,6 +422,7 @@ el2_open(struct net_device *dev)continue ;if (retval <0 ) goto err_disable; +break ; }while (*++irqp);if (*irqp ==0 ) {
Signature · 1 line
Ondrej Zary
Ben Hutchings
Reviewed-byQuoted 5 lines · Ondrej Zary
Fix broken IRQ autoprobing in 3c503 driver:
- improper IRQ freeing (does not free IRQs causes WARN)
- missing break when an working IRQ is foundThe driver works with this patch.
I made a previous attempt to fix autoprobing (commit b0cf4dfb7cd21556efd9a6a67edcba0840b4d98d), but didn't have any hardware to test on. In the process I introduced these new bugs. Sorry about that.
Quoted 1 line
Signed-off-by Ondrej Zary <[email protected]>
Ben.
Signature · 2 lines
Ben Hutchings Teamwork is essential - it allows you to blame someone else.
From: Ben Hutchings <[email protected]>
Date: Sun, 12 Jun 2011 17:45:11 -0400
Quoted 7 lines · Ondrej Zary
Quoted 5 lines
Fix broken IRQ autoprobing in 3c503 driver:
- improper IRQ freeing (does not free IRQs causes WARN)
- missing break when an working IRQ is foundThe driver works with this patch.
Quoted 8 lines
I made a previous attempt to fix autoprobing (commit
b0cf4dfb7cd21556efd9a6a67edcba0840b4d98d), but didn't have any hardware to test on. In the process I introduced these new bugs. Sorry about that.Quoted 1 line
Signed-off-by Ondrej Zary <[email protected]>[...]Reviewed-by Ben Hutchings <[email protected]>
Applied, thanks.