Subject: Re: Question on TSO maximum segment sizes.

From: Rick Jones <[email-masked]>
Date: Thu, 11 Oct 2007 16:50:46 -0700

David Miller wrote:
> From: "Waskiewicz Jr, Peter P" <[email-masked]>
> Date: Thu, 11 Oct 2007 16:27:14 -0700
> 
> 
>>I'm having an issue with TSO right vs. hardware that can't take the
>>maximum segment size sent from the stack.  I've been told that the
>>maximum packet size that can be sent to the hardware today is 64k, but
>>my hardware can only take 32k in certain modes per queue due to hardware
>>limitations. 

Bletch.

>> I have two questions regarding this: 1) where is this
>>value set in the TCP code, and 2) Is this something that can be
>>configured on the fly?  If the answer to 2 is no, I will try and put
>>something together to allow this to happen.
> 
> 
> The TCP code just builds the maximum possible for the underlying
> protocol, be it ipv4 or ipv6.  It takes the underlying protocol
> maximum packet length, subtracts the amount of header space it
> knows will be used, and uses that.
> 
> You'll need to use GSO sw segmentation to split the TSO packets
> which are too big for your HW to handle.

For just messing about, might it be possible to tweak the socket buffer sizes 
and tcp_tso_win_divisor to kludge things for a short while?  Couldn't ship that 
way certainly, but assuming Peter's going to get his broken hardware fixed it 
might let him limp along until then.

rick jones