On Tue, Mar 06, 2007 at 12:10:08AM +0400, Sergei Shtylyov wrote: > #ifdef CONFIG_NET_POLL_CONTROLLER > static void natsemi_poll_controller(struct net_device *dev) > { > + struct netdev_private *np = netdev_priv(dev); > + > disable_irq(dev->irq); > - intr_handler(dev->irq, dev); > + > + /* > + * A real interrupt might have already reached us at this point > + * but NAPI might still haven't called us back. As the interrupt > + * status register is cleared by reading, we should prevent an > + * interrupt loss in this case... > + */ > + if (!np->intr_status) > + intr_handler(dev->irq, dev); > + > enable_irq(dev->irq);
Is it possible for this to run at the same time as the NAPI poll? If so then it is possible for the netpoll poll to run between np->intr_status being cleared and netif_rx_complete() being called. If the hardware asserts an interrupt at the wrong moment then this could cause the In any case, this is a problem independently of netpoll if the chip shares an interrupt with anything so the interrupt handler should be fixed to cope with this situation instead. -- "You grabbed my hand and we fell into it, like a daydream - or a fever."
signature.asc
Description: Digital signature