another micro patch

David Mosberger-Tang (davidm@cs.arizona.edu)
Tue, 16 Jan 1996 18:57:03 -0700


Don't you find it annoying when running netscape or xterm on a remote
host and every now and then things just get plain sluggish? Like
having to wait a couple of seconds for a popup menu to show up? Yes?
Well, I thought so! So here is another Tiny Patch for TCP that will
fix this particular problem. The problem was that on a low-latency
network, the timeout could fall below 200ms, which is a bad thing if
you happen to talk to a host with delayed acks...

rlogin is still sluggish when logging into a Linux box but it doesn't
seem to be Alpha specific. Haven't looked into what's going on.
Alan, I suspect this is a known problem, can you point me to a place
where this is discussed/explained.

Enjoy,
--david

--- net/ipv4/tcp.c~ Tue Jan 16 16:55:22 1996
+++ net/ipv4/tcp.c Tue Jan 16 18:33:30 1996
@@ -798,7 +798,7 @@
{
del_timer(&sk->retransmit_timer);
sk->ip_xmit_timeout = why;
- if((int)when < 0)
+ if((long)when < 0)
{
when=3;
printk("Error: Negative timer in xmit_timer\n");
@@ -3643,10 +3643,10 @@
sk->rto = ((sk->rtt >> 2) + sk->mdev) >> 1;
if (sk->rto > 120*HZ)
sk->rto = 120*HZ;
- if (sk->rto < 20) /* Was 1*HZ, then 1 - turns out we must allow about
+ if (sk->rto < HZ/5) /* Was 1*HZ, then 1 - turns out we must allow about
.2 of a second because of BSD delayed acks - on a 100Mb/sec link
.2 of a second is going to need huge windows (SIGH) */
- sk->rto = 20;
+ sk->rto = HZ/5;
}
}

@@ -3743,8 +3743,8 @@
sk->rto = ((sk->rtt >> 2) + sk->mdev) >> 1;
if (sk->rto > 120*HZ)
sk->rto = 120*HZ;
- if (sk->rto < 20) /* Was 1*HZ - keep .2 as minimum cos of the BSD delayed acks */
- sk->rto = 20;
+ if (sk->rto < HZ/5) /* Was 1*HZ - keep .2 as minimum cos of the BSD delayed acks */
+ sk->rto = HZ/5;
sk->backoff = 0;
}
flag |= (2|4); /* 2 is really more like 'don't adjust the rtt