Subject: Re: RFR: new SiS gige driver

From: Jeff Garzik <[email-masked]>
Date: Wed, 13 Aug 2003 14:52:15 -0400

Ben Greear wrote:
> 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?

Actually, a slight correction (something I forgot):  the atomicity is 
provided by the bitops already so the netif_queue_stopped check isn't 
needed.

	Jeff