diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2010-11-14 11:25:11 -0500 |
---|---|---|
committer | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2010-11-15 01:11:59 -0500 |
commit | 5753fdfe8bd8e9a2ff9e5af19b0ffc78bfcd502a (patch) | |
tree | 2a694538aef985ffffd140a861df7efdc73aeddf /net/dccp/ackvec.h | |
parent | c25ecd0a21d5e08160cb5cc984f9e2b8ee347443 (diff) |
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>
Diffstat (limited to 'net/dccp/ackvec.h')
-rw-r--r-- | net/dccp/ackvec.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/dccp/ackvec.h b/net/dccp/ackvec.h index 23880be8fc29..3f7008187b8e 100644 --- a/net/dccp/ackvec.h +++ b/net/dccp/ackvec.h | |||
@@ -117,6 +117,7 @@ extern int dccp_ackvec_parse(struct sock *sk, const struct sk_buff *skb, | |||
117 | const u8 *value, const u8 len); | 117 | const u8 *value, const u8 len); |
118 | 118 | ||
119 | extern int dccp_ackvec_update_records(struct dccp_ackvec *av, u64 seq, u8 sum); | 119 | extern int dccp_ackvec_update_records(struct dccp_ackvec *av, u64 seq, u8 sum); |
120 | extern void dccp_ackvec_clear_state(struct dccp_ackvec *av, const u64 ackno); | ||
120 | extern u16 dccp_ackvec_buflen(const struct dccp_ackvec *av); | 121 | extern u16 dccp_ackvec_buflen(const struct dccp_ackvec *av); |
121 | 122 | ||
122 | static inline bool dccp_ackvec_is_empty(const struct dccp_ackvec *av) | 123 | static inline bool dccp_ackvec_is_empty(const struct dccp_ackvec *av) |