X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Fdccp%2Fackvec.h;h=f7dfb5f67b873adb3c2613b215c83177c1e83c7b;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=ec7a89bb7b396ceaeaac47c2714b00fe05848318;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/net/dccp/ackvec.h b/net/dccp/ackvec.h index ec7a89bb7..f7dfb5f67 100644 --- a/net/dccp/ackvec.h +++ b/net/dccp/ackvec.h @@ -13,7 +13,6 @@ #include #include -#include #include #include @@ -43,57 +42,39 @@ * Ack Vectors it has recently sent. For each packet sent carrying an * Ack Vector, it remembers four variables: * + * @dccpav_ack_seqno - the Sequence Number used for the packet + * (HC-Receiver seqno) * @dccpav_ack_ptr - the value of buf_head at the time of acknowledgement. - * @dccpav_records - list of dccp_ackvec_record + * @dccpav_ack_ackno - the Acknowledgement Number used for the packet + * (HC-Sender seqno) * @dccpav_ack_nonce - the one-bit sum of the ECN Nonces for all State 0. * + * @dccpav_buf_len - circular buffer length * @dccpav_time - the time in usecs * @dccpav_buf - circular buffer of acknowledgeable packets */ struct dccp_ackvec { u64 dccpav_buf_ackno; - struct list_head dccpav_records; + u64 dccpav_ack_seqno; + u64 dccpav_ack_ackno; struct timeval dccpav_time; u8 dccpav_buf_head; u8 dccpav_buf_tail; u8 dccpav_ack_ptr; u8 dccpav_sent_len; u8 dccpav_vec_len; + u8 dccpav_buf_len; u8 dccpav_buf_nonce; u8 dccpav_ack_nonce; - u8 dccpav_buf[DCCP_MAX_ACKVEC_LEN]; -}; - -/** struct dccp_ackvec_record - ack vector record - * - * ACK vector record as defined in Appendix A of spec. - * - * The list is sorted by dccpavr_ack_seqno - * - * @dccpavr_node - node in dccpav_records - * @dccpavr_ack_seqno - sequence number of the packet this record was sent on - * @dccpavr_ack_ackno - sequence number being acknowledged - * @dccpavr_ack_ptr - pointer into dccpav_buf where this record starts - * @dccpavr_ack_nonce - dccpav_ack_nonce at the time this record was sent - * @dccpavr_sent_len - lenght of the record in dccpav_buf - */ -struct dccp_ackvec_record { - struct list_head dccpavr_node; - u64 dccpavr_ack_seqno; - u64 dccpavr_ack_ackno; - u8 dccpavr_ack_ptr; - u8 dccpavr_ack_nonce; - u8 dccpavr_sent_len; + u8 dccpav_buf[0]; }; struct sock; struct sk_buff; #ifdef CONFIG_IP_DCCP_ACKVEC -extern int dccp_ackvec_init(void); -extern void dccp_ackvec_exit(void); - -extern struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority); +extern struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, + const gfp_t priority); extern void dccp_ackvec_free(struct dccp_ackvec *av); extern int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk, @@ -111,16 +92,8 @@ static inline int dccp_ackvec_pending(const struct dccp_ackvec *av) return av->dccpav_sent_len != av->dccpav_vec_len; } #else /* CONFIG_IP_DCCP_ACKVEC */ -static inline int dccp_ackvec_init(void) -{ - return 0; -} - -static inline void dccp_ackvec_exit(void) -{ -} - -static inline struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority) +static inline struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, + const gfp_t priority) { return NULL; }