Re: [PATCH RFC]: napi_struct V4
From: David Miller <davem@davemloft.net>
Date: 2007-07-26 00:37:32
From: David Miller <davem@davemloft.net>
Date: 2007-07-26 00:37:32
From: Stephen Hemminger <redacted> Date: Wed, 25 Jul 2007 09:56:54 +0100
The usage of NAPI on 8139cp and 8139too seems dodgy; these drivers expect this to work: local_irq_save(flags); cpw16_f(IntrMask, cp_intr_mask); __netif_rx_complete(dev); local_irq_restore(flags); It works on SMP only because if poll races with IRQ, the IRQ is not masked or cleared so the IRQ will get restarted. Better would be to change it to: spin_lock_irqsave(&cp->lock, flags); cpw16_f(IntrMask, cp_intr_mask); __netif_rx_complete(dev); spin_unlock_irqrestore(&cp->lock, flags); Which actually is same code on UP.
I've made these fixes to my tree, thanks Stephen.