[Top] [All Lists]

Re: Assertions when lowering tcp_tso_win_divisor

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: Re: Assertions when lowering tcp_tso_win_divisor
From: Sridhar Samudrala <sri@xxxxxxxxxx>
Date: Fri, 19 Nov 2004 18:00:21 -0800 (PST)
Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <20041116163106.3b62a39a.davem@xxxxxxxxxxxxx>
References: <Pine.LNX.4.58.0411160931080.31882@xxxxxxxxxxxxxxxxxxxxxxxxxxx> <E1CUAQ2-0002jT-00@xxxxxxxxxxxxxxxxxxxxxxxx> <20041116163106.3b62a39a.davem@xxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
On Tue, 16 Nov 2004, David S. Miller wrote:

> On Wed, 17 Nov 2004 07:59:18 +1100
> Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote:
> > Sridhar Samudrala <sri@xxxxxxxxxx> wrote:
> > > We are seeing following assertions when running specweb99 with
> > > tcp_tso_win_divisor lowered to 4, 2 or 1 on linux 2.6.9 based kernels.
> >
> > 2.6.9 is known to have bugs in TCP book-keeping.  Please try 2.6.10-rc2
> > instead.
> Actually, that's true.  I missed that this report was against
> 2.6.9 vanilla, TCP is buggy as can be wrt TSO in that
> release.

Unfortunately as we cannot upgrade to 2.6.10-rc2, i tried to locate all the
TSO accounting related bugfixes that went in after 2.6.9 and came up with
the following 4 patches.

[TCP]: Fix new packet len calc in tcp_fragment()|src/|src/net|src/net/ipv4|related/net/ipv4/tcp_output.c

[TCP]: Fix tcp_trim_head() calculations.|src/|src/net|src/net/ipv4|related/net/ipv4/tcp_output.c

[TCP]: Only re-set TSO size for packet which was TSO to begin with.|src/|src/net|src/net/ipv4|related/net/ipv4/tcp_output.c

[TCP]: Handle real partial-ACKs of TSO frames correctly.|src/|src/net|src/net/ipv4|related/net/ipv4/tcp_output.c

Even with these 4 patches applied, we are still seeing the assertions.

Also, the webserver is started only after lowering tcp_tso_win_divisor and
the value is is not changed again.

Are there any other TSO related patches apart from the above 4 that went in
after 2.6.9? Or could it be that this bug is still there?


<Prev in Thread] Current Thread [Next in Thread>