[netdevice] Make netdev_irq_enabled() independent of netdev_irq_supported()
authorMartin Habets <mhabets@solarflare.com>
Wed, 10 Jan 2018 15:32:34 +0000 (15:32 +0000)
committerMichael Brown <mcb30@ipxe.org>
Sun, 14 Jan 2018 21:53:29 +0000 (21:53 +0000)
commit70189a8e4702016f654310e68d9ec4ec425e7344
tree8ba48417819ba63dfbd9794f65a0347b583ab9d3
parent08db2fd55c80157d0c5329560f57b125ceb8adf8
[netdevice] Make netdev_irq_enabled() independent of netdev_irq_supported()

The UNDI layer uses the NETDEV_IRQ_ENABLED flag to choose whether to
return PXENV_UNDI_ISR_OUT_OURS or PXENV_UNDI_ISR_OUT_NOT_OURS for a
given interrupt.  For a network device that does not support
interrupts, the flag will never be set and so pxenv_undi_isr() will
always return PXENV_UNDI_ISR_OUT_NOT_OURS.  This causes some NBPs
(such as lpxelinux.0) to hang.

Redefine NETDEV_IRQ_ENABLED as a simple administrative flag which can
be set even on network devices that do not support interrupts.  This
allows pxenv_undi_isr() (which is the sole user of NETDEV_IRQ_ENABLED)
to function as expected by lpxelinux.0.

Signed-off-by: Martin Habets <mhabets@solarflare.com>
Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/netdevice.c