[Top] [All Lists]

Current 2.6.x TSO state

To: netdev@xxxxxxxxxxx
Subject: Current 2.6.x TSO state
From: "David S. Miller" <davem@xxxxxxxxxxxxx>
Date: Thu, 30 Sep 2004 21:32:21 -0700
Cc: ak@xxxxxxx, jheffner@xxxxxxx, herbert@xxxxxxxxxxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
Attached are the 4 TCP TSO patches I have in my tree.
They are relative to Linus's current tree and also
available at:


The quick summary is:

diff1) Smooth out TSO ack clocking by calling
       tcp_trim_head() at tcp_tso_ack() time
       and making tcp_trim_head() liberate
       socket send buffer space.

diff2) URG fix in tcp_tso_ack()

diff3) Add tcp_tso_win_divisor sysctl knob.

diff4) Obey MSS in tso handling, shrink tcp_skb_cb

Existing known problems requiring a fix in
time for 2.6.9-final are:

1) Andi sees performance anomaly to 2.6.5 kernels.
   Hopefully fixed by diff3 above, merely awaiting
   retesting by him.

2) John Heffner sees some kind of weird transfer
   hang, down/up'ing the interface makes transfer
   finish successfully.

   He has told me he will spend some time this weekend
   trying to debug it.

Future enhancements which are not as critical as
the above:

1) Handle SACK tagging of TSO frames... somehow.
   I don't have any brilliant ideas currently.

   We could use bits, to represent sub-TSO SACK
   regions.  This would impose a hard limit of
   something like 32 for the maximum TSO factor.

   Another idea is to resegment a TSO frame when
   SACKs cover portions.  This approach is my
   least favorite because SACKs can be common in
   the presence of even minor packet reordering.
   So we'd be splitting up + copying a lot.

2) Leave TSO enabled even during loss events.
   #1 is pretty much a prerequisite for #2

   If we don't do #1 first, most SACKs get entirely

3) Fix up the packet counting once we have sub-TSO
   SACK tagging in place.

Ok that's enough TSO hacking for me today.

Attachment: diff1
Description: Binary data

Attachment: diff2
Description: Binary data

Attachment: diff3
Description: Binary data

Attachment: diff4
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>
  • Current 2.6.x TSO state, David S. Miller <=