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:
parent
f1988d463c
commit
f4748ef5fb
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user