From: Stephen Hemminger The poll_enable should be in init_registers before enabling interrupts, not in tx_timeout. Thanks for spotting it Roger. Signed-off-by: Stephen Hemminger Cc: Roger Luethi Signed-off-by: Andrew Morton --- drivers/net/via-rhine.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/net/via-rhine.c~via-rhine-napi-poll-enable drivers/net/via-rhine.c --- a/drivers/net/via-rhine.c~via-rhine-napi-poll-enable +++ a/drivers/net/via-rhine.c @@ -1048,6 +1048,8 @@ static void init_registers(struct net_de rhine_set_rx_mode(dev); + netif_poll_enable(dev); + /* Enable interrupts by setting the interrupt mask. */ iowrite16(IntrRxDone | IntrRxErr | IntrRxEmpty| IntrRxOverflow | IntrRxDropped | IntrRxNoBuf | IntrTxAborted | @@ -1199,7 +1201,6 @@ static void rhine_tx_timeout(struct net_ dev->trans_start = jiffies; rp->stats.tx_errors++; netif_wake_queue(dev); - netif_poll_enable(dev); } static int rhine_start_tx(struct sk_buff *skb, struct net_device *dev) _