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 */ |