From: Francois Romieu - (noticed by Jon D. Mason) rtl8169_wait_for_quiescence() needs to disable the NAPI processing but it has no reason to lock any part of the driver which would try to do the same at a later time. Let's reenable NAPI processing as soon as possible. - properly ack any aborted interruption: a reset of the device is not always enough. Signed-off-by: Francois Romieu Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/r8169.c | 9 +++++++++ 1 files changed, 9 insertions(+) diff -puN drivers/net/r8169.c~r8169-missing-netif_poll_enable-and-irq-ack drivers/net/r8169.c --- 25/drivers/net/r8169.c~r8169-missing-netif_poll_enable-and-irq-ack 2004-12-06 17:38:03.434883056 -0800 +++ 25-akpm/drivers/net/r8169.c 2004-12-06 17:38:03.440882144 -0800 @@ -1743,10 +1743,19 @@ static void rtl8169_schedule_work(struct static void rtl8169_wait_for_quiescence(struct net_device *dev) { + struct rtl8169_private *tp = netdev_priv(dev); + void __iomem *ioaddr = tp->mmio_addr; + synchronize_irq(dev->irq); /* Wait for any pending NAPI task to complete */ netif_poll_disable(dev); + + RTL_W16(IntrMask, 0x0000); + + RTL_W16(IntrStatus, 0xffff); + + netif_poll_enable(dev); } static void rtl8169_reinit_task(void *_data) _