Skip to contentSkip to conversation

: CCID3 Packet Reception Step 6a - Basic loss detection

PATCH In review Gerrit Renker 1 participant 1 message Apr 5, 2007 Networking

lore
Share & tools
lore
#0 lore raw

PATCH 13/43 : CCID3 Packet Reception Step 6a - Basic loss detection

[CCID 3]: CCID3 Packet Reception Step 6a - Basic loss detection

This implements loss detection for CCID3 atop of the new RX history. Features:
* waiting for NDUPACK=3 packets to fill the hole;
* coping with re-ordered/duplicate/late packets;
* merging loss records when a late-arriving packet fills a hole.

All these cases are known to occur in practice, but do not always happen. Hence the entire code has been verified using a test module which provides test cases for each possible scenario.

Detailed documentation in section 3 of
http://www.erg.abdn.ac.uk/users/gerrit/dccp/docs/ccid3_packet_reception/

NB - all datatypes for sequence number distances and NDP counts are `int', as
figures of 2^30 lost packets or receiving 2^30 non-data packets are insane.

---
 net/dccp/ccids/ccid3.c              |   62 --------------
 net/dccp/ccids/lib/packet_history.c |  153 ++++++++++++++++++++++++++++++++++++
 net/dccp/ccids/lib/packet_history.h |    1 
 3 files changed, 156 insertions(+), 60 deletions(-)
net/dccp/ccids/lib/packet_history.h +1 -0
@@ -221,6 +221,7 @@ static inline void tfrc_rx_hist_update(s
 	dccp_rx_hist_entry_from_skb(last_rcv(h), skb, ndp);
 }
 
+extern int  tfrc_rx_handle_loss(struct tfrc_rx_hist *, struct sk_buff *, u32);
 extern u32  tfrc_rx_sample_rtt(struct tfrc_rx_hist *, struct sk_buff *);
 extern int  tfrc_rx_hist_init(struct tfrc_rx_hist *);
 extern void tfrc_rx_hist_cleanup(struct tfrc_rx_hist *);
net/dccp/ccids/lib/packet_history.c +153 -0

159 lines not on this page · raw message

net/dccp/ccids/ccid3.c +2 -59

73 lines not on this page · raw message