I'm not really familiar with these backports, but is it so that the main change 
the upstream patch introduced to udp_gro_complete() is not applicable to the 
backports?

  Jarno

> On 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
> -- 
> 1.9.1
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to