diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index 65ace37ab6e9..112ce578f7b2 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)tcp_timer.c 8.2 (Berkeley) 5/24/95 - * $Id: tcp_timer.c,v 1.26 1998/02/26 05:25:33 dg Exp $ + * $Id: tcp_timer.c,v 1.27 1998/04/06 06:52:46 phk Exp $ */ #include "opt_compat.h" @@ -308,17 +308,12 @@ tcp_timers(tp, timer) * (no responses to probes) reaches the maximum * backoff that we would use if retransmitting. */ - if (tp->t_rxtshift == TCP_MAXRXTSHIFT) { - u_long maxidle = TCP_REXMTVAL(tp); - if (maxidle < tp->t_rttmin) - maxidle = tp->t_rttmin; - maxidle *= tcp_totbackoff; - if (tp->t_idle >= tcp_maxpersistidle || - tp->t_idle >= maxidle) { - tcpstat.tcps_persistdrop++; - tp = tcp_drop(tp, ETIMEDOUT); - break; - } + if (tp->t_rxtshift == TCP_MAXRXTSHIFT && + (tp->t_idle >= tcp_maxpersistidle || + tp->t_idle >= TCP_REXMTVAL(tp) * tcp_totbackoff)) { + tcpstat.tcps_persistdrop++; + tp = tcp_drop(tp, ETIMEDOUT); + break; } tcp_setpersist(tp); tp->t_force = 1; diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index fdeeecf4c56e..e928449d908f 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)tcp_var.h 8.4 (Berkeley) 5/24/95 - * $Id: tcp_var.h,v 1.41 1998/02/26 05:25:39 dg Exp $ + * $Id: tcp_var.h,v 1.42 1998/04/06 06:52:47 phk Exp $ */ #ifndef _NETINET_TCP_VAR_H_ @@ -203,7 +203,7 @@ struct rmxp_tao { * fast networks. */ #define TCP_REXMTVAL(tp) \ - ((((tp)->t_srtt >> (TCP_RTT_SHIFT - TCP_DELTA_SHIFT)) \ + max((tp)->t_rttmin, (((tp)->t_srtt >> (TCP_RTT_SHIFT - TCP_DELTA_SHIFT)) \ + (tp)->t_rttvar) >> TCP_DELTA_SHIFT) /* XXX