diff options
author | Andrea Bittau <a.bittau@cs.ucl.ac.uk> | 2006-03-20 20:19:55 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-03-20 20:19:55 -0500 |
commit | 02bcf28c82c8e4b72c4b89bddbbb6fea1a646d07 (patch) | |
tree | d70435d97b3454dcafb6decd6defd603fdf10f82 /net/dccp/ackvec.h | |
parent | e229c2fb3370a0c4ebac06cad67ce1cb35abcfe6 (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.h | 31 |
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 | */ |
55 | struct dccp_ackvec { | 53 | struct 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 | */ | ||
80 | struct 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 | |||
70 | struct sock; | 89 | struct sock; |
71 | struct sk_buff; | 90 | struct sk_buff; |
72 | 91 | ||