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.

MFC after:	2 weeks
This commit is contained in:
Andre Oppermann 2012-10-28 18:56:57 +00:00
parent f1988d463c
commit f4748ef5fb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=242260

View File

@ -572,7 +572,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,