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