david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[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:
Michael Brown 2011-04-22 23:31:25 +01:00
parent bd9ff16c21
commit 8e984f35e0
1 changed files with 3 additions and 1 deletions

View File

@ -558,8 +558,10 @@ int undinet_probe ( struct undi_device *undi ) {
DBGC ( undinic, "UNDINIC %p has type %s, speed %d, flags %08x\n",
undinic, undi_iface.IfaceType, undi_iface.LinkSpeed,
undi_iface.ServiceFlags );
if ( undi_iface.ServiceFlags & SUPPORTED_IRQ )
if ( ( undi_iface.ServiceFlags & SUPPORTED_IRQ ) &&
( undinic->irq != 0 ) ) {
undinic->irq_supported = 1;
}
DBGC ( undinic, "UNDINIC %p using %s mode\n", undinic,
( undinic->irq_supported ? "interrupt" : "polling" ) );
if ( strncmp ( ( ( char * ) undi_iface.IfaceType ), "Etherboot",