Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jun 2012 07:52:21 +0000 (UTC)
From:      Andre Oppermann <andre@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r237123 - user/andre/tcp_workqueue/sys/netinet
Message-ID:  <201206150752.q5F7qLw1053184@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andre
Date: Fri Jun 15 07:52:20 2012
New Revision: 237123
URL: http://svn.freebsd.org/changeset/base/237123

Log:
  When retransmitting SYN in TCPS_SYN_SENT state use TCPTV_RTOBASE,
  the default retransmit timeout, as base to calculate the backoff
  time until next try instead of the TCP_REXMTVAL() macro which only
  works correctly when we already have measured an actual RTT+RTTVAR.
  
  Before it would cause the first retransmit at RTOBASE, the next
  four at the same time (!) about 200ms later, and then another one
  again RTOBASE later.
  
  XXXAO: More testing required to confirm fully RFC compliant behavior.

Modified:
  user/andre/tcp_workqueue/sys/netinet/tcp_timer.c

Modified: user/andre/tcp_workqueue/sys/netinet/tcp_timer.c
==============================================================================
--- user/andre/tcp_workqueue/sys/netinet/tcp_timer.c	Fri Jun 15 07:50:26 2012	(r237122)
+++ user/andre/tcp_workqueue/sys/netinet/tcp_timer.c	Fri Jun 15 07:52:20 2012	(r237123)
@@ -553,7 +553,7 @@ tcp_timer_rexmt(void * xtp)
 		tp->t_flags &= ~TF_PREVVALID;
 	TCPSTAT_INC(tcps_rexmttimeo);
 	if (tp->t_state == TCPS_SYN_SENT)
-		rexmt = TCP_REXMTVAL(tp) * tcp_syn_backoff[tp->t_rxtshift];
+		rexmt = TCPTV_RTOBASE * tcp_syn_backoff[tp->t_rxtshift];
 	else
 		rexmt = TCP_REXMTVAL(tp) * tcp_backoff[tp->t_rxtshift];
 	TCPT_RANGESET(tp->t_rxtcur, rexmt,



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