On Mon, 29 Sep 2014 21:39:56 -0700, Pravin B Shelar wrote:
> This patch mostly is related to tunnel API where RHEL 7
> kernel API are not in-sync with newer linux kernel API. So
> extra checks are required to check for parameters of API.
>
> Signed-off-by: Pravin B Shelar <[email protected]>
> ---
[...]
> --- a/datapath/linux/compat/include/linux/hash.h
> +++ b/datapath/linux/compat/include/linux/hash.h
> @@ -2,11 +2,10 @@
> #define _LINUX_HASH_WRAPPER_H
>
> #include_next <linux/hash.h>
> -
> -#include <linux/version.h>
> -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
> #include <asm/hash.h>
>
> +#ifndef HAVE_FAST_HASH_OPS
> +
> struct fast_hash_ops {
> u32 (*hash)(const void *data, u32 len, u32 seed);
> u32 (*hash2)(const u32 *data, u32 len, u32 seed);
> @@ -40,6 +39,6 @@ extern u32 arch_fast_hash(const void *data, u32 len, u32
> seed);
> * Returns 32bit hash.
> */
> extern u32 arch_fast_hash2(const u32 *data, u32 len, u32 seed);
> -#endif /* < 3.14 */
> +#endif /* HASH_FAST_HASH_OPS */
Typo: ^^^^
[...]
> --- a/datapath/linux/compat/include/net/ip_tunnels.h
> +++ b/datapath/linux/compat/include/net/ip_tunnels.h
> @@ -2,7 +2,15 @@
> #define __NET_IP_TUNNELS_WRAPPER_H 1
>
> #include <linux/version.h>
> -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
> +#if defined(HAVE_GRE_HANDLE_OFFLOADS) && \
> + LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
> +/* RHEL6 and RHEL7 both has backported tunnel API but RHEL6 has
> + * older version, so avoid using RHEL6 backports.
> + */
> +#define GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
> +#endif
This looked fragile until I realized that sk_buff->inner_mac_header was
merged in 3.10 thus the check should be actually correct even in case of
other distribution kernels. Might be worth adjusting the comment,
though.
> +
> +#ifdef GRE_USE_KERNEL_GRE_HANDLE_OFFLOADS
> #include_next <net/ip_tunnels.h>
Seems to be unnecessary to redefine iptunnel_xmit for RHEL6 but doesn't
seem to hurt, neither.
>
> #if LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)
> @@ -11,7 +19,11 @@ static inline int rpl_iptunnel_xmit(struct sock *sk,
> struct rtable *rt,
> __be32 dst, __u8 proto, __u8 tos,
> __u8 ttl, __be16 df, bool xnet)
> {
> +#ifdef HAVE_IPTUNNEL_XMIT_NET
> + return iptunnel_xmit(NULL, rt, skb, src, dst, proto, tos, ttl, df);
> +#else
> return iptunnel_xmit(rt, skb, src, dst, proto, tos, ttl, df, xnet);
> +#endif
> }
> #define iptunnel_xmit rpl_iptunnel_xmit
> #endif
[...]
The nitpicks above are just that, nitpicks.
Acked-by: Jiri Benc <[email protected]>
--
Jiri Benc
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev