From owner-svn-src-user@FreeBSD.ORG Fri Jun 15 07:52:21 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5977B106564A; Fri, 15 Jun 2012 07:52:21 +0000 (UTC) (envelope-from andre@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [69.147.83.44]) by mx1.freebsd.org (Postfix) with ESMTP id 455928FC0C; Fri, 15 Jun 2012 07:52:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q5F7qLdh053187; Fri, 15 Jun 2012 07:52:21 GMT (envelope-from andre@svn.freebsd.org) Received: (from andre@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q5F7qLw1053184; Fri, 15 Jun 2012 07:52:21 GMT (envelope-from andre@svn.freebsd.org) Message-Id: <201206150752.q5F7qLw1053184@svn.freebsd.org> From: Andre Oppermann Date: Fri, 15 Jun 2012 07:52:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r237123 - user/andre/tcp_workqueue/sys/netinet X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jun 2012 07:52:21 -0000 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,