mirror of
https://github.com/ipxe/ipxe
synced 2025-12-14 16:01:38 +03:00
[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>
This commit is contained in:
@@ -938,10 +938,9 @@ int undinet_probe ( struct undi_device *undi, struct device *dev ) {
|
|||||||
memcpy ( netdev->ll_addr, undi_info.CurrentNodeAddress, ETH_ALEN );
|
memcpy ( netdev->ll_addr, undi_info.CurrentNodeAddress, ETH_ALEN );
|
||||||
undinic->irq = undi_info.IntNumber;
|
undinic->irq = undi_info.IntNumber;
|
||||||
if ( undinic->irq > IRQ_MAX ) {
|
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 );
|
undinic, undinic->irq );
|
||||||
rc = -EINVAL;
|
undinic->irq = 0;
|
||||||
goto err_bad_irq;
|
|
||||||
}
|
}
|
||||||
DBGC ( undinic, "UNDINIC %p has MAC address %s and IRQ %d\n",
|
DBGC ( undinic, "UNDINIC %p has MAC address %s and IRQ %d\n",
|
||||||
undinic, eth_ntoa ( netdev->hw_addr ), undinic->irq );
|
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_register:
|
||||||
err_undi_get_iface_info:
|
err_undi_get_iface_info:
|
||||||
err_bad_irq:
|
|
||||||
err_undi_get_information:
|
err_undi_get_information:
|
||||||
err_undi_initialize:
|
err_undi_initialize:
|
||||||
/* Shut down UNDI stack */
|
/* Shut down UNDI stack */
|
||||||
|
|||||||
Reference in New Issue
Block a user