Subject: CVS commit: src/sys/netinet
To: None <source-changes@NetBSD.org>
From: Charles M. Hannum <mycroft@netbsd.org>
List: source-changes
Date: 01/27/2005 03:39:36
Module Name:	src
Committed By:	mycroft
Date:		Thu Jan 27 03:39:36 UTC 2005

Modified Files:
	src/sys/netinet: tcp_input.c tcp_var.h

Log Message:
Introduce a new state variable, t_partialacks.  It has 3 states:
* t_partialacks<0 means we are not in fast recovery.
* t_partialacks==0 means we are in fast recovery, but we have not received
  any partial acks yet.
* t_partialacks>0 means we are in fast recovery, and we have received
  partial acks.

This is used to implement 2 changes in RFC 3782:
* We keep the notion that we are in fast recovery separate from t_dupacks, so
  it is not reset due to out-of-order acks.  (This affects both the Reno and
  NewReno cases.)
* We only reset the retransmit timer on the first partial ack -- preventing us
  from possibly taking one RTO per segment once fast recovery is initiated.

As before, it is hard to measure any difference between Reno and NewReno in the
real-world cases that I've tested.


To generate a diff of this commit:
cvs rdiff -r1.213 -r1.214 src/sys/netinet/tcp_input.c
cvs rdiff -r1.116 -r1.117 src/sys/netinet/tcp_var.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.