mirror of
https://github.com/ipxe/ipxe
synced 2025-12-21 20:40:25 +03:00
[undi] Assume that interrupts are not supported if IRQ=0
Some PXE stacks (notably old Etherboot/gPXE stacks) will claim to use the timer interrupt, rather than reporting that interrupts are not supported. Since using the timer interrupt is equivalent to polling anyway, we may as well genuinely poll these stacks. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -558,8 +558,10 @@ int undinet_probe ( struct undi_device *undi ) {
|
|||||||
DBGC ( undinic, "UNDINIC %p has type %s, speed %d, flags %08x\n",
|
DBGC ( undinic, "UNDINIC %p has type %s, speed %d, flags %08x\n",
|
||||||
undinic, undi_iface.IfaceType, undi_iface.LinkSpeed,
|
undinic, undi_iface.IfaceType, undi_iface.LinkSpeed,
|
||||||
undi_iface.ServiceFlags );
|
undi_iface.ServiceFlags );
|
||||||
if ( undi_iface.ServiceFlags & SUPPORTED_IRQ )
|
if ( ( undi_iface.ServiceFlags & SUPPORTED_IRQ ) &&
|
||||||
|
( undinic->irq != 0 ) ) {
|
||||||
undinic->irq_supported = 1;
|
undinic->irq_supported = 1;
|
||||||
|
}
|
||||||
DBGC ( undinic, "UNDINIC %p using %s mode\n", undinic,
|
DBGC ( undinic, "UNDINIC %p using %s mode\n", undinic,
|
||||||
( undinic->irq_supported ? "interrupt" : "polling" ) );
|
( undinic->irq_supported ? "interrupt" : "polling" ) );
|
||||||
if ( strncmp ( ( ( char * ) undi_iface.IfaceType ), "Etherboot",
|
if ( strncmp ( ( ( char * ) undi_iface.IfaceType ), "Etherboot",
|
||||||
|
|||||||
Reference in New Issue
Block a user