[ovs-dev] [PATCH v2 05/24] datapath: backport: ip_tunnel_core: iptunnel_handle_offloads returns int and doesn't free skb

Jesse Gross jesse at kernel.org
Thu Jun 30 19:22:08 UTC 2016


On Thu, Jun 30, 2016 at 1:06 AM, Pravin B Shelar <pshelar at ovn.org> wrote:
> diff --git a/datapath/linux/compat/utils.c b/datapath/linux/compat/utils.c
> index 7008ecf..7113e09 100644
> --- a/datapath/linux/compat/utils.c
> +++ b/datapath/linux/compat/utils.c
> @@ -72,6 +72,9 @@ void __percpu *__alloc_percpu_gfp(size_t size, size_t align, gfp_t gfp)
>         void __percpu *p;
>         int i;
>
> +       /* older kernel do not allow all GFP flags, specifically atomic
> +        * allocation.
> +        */
>         if (gfp & ~(GFP_KERNEL | __GFP_ZERO))
>                 return NULL;
>         p = __alloc_percpu(size, align);

Looks like this was supposed to be part of the dst cache patch?

> @@ -1163,10 +1166,12 @@ static int vxlan_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *sk
>         if (WARN_ON(!skb))
>                 return -ENOMEM;
>
> -       skb = udp_tunnel_handle_offloads(skb, udp_sum, type, true);
> -       if (IS_ERR(skb))
> -               return PTR_ERR(skb);
> -
> +       fix_segment = udp_sum ? ovs_udp_gso : ovs_udp_csum_gso;
> +       err = ovs_iptunnel_handle_offloads(skb, udp_sum, type, fix_segment);

This looks like it is missing some of the compat logic that is in
udp_tunnel_handle_offloads(). The biggest one seems to be the
calculating the type, which force us to do software segmentation for
VXLAN.



More information about the dev mailing list