From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 06:10:27 2008 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A6D5106564A; Thu, 18 Dec 2008 06:10:27 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 236738FC0C; Thu, 18 Dec 2008 06:10:27 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id mBI6AQxw029437; Thu, 18 Dec 2008 06:10:26 GMT (envelope-from lstewart@svn.freebsd.org) Received: (from lstewart@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id mBI6AQBi029435; Thu, 18 Dec 2008 06:10:26 GMT (envelope-from lstewart@svn.freebsd.org) Message-Id: <200812180610.mBI6AQBi029435@svn.freebsd.org> From: Lawrence Stewart Date: Thu, 18 Dec 2008 06:10:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186273 - projects/tcp_ffcaia2008_8.x/sys/netinet X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2008 06:10:27 -0000 Author: lstewart Date: Thu Dec 18 06:10:26 2008 New Revision: 186273 URL: http://svn.freebsd.org/changeset/base/186273 Log: Ensure we correctly handle counting of ACKed bytes per RTT in cong avoid mode for ABC purposes by resetting to 0 after fast recovery. Sponsored by: FreeBSD Foundation Modified: projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_timer.c Modified: projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c ============================================================================== --- projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c Thu Dec 18 05:58:14 2008 (r186272) +++ projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_input.c Thu Dec 18 06:10:26 2008 (r186273) @@ -131,12 +131,12 @@ SYSCTL_V_INT(V_NET, vnet_inet, _net_inet "Enable RFC 3390 (Increasing TCP's Initial Congestion Window)"); static int tcp_do_rfc3465 = 1; -static int tcp_abc_l_var = 1; +static int tcp_abc_l_var = 2; SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, rfc3465, CTLFLAG_RW, tcp_do_rfc3465, 0, "Enable RFC 3465 (Appropriate Byte Counting)"); SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, abc_l_var, CTLFLAG_RW, - tcp_abc_l_var, 1, + tcp_abc_l_var, 2, "Cap the max cwnd increment during slow-start to this number of segments"); int tcp_do_ecn = 0; @@ -2134,7 +2134,7 @@ process_ACK: * Grow cwnd linearly by approximately maxseg per RTT using * maxseg^2 / cwnd per ACK as the increment. * If cwnd > maxseg^2, fix the cwnd increment at 1 byte to - * avoid capping cwnd (as suggested in RFC 2581). + * avoid capping cwnd. */ if ((!V_tcp_do_newreno && !(tp->t_flags & TF_SACK_PERMIT)) || !IN_FASTRECOVERY(tp)) { @@ -2179,8 +2179,10 @@ process_ACK: tp->snd_recover = th->th_ack - 1; if ((V_tcp_do_newreno || (tp->t_flags & TF_SACK_PERMIT)) && IN_FASTRECOVERY(tp) && - SEQ_GEQ(th->th_ack, tp->snd_recover)) + SEQ_GEQ(th->th_ack, tp->snd_recover)) { EXIT_FASTRECOVERY(tp); + tp->t_bytes_acked = 0; + } tp->snd_una = th->th_ack; if (tp->t_flags & TF_SACK_PERMIT) { if (SEQ_GT(tp->snd_una, tp->snd_recover)) Modified: projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_timer.c ============================================================================== --- projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_timer.c Thu Dec 18 05:58:14 2008 (r186272) +++ projects/tcp_ffcaia2008_8.x/sys/netinet/tcp_timer.c Thu Dec 18 06:10:26 2008 (r186273) @@ -585,6 +585,7 @@ tcp_timer_rexmt(void * xtp) tp->t_dupacks = 0; } EXIT_FASTRECOVERY(tp); + tp->t_bytes_acked = 0; (void) tcp_output(tp); out: