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>