]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[undi] Assume that interrupts are not supported if IRQ=0
authorMichael Brown <mcb30@ipxe.org>
Fri, 22 Apr 2011 22:31:25 +0000 (23:31 +0100)
committerMichael Brown <mcb30@ipxe.org>
Fri, 22 Apr 2011 22:31:25 +0000 (23:31 +0100)
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>
src/arch/i386/drivers/net/undinet.c

index 56bd628863acfdcf3bed126bc18f32eb4fdec4ce..5cfceda75fabe2eabc6aaad6fedc4a6b8692c3bd 100644 (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",