svn commit: r186469 - projects/tcp_ffcaia2008_8.x/sys/netinet

Lawrence Stewart lstewart at FreeBSD.org
Tue Dec 23 18:41:36 PST 2008


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. */


More information about the svn-src-projects mailing list