[ovs-dev] [PATCH] compat: Add skb_checksum_simple_complete()
Gregory Rose
gvrose8192 at gmail.com
Mon Jun 4 19:57:25 UTC 2018
On 6/1/2018 1:07 PM, Greg Rose wrote:
> 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 at gmail.com>
NACK - I'll send a V2 that doesn't cause compile warnings.
- Greg
> ---
> acinclude.m4 | 5 +++++
> datapath/linux/compat/include/linux/skbuff.h | 19 +++++++++++++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/acinclude.m4 b/acinclude.m4
> index 7a653cb..991a627 100644
> --- a/acinclude.m4
> +++ b/acinclude.m4
> @@ -872,6 +872,11 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
> [IFLA_GRE_ERSPAN_HWID])
> OVS_GREP_IFELSE([$KSRC/include/uapi/linux/if_tunnel.h],
> [IFLA_IPTUN_FWMARK])
> + OVS_FIND_FIELD_IFELSE([$KSRC/include/linux/skbuff.h], [sk_buff],
> + [csum_valid],
> + [OVS_DEFINE([HAVE_SKBUFF_CSUM_VALID])])
> + OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h],
> + [skb_checksum_simple_validate])
>
> if cmp -s datapath/linux/kcompat.h.new \
> datapath/linux/kcompat.h >/dev/null 2>&1; then
> diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h
> index 63ffcaa..c50cac2 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,
More information about the dev
mailing list