Reenabling TSO

From: Jeremy Kerr <hidden>
Date: 2004-03-08 04:32:02

Hi all,

I've been running a few tests on the TSO & e1000 code which involve stressing 
a link between two hosts. The test program is rather trivial, simply repeated 
calls to sendfile() over a socket. The problem occurs when we see a TCP 
retransmit on the connection, after which TSO is disabled.

After looking through tcp_{input,output}.c, there seems to be no code to 
reenable TSO - so one retransmit will permanently disable TSO for a socket. 
This isn't such a problem for short-lived connections, but longer-lived ones 
will only use TSO for a small proportion of the data transferred, depending 
on the frequency of retransmits.

So, two questions:

Is it practical to reenable TSO at all? 

and

What metric do we use to determine when it is safe to reenable TSO? A simple 
metric may be the TCP window size - when this reaches a predefined threshold, 
we can set the  flag again. However, something more complex involving the 
number of sent packets and number of retransmits may be required.

Any thoughts?


Jeremy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help