Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Dec 2008 02:41:35 +0000 (UTC)
From:      Lawrence Stewart <lstewart@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r186469 - projects/tcp_ffcaia2008_8.x/sys/netinet
Message-ID:  <200812240241.mBO2fZ7O020196@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lstewart
Date: Wed Dec 24 02:41:35 2008
New Revision: 186469
URL: http://svn.freebsd.org/changeset/base/186469

Log:
  Ensure that slow starting after an RTO when ABC is enabled enforces
  abc_l_var = 1 until we've recovered from any lingering badness.
  
  I believe this commit pretty much wraps up the ABC implementation.
  
  Inspired by:	NetBSD
  Sponsored by:	FreeBSD Foundation

Modified:
  projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c

Modified: projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c
==============================================================================
--- projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c	Wed Dec 24 01:08:18 2008	(r186468)
+++ projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c	Wed Dec 24 02:41:35 2008	(r186469)
@@ -2151,8 +2151,14 @@ process_ACK:
 				}
 				else
 					incr = max((incr * incr / cw), 1);
-			/* In slow-start with ABC enabled? */
-			} else if (V_tcp_do_rfc3465)
+			/*
+			 * In slow-start with ABC enabled and no RTO in sight?
+			 * (Must not use abc_l_var > 1 if slow starting after an
+			 * RTO. On RTO, snd_nxt = snd_una, so the snd_nxt !=
+			 * snd_max check is sufficient to handle this).
+			 */
+			} else if (V_tcp_do_rfc3465 &&
+			    tp->snd_nxt != tp->snd_max)
 				incr = min(acked,
 				    V_tcp_abc_l_var * tp->t_maxseg);
 			/* ABC is on by default, so (incr == 0) frequently. */



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