Jeff Garzik wrote:
Andi Kleen wrote:
* netif_stop_queue in hard_start_xmit is not protected against the
interrupt by the spinlock. That's racy, isn't it?
Shouldn't be, if done right. If the interrupt runs a TX completion
cycle, it will run the code
if (work_done && netif_queue_stopped(dev))
netif_wake_queue(dev)
Since ->hard_start_xmit is guaranteed never to be called if the queue is
stopped, you also guaranteed that netif_wake_queue and ->hard_start_xmit
are mutually exclusive.
Is this really guaranteed? What if the queue is stopped between the check
to see if it's stopped and the call to hard_start_xmit?
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com
|