Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Nov 2001 13:47:03 -0600 (CST)
From:      Jonathan Lemon <jlemon@flugsvamp.com>
To:        jayanth@yahoo-inc.com, net@freebsd.org
Subject:   Re: FreeBSD performing worse than Linux?
Message-ID:  <200111301947.fAUJl3Z85729@prism.flugsvamp.com>
In-Reply-To: <local.mail.freebsd-net/20011130100515.C63426@yahoo-inc.com>
References:  <local.mail.freebsd-net/20011128153817.T61580@monorchid.lemis.com> <local.mail.freebsd-net/15364.38174.938500.946169@caddis.yogotech.com> <local.mail.freebsd-net/20011129004234.A16101@exuma.irbs.com> <local.mail.freebsd-net/200111300527.fAU5R0s11199@c527597-a.cstvl1.sfba.home.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <local.mail.freebsd-net/20011130100515.C63426@yahoo-inc.com> you write:
>Hmm, this is what has broken fast retransmit.
>I should probably replace 
>	if (tp->t_dupacks < tcprexmtthresh)
>                        tp->t_dupacks = 0;
>
>	with
>	if (tcp_do_newreno && (tp->t_dupacks < tcprexmtthresh))
>			tp->t_dupacks = 0;

I don't think that's it.  The original (pre-NewReno) code had:

                /*
                 * If the congestion window was inflated to account
                 * for the other side's cached packets, retract it.
                 */
                if (tp->t_dupacks >= tcprexmtthresh &&
                    tp->snd_cwnd > tp->snd_ssthresh)
                        tp->snd_cwnd = tp->snd_ssthresh;
                tp->t_dupacks = 0;

So t_dupacks was always getting set to 0 on this codepath.  In the
existing code, the 'if' statement you point out above is only relevant
if newreno is turned on.  However, the pathologies happen regardless
of the setting of the newreno flag.
-- 
Jonathan

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200111301947.fAUJl3Z85729>