: CCID3 Packet Reception Step 6a - Basic loss detection
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(sdccp_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