From 4fce69d20dcf58206495839e4cead7df3ad6dbf5 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Thu, 30 Jan 2003 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 2003-01-30 --- ip/tcp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ip/tcp.c b/ip/tcp.c index f8524b7603b719368b249b2eb5c40450459de448..c697373fd0fee4ac97fe82202ac3ff8f0a0435cc 100644 --- a/ip/tcp.c +++ b/ip/tcp.c @@ -28,7 +28,7 @@ enum TcptimerON = 1, TcptimerDONE = 2, MAX_TIME = (1<<20), /* Forever */ - TCP_ACK = 200, /* Timed ack sequence in ms */ + TCP_ACK = 50, /* Timed ack sequence in ms */ URG = 0x20, /* Data marked urgent */ ACK = 0x10, /* Acknowledge is valid */ @@ -213,6 +213,7 @@ struct Tcpctl ulong urg; /* Urgent pointer */ ulong lastacked; /* Last ack sent */ int blocked; + int una; /* unacked data segs */ } rcv; ulong iss; /* Initial sequence number */ ushort cwind; /* Congestion window */ @@ -2170,6 +2171,10 @@ reset: panic("tcp packblock"); qpassnolim(s->rq, bp); bp = nil; + + /* force an ack every 2 data messages */ + if(++(tcb->rcv.una) >= 2) + tcb->flags |= FORCE; } tcb->rcv.nxt += length; @@ -2358,6 +2363,7 @@ tcpoutput(Conv *s) tcprcvwin(s); /* By default we will generate an ack */ + tcb->rcv.una = 0; seg.source = s->lport; seg.dest = s->rport; seg.flags = ACK;