[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>
pull/71/head
Michael Brown 2018-03-21 10:28:05 +02:00
parent 1df3b53051
commit 0600ffeb30
1 changed files with 2 additions and 4 deletions

View File

@ -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 */