Sorry, this patch has a horrible typo in it. I'll fix the if ( ! netdev_irq_supported ( netdev ) ) to remove the negation and will resubmit it.
Martin On 09/01/18 18:11, Martin Habets wrote: > The UNDI layer uses the IP layer's idea of the IRQ state to determine > if a poll was done for our UNDI device (see pxenv_undi_isr()). > As the comment in pxenv_undi_isr() explains the check is not 100% > correct. > > The SFC driver does not support interrupts, so the UNDI call would > always set PXENV_UNDI_ISR_OUT_NOT_OURS. > Some NBP's (such as lpxelinux.0) hang due to this. > > With this patch we update the IRQ state in the IP layer even if the > driver does not support interrupts, so that UNDI calls will return > PXENV_UNDI_ISR_OUT_OURS for the boot device. > For other devices it will still return PXENV_UNDI_ISR_OUT_NOT_OURS > like before. > > Signed-off-by: Martin Habets <[email protected]> > --- > src/net/netdevice.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/src/net/netdevice.c b/src/net/netdevice.c > index 4c211d707b96..1eda001181e9 100644 > --- a/src/net/netdevice.c > +++ b/src/net/netdevice.c > @@ -874,12 +874,9 @@ void unregister_netdev ( struct net_device *netdev ) { > */ > void netdev_irq ( struct net_device *netdev, int enable ) { > > - /* Do nothing if device does not support interrupts */ > - if ( ! netdev_irq_supported ( netdev ) ) > - return; > - > /* Enable or disable device interrupts */ > - netdev->op->irq ( netdev, enable ); > + if ( ! netdev_irq_supported ( netdev ) ) > + netdev->op->irq ( netdev, enable ); > > /* Record interrupt enabled state */ > netdev->state &= ~NETDEV_IRQ_ENABLED; > _______________________________________________ ipxe-devel mailing list [email protected] https://lists.ipxe.org/mailman/listinfo.cgi/ipxe-devel

