improved TSO interface needed

Jack Vogel jfvogel at gmail.com
Mon Feb 26 05:21:10 UTC 2007


On 2/25/07, Andre Oppermann <andre at freebsd.org> wrote:
> Kip Macy wrote:
> > On 2/25/07, Andre Oppermann <andre at freebsd.org> wrote:
> >> Kip Macy wrote:
> >> > Evidently FreeBSD violates the LSO spec by sending down up to socket
> >> > buffer sized TSO segments to the network card. Is there a way to set
> >> > this other than reducing net.inet.tcp.sendbuf_max to a compliant value
> >> > (64k)? And is there a way to for a device to communicate to the stack
> >> > the maximum length of an mbuf chain?
> >>
> >>  From netinet/ip_output.c:
> >>
> >>           * When doing TSO limit a burst to TCP_MAXWIN minus the
> >>           * IP, TCP and Options length to keep ip->ip_len from
> >>           * overflowing.  Prevent the last segment from being
> >>           * fractional thus making them all equal sized and set
> >>           * the flag to continue sending.
> >>
> >> TCP_MAXWIN is 64K.
> >
> > It is good to know that this how it is supposed to work even if it
> > doesn't. You didn't directly answer my last question, since they're
> > all supposed to be equal does that mean the max should be 32?
>
> The current TSO code will send mbuf chains of up to 64K (minus headers)
> to be split into MSS sized packets as specified by mbuf packet header
> usually resulting in an MTU of 1500 bytes.
>
> There is no way at the moment to tell the stack to send shorter mbuf
> chain while still using TSO.
>
> A google search for "LSO" doesn't yield any useful answers.  The stack
> doesn't send socket buffer sized mbuf chains if it larger than 64K.
>
> Can you explain the problem you're seeing in more details perhaps?  That'd
> certainly help in finding a fix for your problem.

LSO is MicroSlop's term for TSO :) As usual, they rename it, and
next they do something non-standard to er 'differentiate' as the
euphemism goes...

Kinda what Sun's lawsuit back in the 90s against their Java
strategy was all about :)

Nevertheless, I don't understand Kip either, when we do TSO there
is no evidence on the wire, it still has MTU sized packets.  I fail to
see why I should care about some LSO spec, what does it break?

Jack


More information about the freebsd-net mailing list