Date: Thu, 18 Dec 2008 06:10:26 +0000 (UTC) From: Lawrence Stewart <lstewart@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r186273 - projects/tcp_ffcaia2008_8.x/sys/netinet Message-ID: <200812180610.mBI6AQBi029435@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812180610.mBI6AQBi029435>