On Fri, 25 Mar 2005 13:34:59 -0600
"Scott M. Ferris" <sferris@xxxxxxx> wrote:
> > Are you suggesting to let it go past tp->snd_cwnd? We can't
> > ever do that. tp->snd_cwnd is a hard limit on the number
> > of frames we may have outstanding on the network at one time,
> > TSO or not.
>
> No, I think we all agree that exceeding cwnd is a bad idea. I'm just
> saying that failing to reach cwnd is also broken, especially if it
> results in tcp_write_xmit() sending nothing at all when cwnd is small.
But if we only have a TSO frame at the head, which would make us
exceed tp->snd_cwnd, the only option is to chop up the TSO frame.
So I guess that's your idea?
It's similar to the real fix for all of this, which I posted a detailed
description of about 1 or 2 months ago. Check the netdev archives.
Basically, we don't build the TSO frames until transmit time thus:
1) We always fill the CWND
2) We size the TSO based upon the CWND at send time not at
the time we are sucking in the data from userspace
3) No more multi-packet TSO frames in the send queue, thus no
more disabling of TSO during packet loss and no more weird
packet counting stuff
|