On Thu, Jun 30, 2016 at 1:06 AM, Pravin B Shelar <pshe...@ovn.org> wrote:
> Upstream commit:
>     commit 229740c63169462a838a8b8e16391ed000934631
>     Author: Jarno Rajahalme <ja...@ovn.org>
>
>     udp_offload: Set encapsulation before inner completes.
>
>     UDP tunnel segmentation code relies on the inner offsets being set for
>     an UDP tunnel GSO packet, but the inner *_complete() functions will
>     set the inner offsets only if 'encapsulation' is set before calling
>     them.  Currently, udp_gro_complete() sets 'encapsulation' only after
>     the inner *_complete() functions are done.  This causes the inner
>     offsets having invalid values after udp_gro_complete() returns, which
>     in turn will make it impossible to properly segment the packet in case
>     it needs to be forwarded, which would be visible to the user either as
>     invalid packets being sent or as packet loss.
>
>     This patch fixes this by setting skb's 'encapsulation' in
>     udp_gro_complete() before calling into the inner complete functions,
>     and by making each possible UDP tunnel gro_complete() callback set the
>     inner_mac_header to the beginning of the tunnel payload.
>
>     Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
>     Reviewed-by: Alexander Duyck <adu...@mirantis.com>
>     Signed-off-by: David S. Miller <da...@davemloft.net>
>
> Signed-off-by: Pravin B Shelar <pshe...@ovn.org>
> ---
>  datapath/linux/compat/geneve.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/datapath/linux/compat/geneve.c b/datapath/linux/compat/geneve.c
> index e049221..cc8740b 100644
> --- a/datapath/linux/compat/geneve.c
> +++ b/datapath/linux/compat/geneve.c
> @@ -566,6 +566,8 @@ static int geneve_gro_complete(struct sk_buff *skb, int 
> nhoff,
>                 err = ptype->callbacks.gro_complete(skb, nhoff + gh_len);
>
>         rcu_read_unlock();
> +
> +       skb_set_inner_mac_header(skb, nhoff + gh_len);
>         return err;
>  }
>  #endif

This commit also adds a comment to vxlan.c, should we also backport
that for completeness?

Acked-by: Jesse Gross <je...@kernel.org>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to