TSO
Rick Macklem
rmacklem at uoguelph.ca
Fri Feb 28 23:01:45 UTC 2014
John-Mark Gurney wrote:
> Julian Elischer wrote this message on Fri, Feb 28, 2014 at 13:24
> +0800:
> > On 2/27/14, 5:24 AM, John-Mark Gurney wrote:
> > >Jack Vogel wrote this message on Wed, Feb 26, 2014 at 10:27 -0800:
> > >>Drivers have to work with whatever the requirements/limitations
> > >>of the
> > >>hardware,
> > >>if you have a 5 lb sack you shouldn't be surprised if some drops
> > >>when you
> > >>shove
> > >>6 lbs at it :)
> > >But right now, when that happens, the nic just drops it instead of
> > >telling the kernel to stop giving 6 lbs sacks.. :) It's only
> > >after a
> > >large amount of work by various people did we even find out that
> > >this
> > >is what was happening...
> > so why not look at what would happen if it were people doing this..
> >
> > person1 would hand person2 a 4 pound sack.
> > all ok..
> > person 1 then hands person2 a 6 pound sack and person 2 replies
> > "Ouch", that's too much!..
> > person 1 now knows not to do that.. until he forgets...
> > part of the trick is knowing while assembling the packet, what
> > interface is going to be used..
> > which from memory is not 100% guaranteed because routes can
> > change...
>
> Umm... TSO depends upon knowlege that the interface supports it...
> if it didn't we couldn't do it.. The default is that the person can
> only ever accept a 1lb bag, but the TSO flag says, they can take
> more..
>
> If they forget, then they'd go back to the default of 1lb sacks at
> a time...
>
> Plus, we already have something similar for the max size of the TSO,
> so the code is mostly there already, see t_tsomax...
>
I've attached the untested (and I have nothing that does TSO, so I can't
really take this patch any further) patch that adds tsomaxseg to be used
along with t_tsomax by tcp_output() when deciding how big to make the TSO
segment.
The one thing John-Mark Gurney pointed out was that the default value for
tsomaxseg needs to be large, so that it doesn't impact drivers that can
handle more than 32 transmit segments.
At this point few drivers set if_hw_tsomax and just use the default of
65535. Drivers would need to be fixed to set if_hw_tsomaxseg for this
patch to be useful. (Assuming it is tested/debugged so it does what I
meant it to;-)
rick
> --
> John-Mark Gurney Voice: +1 415 225 5579
>
> "All that I will do, has been done, All that I have, has not."
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to
> "freebsd-net-unsubscribe at freebsd.org"
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tsomaxseg.patch
Type: text/x-patch
Size: 4179 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-net/attachments/20140228/8c5c0772/attachment.bin>
More information about the freebsd-net
mailing list