svn commit: r247499 - stable/8/sys/netinet

John Baldwin jhb at FreeBSD.org
Thu Feb 28 21:24:20 UTC 2013


Author: jhb
Date: Thu Feb 28 21:24:19 2013
New Revision: 247499
URL: http://svnweb.freebsd.org/changeset/base/247499

Log:
  MFC 245238:
  Add an option to not drop options from the third retransmitted SYN.  If the
  SYNs (or SYN/ACK replies) are dropped due to network congestion, then the
  remote end of the connection may act as if options such as window scaling
  are enabled but the local end will think they are not.  This can result in
  very slow data transfers in the case of window scaling disagreements.
  
  Note that the unlike HEAD the existing behavior is preserved by default,
  but it can be disabled by setting the
  net.inet.tcp.rexmit_drop_options sysctl to zero.

Modified:
  stable/8/sys/netinet/tcp_timer.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/netinet/   (props changed)

Modified: stable/8/sys/netinet/tcp_timer.c
==============================================================================
--- stable/8/sys/netinet/tcp_timer.c	Thu Feb 28 21:24:10 2013	(r247498)
+++ stable/8/sys/netinet/tcp_timer.c	Thu Feb 28 21:24:19 2013	(r247499)
@@ -117,6 +117,11 @@ int	tcp_maxpersistidle;
 	/* max idle time in persist */
 int	tcp_maxidle;
 
+static int	tcp_rexmit_drop_options = 1;
+SYSCTL_INT(_net_inet_tcp, OID_AUTO, rexmit_drop_options, CTLFLAG_RW,
+    &tcp_rexmit_drop_options, 0,
+    "Drop TCP options from 3rd and later retransmitted SYN");
+
 /*
  * Tcp protocol timeout routine called every 500 ms.
  * Updates timestamps used for TCP
@@ -552,7 +557,8 @@ tcp_timer_rexmt(void * xtp)
 	 * header compression code which trashes TCP segments containing
 	 * unknown-to-them TCP options.
 	 */
-	if ((tp->t_state == TCPS_SYN_SENT) && (tp->t_rxtshift == 3))
+	if (tcp_rexmit_drop_options && (tp->t_state == TCPS_SYN_SENT) &&
+	    (tp->t_rxtshift == 3))
 		tp->t_flags &= ~(TF_REQ_SCALE|TF_REQ_TSTMP);
 	/*
 	 * If we backed off this far, our srtt estimate is probably bogus.


More information about the svn-src-stable-8 mailing list