Author: andre
Date: Sun Oct 28 18:56:57 2012
New Revision: 242260
URL: http://svn.freebsd.org/changeset/base/242260

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.
  
  MFC after:    2 weeks

Modified:
  head/sys/netinet/tcp_timer.c

Modified: head/sys/netinet/tcp_timer.c
==============================================================================
--- head/sys/netinet/tcp_timer.c        Sun Oct 28 18:53:28 2012        
(r242259)
+++ head/sys/netinet/tcp_timer.c        Sun Oct 28 18:56:57 2012        
(r242260)
@@ -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,
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to