[DCCP] ackvec: Ditch dccpav_buf_len
authorArnaldo Carvalho de Melo <acme@mandriva.com>
Tue, 21 Mar 2006 01:15:42 +0000 (17:15 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Mar 2006 01:15:42 +0000 (17:15 -0800)
Simplifying the code a bit as we're always using DCCP_MAX_ACKVEC_LEN.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ackvec.c
net/dccp/ackvec.h
net/dccp/ipv4.c
net/dccp/minisocks.c

index 2c77dafbd091f9c4627097b037b0a816bf18301e..348374005db0aaa0fbd59361c4e781fa74b695aa 100644 (file)
 int dccp_insert_option_ackvec(struct sock *sk, struct sk_buff *skb)
 {
        struct dccp_sock *dp = dccp_sk(sk);
+#ifdef CONFIG_IP_DCCP_DEBUG
+       const char *debug_prefix = dp->dccps_role == DCCP_ROLE_CLIENT ?
+                               "CLIENT tx: " : "server tx: ";
+#endif
        struct dccp_ackvec *av = dp->dccps_hc_rx_ackvec;
        int len = av->dccpav_vec_len + 2;
        struct timeval now;
@@ -90,21 +94,13 @@ int dccp_insert_option_ackvec(struct sock *sk, struct sk_buff *skb)
        return -1;
 }
 
-struct dccp_ackvec *dccp_ackvec_alloc(const unsigned int len,
-                                     const gfp_t priority)
+struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority)
 {
-       struct dccp_ackvec *av;
-
-       BUG_ON(len == 0);
-
-       if (len > DCCP_MAX_ACKVEC_LEN)
-               return NULL;
+       struct dccp_ackvec *av = kmalloc(sizeof(*av), priority);
 
-       av = kmalloc(sizeof(*av) + len, priority);
        if (av != NULL) {
-               av->dccpav_buf_len      = len;
                av->dccpav_buf_head     =
-                       av->dccpav_buf_tail = av->dccpav_buf_len - 1;
+                       av->dccpav_buf_tail = DCCP_MAX_ACKVEC_LEN - 1;
                av->dccpav_buf_ackno    =
                        av->dccpav_ack_ackno = av->dccpav_ack_seqno = ~0LLU;
                av->dccpav_buf_nonce = av->dccpav_buf_nonce = 0;
@@ -146,7 +142,7 @@ static inline int dccp_ackvec_set_buf_head_state(struct dccp_ackvec *av,
        unsigned int gap;
        long new_head;
 
-       if (av->dccpav_vec_len + packets > av->dccpav_buf_len)
+       if (av->dccpav_vec_len + packets > DCCP_MAX_ACKVEC_LEN)
                return -ENOBUFS;
 
        gap      = packets - 1;
@@ -158,7 +154,7 @@ static inline int dccp_ackvec_set_buf_head_state(struct dccp_ackvec *av,
                               gap + new_head + 1);
                        gap = -new_head;
                }
-               new_head += av->dccpav_buf_len;
+               new_head += DCCP_MAX_ACKVEC_LEN;
        } 
 
        av->dccpav_buf_head = new_head;
@@ -251,7 +247,7 @@ int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk,
                                goto out_duplicate;
 
                        delta -= len + 1;
-                       if (++index == av->dccpav_buf_len)
+                       if (++index == DCCP_MAX_ACKVEC_LEN)
                                index = 0;
                }
        }
index f7dfb5f67b873adb3c2613b215c83177c1e83c7b..f083daf4200c38980ec580181737f0467671f502 100644 (file)
@@ -49,7 +49,6 @@
  *                    (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
  */
@@ -63,18 +62,16 @@ struct dccp_ackvec {
        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[0];
+       u8              dccpav_buf[DCCP_MAX_ACKVEC_LEN];
 };
 
 struct sock;
 struct sk_buff;
 
 #ifdef CONFIG_IP_DCCP_ACKVEC
-extern struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len,
-                                         const gfp_t priority);
+extern struct dccp_ackvec *dccp_ackvec_alloc(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,
@@ -92,8 +89,7 @@ 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 struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len,
-                                          const gfp_t priority)
+static inline struct dccp_ackvec *dccp_ackvec_alloc(const gfp_t priority)
 {
        return NULL;
 }
index dc0487b5bacec375dda26bbdc4515b5a5cedc621..f8df565e89c82d4325598d0aa45c33096db13fe0 100644 (file)
@@ -1042,8 +1042,7 @@ int dccp_v4_init_sock(struct sock *sk)
        do_gettimeofday(&dp->dccps_epoch);
 
        if (dp->dccps_options.dccpo_send_ack_vector) {
-               dp->dccps_hc_rx_ackvec = dccp_ackvec_alloc(DCCP_MAX_ACKVEC_LEN,
-                                                          GFP_KERNEL);
+               dp->dccps_hc_rx_ackvec = dccp_ackvec_alloc(GFP_KERNEL);
                if (dp->dccps_hc_rx_ackvec == NULL)
                        return -ENOMEM;
        }
index 29261fc198e76161215d275109ba7163390901db..a60a3e948c3613c16307dba5fd2b24a17c397307 100644 (file)
@@ -116,8 +116,7 @@ struct sock *dccp_create_openreq_child(struct sock *sk,
 
                if (newdp->dccps_options.dccpo_send_ack_vector) {
                        newdp->dccps_hc_rx_ackvec =
-                               dccp_ackvec_alloc(DCCP_MAX_ACKVEC_LEN,
-                                                 GFP_ATOMIC);
+                                               dccp_ackvec_alloc(GFP_ATOMIC);
                        /*
                         * XXX: We're using the same CCIDs set on the parent,
                         * i.e. sk_clone copied the master sock and left the