[ovs-dev] [PATCH] datapath: gre: Fix kernel 3.11 compatibility.

Nithin Nayak Sujir nsujir at broadcom.com
Wed Nov 20 18:03:16 UTC 2013


Tested-by: Nithin Nayak Sujir <nsujir at broadcom.com>


On 11/20/2013 09:50 AM, Pravin B Shelar wrote:
> On 3.11 kernel, gre module exports IP_GRE demux API, ovs needs
> to use it to register for GRE protocol handler.
>
> Reported-by:  Nithin Nayak Sujir <nsujir at broadcom.com>
> Signed-off-by: Pravin B Shelar <pshelar at nicira.com>
> ---
>   datapath/linux/compat/gre.c             |    8 ++++++--
>   datapath/linux/compat/include/net/gre.h |    4 ++++
>   2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/datapath/linux/compat/gre.c b/datapath/linux/compat/gre.c
> index 582bd94..f35f11f 100644
> --- a/datapath/linux/compat/gre.c
> +++ b/datapath/linux/compat/gre.c
> @@ -39,8 +39,6 @@
>
>   #include "gso.h"
>
> -static struct gre_cisco_protocol __rcu *gre_cisco_proto;
> -
>   static void gre_csum_fix(struct sk_buff *skb)
>   {
>   	struct gre_base_hdr *greh;
> @@ -114,6 +112,8 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
>   	}
>   }
>
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
> +
>   static __sum16 check_checksum(struct sk_buff *skb)
>   {
>   	__sum16 csum = 0;
> @@ -197,6 +197,8 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
>   	return iptunnel_pull_header(skb, hdr_len, tpi->proto);
>   }
>
> +static struct gre_cisco_protocol __rcu *gre_cisco_proto;
> +
>   static int gre_cisco_rcv(struct sk_buff *skb)
>   {
>   	struct tnl_ptk_info tpi;
> @@ -354,4 +356,6 @@ int gre_cisco_unregister(struct gre_cisco_protocol *proto)
>   	return ret;
>   }
>
> +#endif /* 3.11 */
> +
>   #endif /* CONFIG_NET_IPGRE_DEMUX */
> diff --git a/datapath/linux/compat/include/net/gre.h b/datapath/linux/compat/include/net/gre.h
> index 5b17dcc..93cb565 100644
> --- a/datapath/linux/compat/include/net/gre.h
> +++ b/datapath/linux/compat/include/net/gre.h
> @@ -73,6 +73,8 @@ static inline __be16 tnl_flags_to_gre_flags(__be16 tflags)
>   }
>   #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0) */
>
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
> +/* GRE demux not available, implement our own demux. */
>   #define MAX_GRE_PROTO_PRIORITY 255
>   #define gre_cisco_protocol rpl_gre_cisco_protocol
>
> @@ -87,6 +89,8 @@ int gre_cisco_register(struct gre_cisco_protocol *proto);
>   #define gre_cisco_unregister rpl_gre_cisco_unregister
>   int gre_cisco_unregister(struct gre_cisco_protocol *proto);
>
> +#endif
> +
>   #define gre_build_header rpl_gre_build_header
>   void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
>   		      int hdr_len);
>




More information about the dev mailing list