[NET]: annotate csum_ipv6_magic() callers in net/*
Al Viro [Wed, 15 Nov 2006 05:35:48 +0000 (21:35 -0800)]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>

include/net/udp.h
include/net/udplite.h
net/dccp/ipv6.c
net/ipv6/icmp.c
net/ipv6/mcast.c
net/ipv6/netfilter.c
net/ipv6/raw.c
net/ipv6/tcp_ipv6.c
net/ipv6/udp.c

index 4f06267..39e825a 100644 (file)
@@ -89,9 +89,9 @@ static __inline__ int udp_lib_checksum_complete(struct sk_buff *skb)
  *     @skb:   sk_buff containing the filled-in UDP header
  *             (checksum field must be zeroed out)
  */
-static inline u32 udp_csum_outgoing(struct sock *sk, struct sk_buff *skb)
+static inline __wsum udp_csum_outgoing(struct sock *sk, struct sk_buff *skb)
 {
-       u32 csum = csum_partial(skb->h.raw, sizeof(struct udphdr), 0);
+       __wsum csum = csum_partial(skb->h.raw, sizeof(struct udphdr), 0);
 
        skb_queue_walk(&sk->sk_write_queue, skb) {
                csum = csum_add(csum, skb->csum);
index 1473b3e..406eb75 100644 (file)
@@ -124,10 +124,10 @@ static inline int udplite_sender_cscov(struct udp_sock *up, struct udphdr *uh)
        return cscov;
 }
 
-static inline u32 udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)
+static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)
 {
-       u32 csum = 0;
        int off, len, cscov = udplite_sender_cscov(udp_sk(sk), skb->h.uh);
+       __wsum csum = 0;
 
        skb->ip_summed = CHECKSUM_NONE;     /* no HW support for checksumming */
 
index e0a0607..f28e406 100644 (file)
@@ -59,7 +59,7 @@ static void dccp_v6_hash(struct sock *sk)
 }
 
 /* add pseudo-header to DCCP checksum stored in skb->csum */
-static inline u16 dccp_v6_csum_finish(struct sk_buff *skb,
+static inline __sum16 dccp_v6_csum_finish(struct sk_buff *skb,
                                      struct in6_addr *saddr,
                                      struct in6_addr *daddr)
 {
index bd51847..4ab8acf 100644 (file)
@@ -234,7 +234,7 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
                                                      len, fl->proto,
                                                      skb->csum);
        } else {
-               u32 tmp_csum = 0;
+               __wsum tmp_csum = 0;
 
                skb_queue_walk(&sk->sk_write_queue, skb) {
                        tmp_csum = csum_add(tmp_csum, skb->csum);
@@ -242,10 +242,10 @@ static int icmpv6_push_pending_frames(struct sock *sk, struct flowi *fl, struct
 
                tmp_csum = csum_partial((char *)icmp6h,
                                        sizeof(struct icmp6hdr), tmp_csum);
-               tmp_csum = csum_ipv6_magic(&fl->fl6_src,
-                                          &fl->fl6_dst,
-                                          len, fl->proto, tmp_csum);
-               icmp6h->icmp6_cksum = tmp_csum;
+               icmp6h->icmp6_cksum = csum_ipv6_magic(&fl->fl6_src,
+                                                     &fl->fl6_dst,
+                                                     len, fl->proto,
+                                                     tmp_csum);
        }
        ip6_push_pending_frames(sk);
 out:
@@ -636,8 +636,8 @@ static int icmpv6_rcv(struct sk_buff **pskb)
                        break;
                /* fall through */
        case CHECKSUM_NONE:
-               skb->csum = ~csum_ipv6_magic(saddr, daddr, skb->len,
-                                            IPPROTO_ICMPV6, 0);
+               skb->csum = ~csum_unfold(csum_ipv6_magic(saddr, daddr, skb->len,
+                                            IPPROTO_ICMPV6, 0));
                if (__skb_checksum_complete(skb)) {
                        LIMIT_NETDEBUG(KERN_DEBUG "ICMPv6 checksum failed [" NIP6_FMT " > " NIP6_FMT "]\n",
                                       NIP6(*saddr), NIP6(*daddr));
index c006d02..a1c231a 100644 (file)
@@ -91,7 +91,7 @@ struct mld2_grec {
 struct mld2_report {
        __u8    type;
        __u8    resv1;
-       __u16   csum;
+       __sum16 csum;
        __be16  resv2;
        __be16  ngrec;
        struct mld2_grec grec[0];
@@ -100,7 +100,7 @@ struct mld2_report {
 struct mld2_query {
        __u8 type;
        __u8 code;
-       __u16 csum;
+       __sum16 csum;
        __be16 mrc;
        __be16 resv1;
        struct in6_addr mca;
index 646a474..8d1b542 100644 (file)
@@ -100,12 +100,13 @@ unsigned int nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
                }
                /* fall through */
        case CHECKSUM_NONE:
-               skb->csum = ~csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr,
+               skb->csum = ~csum_unfold(
+                               csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr,
                                             skb->len - dataoff,
                                             protocol,
                                             csum_sub(0,
                                                      skb_checksum(skb, 0,
-                                                                  dataoff, 0)));
+                                                                  dataoff, 0))));
                csum = __skb_checksum_complete(skb);
        }
        return csum;
index b03040a..cee5db2 100644 (file)
@@ -370,9 +370,9 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
        }
        if (skb->ip_summed != CHECKSUM_UNNECESSARY)
