From 0600ffeb3051a3ccbd56a4d6999d3eb55bc886df Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 21 Mar 2018 10:28:05 +0200 Subject: [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 --- src/arch/x86/drivers/net/undinet.c | 6 ++---- 1 file 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 */ -- cgit v1.2.3-55-g7522