[PATCH 07/14] [ACKVEC]: Unnecessary to parse Ack Vectors when clearing HC-receiver state

2007-12-19 Thread Gerrit Renker
This removes code clearing Ack Vector state when it is acknowledged via an Ack Vector by the peer. That code is redundant, since * the receiver always puts the full acknowledgment window (groups 2,3 in 11.4.2) into the Ack Vectors it sends; hence the HC-receiver is only interested in the

[PATCH 09/14] [ACKVEC]: Support for circular Ack Vector buffer with overflow handling

2007-12-19 Thread Gerrit Renker
This adds missing bits to complete the implementation of a circular buffer for Ack Vector information, with the following changes: (a) An `overflow' flag to deal with the case of overflow. As before, dynamic growth of the buffer will not be supported; but code will be added to deal

[PATCH 08/14] [ACKVEC]: Use enum to enumerate Ack Vector states

2007-12-19 Thread Gerrit Renker
This replaces 3 #defines with an enum containing all possible Ack Vector states as per RFC 4340, 11.4. This helps to reduce the length of several expressions. Signed-off-by: Gerrit Renker [EMAIL PROTECTED] --- net/dccp/ackvec.c |7 +++ net/dccp/ackvec.h | 10 ++

[PATCH 03/14] [ACKVEC]: Use Elapsed Time separately

2007-12-19 Thread Gerrit Renker
This decouples the use of Elapsed Time options from the use of Ack Vectors, so that Elapsed Time options are no longer added automatically to each Ack Vector. There are three reasons for this: 1. The Elapsed Time information is nowhere used in the code. 2. DCCP does not implement rate-based

[PATCH 01/14] [CCID2]: Ack Vectors can happen on most packets

2007-12-19 Thread Gerrit Renker
CCID2 feedback only considers Ack/DataAck packets, but Ack Vectors can appear on other packets, too. In RFC 4340, 11.4 the only restriction is that they must not appear on Data or Request packets. A possible case is for instance a Sync packet used for feature-negotiation (as used e.g in section

[PATCH 13/14] [ACKVEC]: Aggregate Ack-Vector related processing into single function

2007-12-19 Thread Gerrit Renker
This aggregates Ack Vector processing (handling input and clearing old state) into one function, for the following reasons and benefits: * duplicated code is removed; * all Ack Vector-specific processing is now in one place; * sanity: from an Ack Vector point of view, it is better to clear the

[DCCP] [RFC] [Patch 0/14]: Ack Vector implementation + fixes

2007-12-19 Thread Gerrit Renker
This set of patches adds functionality to the existing DCCP Ack Vector implementation, extends it to a full circular buffer, and fixes two previously undiscovered problems which otherwise result in a corrupted buffer state. It is important that Ack Vectors run reliably since otherwise problems in

[PATCH 11/14] [ACKVEC]: Implement algorithm to update buffer state

2007-12-19 Thread Gerrit Renker
This implements an algorithm 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. The algorithm * deals with HC-sender acknowledging to HC-receiver and vice versa, * keeps track of

[PATCH 10/14] [ACKVEC]: Determine buffer length dynamically

2007-12-19 Thread Gerrit Renker
The length of the circular Ack Vector buffer is now determined dynamically, as the span between head to tail. Signed-off-by: Gerrit Renker [EMAIL PROTECTED] --- net/dccp/ackvec.c | 21 + net/dccp/ackvec.h |7 +++ net/dccp/options.c |7 --- 3 files changed,

[PATCH 05/14] [ACKVEC]: Smaller allocation/deallocation routines

2007-12-19 Thread Gerrit Renker
This patch removes redundant bits, implementing the same functionality with less code. The details are: * The INIT_LIST_HEAD in dccp_ackvec_record_new was redundant, since the list pointers were later overwritten when the node was added via list_add(). * dccp_ackvec_record_new() was

[PATCH 04/14] [ACKVEC]: Inlines for run length and state

2007-12-19 Thread Gerrit Renker
This provides inlines for Ack Vector run length and state, which allow to wrap several instances of the same code into function calls. The unused function dccp_ackvec_print() (which also relied on the older constants), has been removed. Signed-off-by: Gerrit Renker [EMAIL PROTECTED] ---

[PATCH 06/14] [ACKVEC]: Simplify adding Ack Vector records, split option-specific code

2007-12-19 Thread Gerrit Renker
This patch * simplifies the dccp_ackvec_insert_avr() routine: the BUG_ON was redundant, since the list is automatically arranged in descending order of ack_no; * separates Ack Vector housekeeping code from option-specific code; * shifts option-specific code into options.c. Signed-off-by: