ackvec.h (020abf03cd659388f94cb328e1e1df0656e0d7ff) ackvec.h (2c53040f018b6c36a46eec75b9b937aaa5f78e6d)
1#ifndef _ACKVEC_H
2#define _ACKVEC_H
3/*
4 * net/dccp/ackvec.h
5 *
6 * An implementation of Ack Vectors for the DCCP protocol
7 * Copyright (c) 2007 University of Aberdeen, Scotland, UK
8 * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@mandriva.com>

--- 36 unchanged lines hidden (view full) ---

45 return *cell & DCCPAV_MAX_RUNLEN;
46}
47
48static inline u8 dccp_ackvec_state(const u8 *cell)
49{
50 return *cell & ~DCCPAV_MAX_RUNLEN;
51}
52
1#ifndef _ACKVEC_H
2#define _ACKVEC_H
3/*
4 * net/dccp/ackvec.h
5 *
6 * An implementation of Ack Vectors for the DCCP protocol
7 * Copyright (c) 2007 University of Aberdeen, Scotland, UK
8 * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@mandriva.com>

--- 36 unchanged lines hidden (view full) ---

45 return *cell & DCCPAV_MAX_RUNLEN;
46}
47
48static inline u8 dccp_ackvec_state(const u8 *cell)
49{
50 return *cell & ~DCCPAV_MAX_RUNLEN;
51}
52
53/** struct dccp_ackvec - Ack Vector main data structure
53/**
54 * struct dccp_ackvec - Ack Vector main data structure
54 *
55 * This implements a fixed-size circular buffer within an array and is largely
56 * based on Appendix A of RFC 4340.
57 *
58 * @av_buf: circular buffer storage area
59 * @av_buf_head: head index; begin of live portion in @av_buf
60 * @av_buf_tail: tail index; first index _after_ the live portion in @av_buf
61 * @av_buf_ackno: highest seqno of acknowledgeable packet recorded in @av_buf

--- 9 unchanged lines hidden (view full) ---

71 u16 av_buf_tail;
72 u64 av_buf_ackno:48;
73 u64 av_tail_ackno:48;
74 bool av_buf_nonce[DCCPAV_NUM_ACKVECS];
75 u8 av_overflow:1;
76 struct list_head av_records;
77};
78
55 *
56 * This implements a fixed-size circular buffer within an array and is largely
57 * based on Appendix A of RFC 4340.
58 *
59 * @av_buf: circular buffer storage area
60 * @av_buf_head: head index; begin of live portion in @av_buf
61 * @av_buf_tail: tail index; first index _after_ the live portion in @av_buf
62 * @av_buf_ackno: highest seqno of acknowledgeable packet recorded in @av_buf

--- 9 unchanged lines hidden (view full) ---

72 u16 av_buf_tail;
73 u64 av_buf_ackno:48;
74 u64 av_tail_ackno:48;
75 bool av_buf_nonce[DCCPAV_NUM_ACKVECS];
76 u8 av_overflow:1;
77 struct list_head av_records;
78};
79
79/** struct dccp_ackvec_record - Records information about sent Ack Vectors
80/**
81 * struct dccp_ackvec_record - Records information about sent Ack Vectors
80 *
81 * These list entries define the additional information which the HC-Receiver
82 * keeps about recently-sent Ack Vectors; again refer to RFC 4340, Appendix A.
83 *
84 * @avr_node: the list node in @av_records
85 * @avr_ack_seqno: sequence number of the packet the Ack Vector was sent on
86 * @avr_ack_ackno: the Ack number that this record/Ack Vector refers to
87 * @avr_ack_ptr: pointer into @av_buf where this record starts

--- 28 unchanged lines hidden (view full) ---

116}
117
118/**
119 * struct dccp_ackvec_parsed - Record offsets of Ack Vectors in skb
120 * @vec: start of vector (offset into skb)
121 * @len: length of @vec
122 * @nonce: whether @vec had an ECN nonce of 0 or 1
123 * @node: FIFO - arranged in descending order of ack_ackno
82 *
83 * These list entries define the additional information which the HC-Receiver
84 * keeps about recently-sent Ack Vectors; again refer to RFC 4340, Appendix A.
85 *
86 * @avr_node: the list node in @av_records
87 * @avr_ack_seqno: sequence number of the packet the Ack Vector was sent on
88 * @avr_ack_ackno: the Ack number that this record/Ack Vector refers to
89 * @avr_ack_ptr: pointer into @av_buf where this record starts

--- 28 unchanged lines hidden (view full) ---

118}
119
120/**
121 * struct dccp_ackvec_parsed - Record offsets of Ack Vectors in skb
122 * @vec: start of vector (offset into skb)
123 * @len: length of @vec
124 * @nonce: whether @vec had an ECN nonce of 0 or 1
125 * @node: FIFO - arranged in descending order of ack_ackno
126 *
124 * This structure is used by CCIDs to access Ack Vectors in a received skb.
125 */
126struct dccp_ackvec_parsed {
127 u8 *vec,
128 len,
129 nonce:1;
130 struct list_head node;
131};
132
133extern int dccp_ackvec_parsed_add(struct list_head *head,
134 u8 *vec, u8 len, u8 nonce);
135extern void dccp_ackvec_parsed_cleanup(struct list_head *parsed_chunks);
136#endif /* _ACKVEC_H */
127 * This structure is used by CCIDs to access Ack Vectors in a received skb.
128 */
129struct dccp_ackvec_parsed {
130 u8 *vec,
131 len,
132 nonce:1;
133 struct list_head node;
134};
135
136extern int dccp_ackvec_parsed_add(struct list_head *head,
137 u8 *vec, u8 len, u8 nonce);
138extern void dccp_ackvec_parsed_cleanup(struct list_head *parsed_chunks);
139#endif /* _ACKVEC_H */