On Thu, 23 Jun 2016 11:04:38 +0900, Simon Horman wrote: > I think you are right as IIRC the call to skb_reset_mac_header was > added for this use-case. Its unfortunate that we can't use it in > internal_dev_xmit() because of loosing track of MPLS as you mentioned > earlier. But it does seem that setting mac_header to ~0 works well > in conjunction with updates to OvS posted earlier in this sub-therad. > > I have the following working. Jiri, is the ip_gre portion acceptable to you?
Sorry for the late reply, I was off the last week. > diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c > index 58d323289872..e6772b6934a3 100644 > --- a/net/ipv4/ip_gre.c > +++ b/net/ipv4/ip_gre.c > @@ -279,7 +279,7 @@ static int __ipgre_rcv(struct sk_buff *skb, const struct > tnl_ptk_info *tpi, > if (tunnel->dev->type != ARPHRD_NONE) > skb_pop_mac_header(skb); > else > - skb_reset_mac_header(skb); > + skb->mac_header = (typeof(skb->mac_header))~0U; Looks good. We should introduce a helper for this, though (skb_unset_mac_header or so). Thanks! Jiri