From owner-freebsd-net Fri Nov 30 11:50:19 2001 Delivered-To: freebsd-net@freebsd.org Received: from prism.flugsvamp.com (cb58709-a.mdsn1.wi.home.com [24.17.241.9]) by hub.freebsd.org (Postfix) with ESMTP id E7BE037B416 for ; Fri, 30 Nov 2001 11:50:06 -0800 (PST) Received: (from jlemon@localhost) by prism.flugsvamp.com (8.11.0/8.11.0) id fAUJl3Z85729; Fri, 30 Nov 2001 13:47:03 -0600 (CST) (envelope-from jlemon) Date: Fri, 30 Nov 2001 13:47:03 -0600 (CST) From: Jonathan Lemon Message-Id: <200111301947.fAUJl3Z85729@prism.flugsvamp.com> To: jayanth@yahoo-inc.com, net@freebsd.org Subject: Re: FreeBSD performing worse than Linux? X-Newsgroups: local.mail.freebsd-net In-Reply-To: References: Organization: Cc: Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org In article 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