[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