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
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
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 ++
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
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
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
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
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
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,
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
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]
---
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:
12 matches
Mail list logo