summaryrefslogtreecommitdiff
path: root/datapath
diff options
context:
space:
mode:
authorGreg Rose <gvrose8192@gmail.com>2018-06-01 13:07:43 -0700
committerBen Pfaff <blp@ovn.org>2018-06-04 12:52:22 -0700
commit10f242363d901d5aa982b223bedb1ec6948a7f7f (patch)
treead80da02d900fc77f17a0cd1db389fb993313177 /datapath
parent2bdd1f3d96a86bea6bdb8788f23ec7dd99b289e3 (diff)
downloadopenvswitch-10f242363d901d5aa982b223bedb1ec6948a7f7f.tar.gz
compat: Add skb_checksum_simple_complete()
A recent patch to gre.c added a call to skb_checksum_simple_complete() which is not present in kernels before 3.16. Fix up the compatability layer to allow compile on older kernels that do not have it. Signed-off-by: Greg Rose <gvrose8192@gmail.com> Acked-by: William Tu <u9012063@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'datapath')
-rw-r--r--datapath/linux/compat/include/linux/skbuff.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h
index 63ffcaa35..c50cac24a 100644
--- a/datapath/linux/compat/include/linux/skbuff.h
+++ b/datapath/linux/compat/include/linux/skbuff.h
@@ -32,7 +32,11 @@ static inline __wsum null_compute_pseudo(struct sk_buff *skb, int proto)
#ifndef HAVE_SKB_CHECKSUM_CONVERT
static inline bool __skb_checksum_convert_check(struct sk_buff *skb)
{
+#ifdef HAVE_SKBUFF_CSUM_VALID
return (skb->ip_summed == CHECKSUM_NONE && skb->csum_valid);
+#else
+ return skb->ip_summed == CHECKSUM_NONE;
+#endif
}
static inline void __skb_checksum_convert(struct sk_buff *skb,
@@ -50,6 +54,21 @@ do { \
} while (0)
#endif
+
+#ifndef SKB_CHECKSUM_SIMPLE_VALIDATE
+
+#define __skb_checksum_validate(skb, proto, complete, \
+ zero_okay, check, compute_pseudo) \
+({ \
+ __sum16 __ret = 0; \
+ __ret; \
+})
+
+
+#define skb_checksum_simple_validate(skb) \
+ __skb_checksum_validate(skb, 0, true, false, 0, null_compute_pseudo)
+#endif
+
#ifndef HAVE_SKB_COPY_FROM_LINEAR_DATA_OFFSET
static inline void skb_copy_from_linear_data_offset(const struct sk_buff *skb,
const int offset, void *to,