aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/ackvec.h
diff options
context:
space:
mode:
authorAndrea Bittau <a.bittau@cs.ucl.ac.uk>2006-03-20 20:19:55 -0500
committerDavid S. Miller <davem@davemloft.net>2006-03-20 20:19:55 -0500
commit02bcf28c82c8e4b72c4b89bddbbb6fea1a646d07 (patch)
treed70435d97b3454dcafb6decd6defd603fdf10f82 /net/dccp/ackvec.h
parente229c2fb3370a0c4ebac06cad67ce1cb35abcfe6 (diff)
[DCCP] ackvec: Introduce ack vector records
Based on a patch by Andrea Bittau. Signed-off-by: Andrea Bittau <a.bittau@cs.ucl.ac.uk> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/ackvec.h')
-rw-r--r--net/dccp/ackvec.h31
1 files changed, 25 insertions, 6 deletions
diff --git a/net/dccp/ackvec.h b/net/dccp/ackvec.h
index 470bae8a9d07..ec7a89bb7b39 100644
--- a/net/dccp/ackvec.h
+++ b/net/dccp/ackvec.h
@@ -13,6 +13,7 @@
13 13
14#include <linux/config.h> 14#include <linux/config.h>
15#include <linux/compiler.h> 15#include <linux/compiler.h>
16#include <linux/list.h>
16#include <linux/time.h> 17#include <linux/time.h>
17#include <linux/types.h> 18#include <linux/types.h>
18 19
@@ -42,11 +43,8 @@
42 * Ack Vectors it has recently sent. For each packet sent carrying an 43 * Ack Vectors it has recently sent. For each packet sent carrying an
43 * Ack Vector, it remembers four variables: 44 * Ack Vector, it remembers four variables:
44 * 45 *
45 * @dccpav_ack_seqno - the Sequence Number used for the packet
46 * (HC-Receiver seqno)
47 * @dccpav_ack_ptr - the value of buf_head at the time of acknowledgement. 46 * @dccpav_ack_ptr - the value of buf_head at the time of acknowledgement.
48 * @dccpav_ack_ackno - the Acknowledgement Number used for the packet 47 * @dccpav_records - list of dccp_ackvec_record
49 * (HC-Sender seqno)
50 * @dccpav_ack_nonce - the one-bit sum of the ECN Nonces for all State 0. 48 * @dccpav_ack_nonce - the one-bit sum of the ECN Nonces for all State 0.
51 * 49 *
52 * @dccpav_time - the time in usecs 50 * @dccpav_time - the time in usecs
@@ -54,8 +52,7 @@
54 */ 52 */
55struct dccp_ackvec { 53struct dccp_ackvec {
56 u64 dccpav_buf_ackno; 54 u64 dccpav_buf_ackno;
57 u64 dccpav_ack_seqno; 55 struct list_head dccpav_records;
58 u64 dccpav_ack_ackno;
59 struct timeval dccpav_time; 56 struct timeval dccpav_time;
60 u8 dccpav_buf_head; 57 u8 dccpav_buf_head;
61 u8 dccpav_buf_tail; 58 u8 dccpav_buf_tail;
@@ -67,6 +64,28 @@ struct dccp_ackvec {
67 u8 dccpav_buf[DCCP_MAX_ACKVEC_LEN]; 64 u8 dccpav_buf[DCCP_MAX_ACKVEC_LEN];
68}; 65};
69 66
67/** struct dccp_ackvec_record - ack vector record
68 *
69 * ACK vector record as defined in Appendix A of spec.
70 *
71 * The list is sorted by dccpavr_ack_seqno
72 *
73 * @dccpavr_node - node in dccpav_records
74 * @dccpavr_ack_seqno - sequence number of the packet this record was sent on
75 * @dccpavr_ack_ackno - sequence number being acknowledged
76 * @dccpavr_ack_ptr - pointer into dccpav_buf where this record starts
77 * @dccpavr_ack_nonce - dccpav_ack_nonce at the time this record was sent
78 * @dccpavr_sent_len - lenght of the record in dccpav_buf
79 */
80struct dccp_ackvec_record {
81 struct list_head dccpavr_node;
82 u64 dccpavr_ack_seqno;
83 u64 dccpavr_ack_ackno;
84 u8 dccpavr_ack_ptr;
85 u8 dccpavr_ack_nonce;
86 u8 dccpavr_sent_len;
87};
88
70struct sock; 89struct sock;
71struct sk_buff; 90struct sk_buff;
72 91