diff options
author | Michael Brown | 2018-03-21 09:28:05 +0100 |
---|---|---|
committer | Michael Brown | 2018-03-21 09:28:05 +0100 |
commit | 0600ffeb3051a3ccbd56a4d6999d3eb55bc886df (patch) | |
tree | ac545a82980f71b98ad27cceb4ef4f421a570f4a | |
parent | [build] Prevent use of MMX and SSE registers (diff) | |
download | ipxe-0600ffeb3051a3ccbd56a4d6999d3eb55bc886df.tar.gz ipxe-0600ffeb3051a3ccbd56a4d6999d3eb55bc886df.tar.xz ipxe-0600ffeb3051a3ccbd56a4d6999d3eb55bc886df.zip |
[undi] Treat invalid IRQ numbers as non-fatal errors
If the underlying PXE stack reports an invalid IRQ number (above
IRQ_MAX), treat this as equivalent to an empty IRQ number and fall
back to using polling mode.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/arch/x86/drivers/net/undinet.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/arch/x86/drivers/net/undinet.c b/src/arch/x86/drivers/net/undinet.c index 78191181..e8ec772e 100644 --- a/src/arch/x86/drivers/net/undinet.c +++ b/src/arch/x86/drivers/net/undinet.c @@ -938,10 +938,9 @@ int undinet_probe ( struct undi_device *undi, struct device *dev ) { memcpy ( netdev->ll_addr, undi_info.CurrentNodeAddress, ETH_ALEN ); undinic->irq = undi_info.IntNumber; if ( undinic->irq > IRQ_MAX ) { - DBGC ( undinic, "UNDINIC %p has invalid IRQ %d\n", + DBGC ( undinic, "UNDINIC %p ignoring invalid IRQ %d\n", undinic, undinic->irq ); - rc = -EINVAL; - goto err_bad_irq; + undinic->irq = 0; } DBGC ( undinic, "UNDINIC %p has MAC address %s and IRQ %d\n", undinic, eth_ntoa ( netdev->hw_addr ), undinic->irq ); @@ -984,7 +983,6 @@ int undinet_probe ( struct undi_device *undi, struct device *dev ) { err_register: err_undi_get_iface_info: - err_bad_irq: err_undi_get_information: err_undi_initialize: /* Shut down UNDI stack */ |