Subject: Re: [PATCH] [e1000]: Remove unnecessary tx_lock

From: "Edgar E. Iglesias" <[email-masked]>
Date: Mon, 7 Aug 2006 17:21:26 +0200

On Mon, Aug 07, 2006 at 08:50:36AM -0400, jamal wrote:
> On Sun, 2006-06-08 at 16:16 -0700, Jesse Brandeburg wrote:
> [..]
> > 
> > As for specifics, for TX_WAKE_THRESHOLD, i noticed that we were
> > starting the queue after every packet was cleaned, so when the ring
> > went full there was a lot of queue thrash.
> 
> indeed this is what used to happen and was bad.... So this is a huge
> improvement.
> What happens now under steady state at high traffic transmits is,
> instead of 1, you see E1000_TX_WEIGHT in between queue sleep/wakes. I
> assume this is a given since E1000_TX_WEIGHT is higher than
> TX_WAKE_THRESHOLD.  I am not sure if i can vouch for even more
> improvement by mucking around with values of E1000_TX_WEIGHT.
> 
> Can you please take a look at the patch i posted? I would like to submit
> that for inclusion. It does two things
> a) make pruning available to be invoked from elsewhere (I tried to do it
> from the tx path but it gave me non-good results)
> b) makes E1000_TX_WEIGHT and TX_WAKE_THRESHOLD relative to the size
> of the transmit ring. I think this is a sane thing to do.
> 

Hi Jamal,

I have a question regarding your patch. In clean_tx_irq, it seems you dont
clean the ring unless fdesc < tx_ring->prunet. Won't this cause deadlocks for
local TCP connections if transmit goes quiet?

It seems to me as if this patch depends on the skb orphaning previously 
suggested on this thread. Please correct me if I'm wrong.

Best regards
-- 
        Programmer
        Edgar E. Iglesias <[email-masked]> 46.46.272.1946