]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/net/ip6_checksum.h
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / include / net / ip6_checksum.h
index 8ac5c21f84563faeda028606034f2c69d23dc2a6..1a49b73f7f6e372381f9d1f3b7cffdc5649794c6 100644 (file)
@@ -48,6 +48,14 @@ static inline __wsum ip6_compute_pseudo(struct sk_buff *skb, int proto)
                                            skb->len, proto, 0));
 }
 
+static inline __wsum ip6_gro_compute_pseudo(struct sk_buff *skb, int proto)
+{
+       const struct ipv6hdr *iph = skb_gro_network_header(skb);
+
+       return ~csum_unfold(csum_ipv6_magic(&iph->saddr, &iph->daddr,
+                                           skb_gro_len(skb), proto, 0));
+}
+
 static __inline__ __sum16 tcp_v6_check(int len,
                                   const struct in6_addr *saddr,
                                   const struct in6_addr *daddr,
@@ -82,5 +90,17 @@ static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
 }
 #endif
 
+static inline __sum16 udp_v6_check(int len,
+                                  const struct in6_addr *saddr,
+                                  const struct in6_addr *daddr,
+                                  __wsum base)
+{
+       return csum_ipv6_magic(saddr, daddr, len, IPPROTO_UDP, base);
+}
+
+void udp6_set_csum(bool nocheck, struct sk_buff *skb,
+                  const struct in6_addr *saddr,
+                  const struct in6_addr *daddr, int len);
+
 int udp6_csum_init(struct sk_buff *skb, struct udphdr *uh, int proto);
 #endif