Subject: Re: [PATCH 12/23] e1000: Maybe stop TX if not enough free descriptors

From: Auke Kok <[email-masked]>
Date: Tue, 19 Sep 2006 16:26:12 -0700

Stephen Hemminger wrote:
> On Tue, 19 Sep 2006 16:45:06 -0400
> Jeff Garzik <[email-masked]> wrote:
> 
>> looks OK except for the tasklet, which may starve if the lock is being 
>> held upon entry
>>
>>
> 
> Why would the tasklet starve anymore than NAPI?
> Worst case, the transmitters fill the ring completely and have to
> wait for the tasklet to clean up.
> 
> Maybe it would be better to always to Tx cleanup in tasklet even with
> NAPI. Then the NAPI poll flow control would be used only for Rx.
> As it stands, if receiver gets swamped, the poll doesn't get run often,
> so the transmitter cleanup doesn't get run. A tasklet has the advantage
> of eliminating the need for adapter->tx_queue_lock as well.

I gave it a spin and it looks horrible with NAPI - the box almost freezes up 
with even 2 clients. Minor nitpick: you forgot to delete a spin_lock_irqsave() 
call but gcc would have spotted that for you. Unsurprisingly it's more stable 
without NAPI.

I'm unsure (not enough knowlege) why you would prefer to remove lltx - care to 
enlighten me?

Cheers,

Auke