dccp ccid-2: Algorithm to update buffer state
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Sun, 14 Nov 2010 16:25:11 +0000 (17:25 +0100)
committerGerrit Renker <gerrit@erg.abdn.ac.uk>
Mon, 15 Nov 2010 06:11:59 +0000 (07:11 +0100)
commit5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a
tree2a694538aef985ffffd140a861df7efdc73aeddf
parentc25ecd0a21d5e08160cb5cc984f9e2b8ee347443
dccp ccid-2: Algorithm to update buffer state

This provides a routine to consistently update the buffer state when the
peer acknowledges receipt of Ack Vectors; updating state in the list of Ack
Vectors as well as in the circular buffer.

While based on RFC 4340, several additional (and necessary) precautions were
added to protect the consistency of the buffer state. These additions are
essential, since analysis and experience showed that the basic algorithm was
insufficient for this task (which lead to problems that were hard to debug).

The algorithm now
 * deals with HC-sender acknowledging to HC-receiver and vice versa,
 * keeps track of the last unacknowledged but received seqno in tail_ackno,
 * has special cases to reset the overflow condition when appropriate,
 * is protected against receiving older information (would mess up buffer state).

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
net/dccp/ackvec.c
net/dccp/ackvec.h
net/dccp/input.c
net/dccp/options.c