svn commit: r237123 - user/andre/tcp_workqueue/sys/netinet
Andre Oppermann
andre at FreeBSD.org
Fri Jun 15 07:52:21 UTC 2012
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,
More information about the svn-src-user
mailing list