---------- Forwarded message ----------
Date: Sat, 31 Oct 1998 10:41:07 +0100
From: Andi Kleen <ak@muc.de>
To: Neal Cardwell <cardwell@cs.washington.edu>,
netdev@roxanne.nuclecu.unam.mx
Subject: Re: bug in 2.1.x TCP congestion control?
On Fri, Oct 30, 1998 at 01:52:17AM +0100, Neal Cardwell wrote:
>
> There appears to be a bug in the recent Linux 2.1.x TCP sources. When the
> retransmit timer fires, tcp_retransmit_timer() sets ssthresh to half the
> congestion window:
>
> tp->snd_ssthresh = max(tp->snd_cwnd >> 1, 2);
>
> I think this should be half the _effective_ window:
>
> tp->snd_ssthresh = max( min(tp->snd_wnd, tp->snd_cwnd) >> 1, 2);
>
> This second behavior is closer to the code in Linux 2.0.35, and
> is the behavior documented in BSD (p. 845 stevens vol II), and the
> "correct" behavior, according to the proposed spec,
> http://www.ietf.org/internet-drafts/draft-ietf-tcpimpl-cong-control-00.txt
> Finally, it just makes more sense, since the snd_cwnd does not always
> reflect the current sending rate.
Thank you for your report. I think you're right. I added your suggested
fix to my working sources.
-Andi