Apply by doing:
cd /usr/src
patch -p0 < 010_rtt.patch
And then rebuild your kernel.
Index: sys/netinet/tcp_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_input.c,v
retrieving revision 1.175
retrieving revision 1.175.2.1
diff -u -p -r1.175 -r1.175.2.1
--- sys/netinet/tcp_input.c 16 Jul 2004 09:26:07 -0000 1.175
+++ sys/netinet/tcp_input.c 11 Jan 2005 04:36:23 -0000 1.175.2.1
@@ -2792,8 +2792,13 @@ tcp_xmit_timer(tp, rtt)
short delta;
short rttmin;
- tcpstat.tcps_rttupdated++;
--rtt;
+ if (rtt < 0)
+ rtt = 0;
+ if (rtt > TCP_RTT_MAX)
+ rtt = TCP_RTT_MAX;
+
+ tcpstat.tcps_rttupdated++;
if (tp->t_srtt != 0) {
/*
* srtt is stored as fixed point with 3 bits after the
Index: sys/netinet/tcp_var.h
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_var.h,v
retrieving revision 1.65
retrieving revision 1.65.2.1
diff -u -p -r1.65 -r1.65.2.1
--- sys/netinet/tcp_var.h 15 Jul 2004 15:27:22 -0000 1.65
+++ sys/netinet/tcp_var.h 11 Jan 2005 04:36:24 -0000 1.65.2.1
@@ -325,6 +325,7 @@ tcp_reass_unlock(struct tcpcb *tp)
#define TCP_RTT_SHIFT 3 /* shift for srtt; 3 bits frac. */
#define TCP_RTTVAR_SCALE 4 /* multiplier for rttvar; 2 bits */
#define TCP_RTTVAR_SHIFT 2 /* multiplier for rttvar; 2 bits */
+#define TCP_RTT_MAX (1<<9) /* maximum rtt */
/*
* The initial retransmission should happen at rtt + 4 * rttvar.