-               skb->csum = ~csum_ipv6_magic(&skb->nh.ipv6h->saddr,
+               skb->csum = ~csum_unfold(csum_ipv6_magic(&skb->nh.ipv6h->saddr,
                                             &skb->nh.ipv6h->daddr,
-                                            skb->len, inet->num, 0);
+                                            skb->len, inet->num, 0));
 
        if (inet->hdrincl) {
                if (skb_checksum_complete(skb)) {
@@ -479,8 +479,8 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
        int offset;
        int len;
        int total_len;
-       u32 tmp_csum;
-       u16 csum;
+       __wsum tmp_csum;
+       __sum16 csum;
 
        if (!rp->checksum)
                goto send;
@@ -532,14 +532,13 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi *fl,
        if (unlikely(csum))
                tmp_csum = csum_sub(tmp_csum, csum);
 
-       tmp_csum = csum_ipv6_magic(&fl->fl6_src,
+       csum = csum_ipv6_magic(&fl->fl6_src,
                                   &fl->fl6_dst,
                                   total_len, fl->proto, tmp_csum);
 
        if (tmp_csum == 0 && fl->proto == IPPROTO_UDP)
                tmp_csum = -1;
 
-       csum = tmp_csum;
        if (skb_store_bits(skb, offset, &csum, 2))
                BUG();
 
index 53f2709..394bc54 100644 (file)
@@ -105,10 +105,10 @@ static void tcp_v6_hash(struct sock *sk)
        }
 }
 
-static __inline__ u16 tcp_v6_check(struct tcphdr *th, int len,
+static __inline__ __sum16 tcp_v6_check(struct tcphdr *th, int len,
                                   struct in6_addr *saddr, 
                                   struct in6_addr *daddr, 
-                                  unsigned long base)
+                                  __wsum base)
 {
        return csum_ipv6_magic(saddr, daddr, len, IPPROTO_TCP, base);
 }
@@ -1537,8 +1537,8 @@ static int tcp_v6_checksum_init(struct sk_buff *skb)
                }
        }
 
-       skb->csum = ~tcp_v6_check(skb->h.th,skb->len,&skb->nh.ipv6h->saddr,
-                                 &skb->nh.ipv6h->daddr, 0);
+       skb->csum = ~csum_unfold(tcp_v6_check(skb->h.th,skb->len,&skb->nh.ipv6h->saddr,
+                                 &skb->nh.ipv6h->daddr, 0));
 
        if (skb->len <= 76) {
                return __skb_checksum_complete(skb);
index e6e1f85..0d22008 100644 (file)
@@ -383,9 +383,10 @@ static inline int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh)
                skb->ip_summed = CHECKSUM_UNNECESSARY;
 
        if (skb->ip_summed != CHECKSUM_UNNECESSARY)
-               skb->csum = ~csum_ipv6_magic(&skb->nh.ipv6h->saddr,
-                                            &skb->nh.ipv6h->daddr,
-                                            skb->len, IPPROTO_UDP, 0);
+               skb->csum = ~csum_unfold(csum_ipv6_magic(&skb->nh.ipv6h->saddr,
+                                                        &skb->nh.ipv6h->daddr,
+                                                        ulen, IPPROTO_UDP,
+                                                        0));
 
        return (UDP_SKB_CB(skb)->partial_cov = 0);
 }
@@ -511,7 +512,7 @@ static int udp_v6_push_pending_frames(struct sock *sk, struct udp_sock *up)
        struct inet_sock *inet = inet_sk(sk);
        struct flowi *fl = &inet->cork.fl;
        int err = 0;
-       u32 csum = 0;
+       __wsum csum = 0;
 
        /* Grab the skbuff where UDP header space exists. */
        if ((skb = skb_peek(&sk->sk_write_queue)) == NULL)