mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
tunnels: harmonize cleanup done on skb on xmit path
The goal of this patch is to harmonize cleanup done on a skbuff on xmit path. Before this patch, behaviors were different depending of the tunnel type. Signed-off-by: Nicolas Dichtel <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
8b27f27797
commit
963a88b31d
9 changed files with 15 additions and 22 deletions
|
|
@ -694,6 +694,8 @@ static netdev_tx_t ip6gre_xmit2(struct sk_buff *skb,
|
|||
tunnel->err_count = 0;
|
||||
}
|
||||
|
||||
skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(dev)));
|
||||
|
||||
max_headroom = LL_RESERVED_SPACE(tdev) + gre_hlen + dst->header_len;
|
||||
|
||||
if (skb_headroom(skb) < max_headroom || skb_shared(skb) ||
|
||||
|
|
@ -710,8 +712,6 @@ static netdev_tx_t ip6gre_xmit2(struct sk_buff *skb,
|
|||
skb = new_skb;
|
||||
}
|
||||
|
||||
skb_dst_drop(skb);
|
||||
|
||||
if (fl6->flowi6_mark) {
|
||||
skb_dst_set(skb, dst);
|
||||
ndst = NULL;
|
||||
|
|
|
|||
|
|
@ -1001,8 +1001,7 @@ static int ip6_tnl_xmit2(struct sk_buff *skb,
|
|||
goto tx_err_dst_release;
|
||||
}
|
||||
|
||||
if (!net_eq(t->net, dev_net(dev)))
|
||||
skb_scrub_packet(skb, true);
|
||||
skb_scrub_packet(skb, !net_eq(t->net, dev_net(dev)));
|
||||
|
||||
/*
|
||||
* Okay, now see if we can stuff it in the buffer as-is.
|
||||
|
|
@ -1021,7 +1020,6 @@ static int ip6_tnl_xmit2(struct sk_buff *skb,
|
|||
consume_skb(skb);
|
||||
skb = new_skb;
|
||||
}
|
||||
skb_dst_drop(skb);
|
||||
if (fl6->flowi6_mark) {
|
||||
skb_dst_set(skb, dst);
|
||||
ndst = NULL;
|
||||
|
|
|
|||
|
|
@ -860,9 +860,6 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,
|
|||
tunnel->err_count = 0;
|
||||
}
|
||||
|
||||
if (!net_eq(tunnel->net, dev_net(dev)))
|
||||
skb_scrub_packet(skb, true);
|
||||
|
||||
/*
|
||||
* Okay, now see if we can stuff it in the buffer as-is.
|
||||
*/
|
||||
|
|
@ -889,7 +886,7 @@ static netdev_tx_t ipip6_tunnel_xmit(struct sk_buff *skb,
|
|||
tos = INET_ECN_encapsulate(tos, ipv6_get_dsfield(iph6));
|
||||
|
||||
err = iptunnel_xmit(rt, skb, fl4.saddr, fl4.daddr, IPPROTO_IPV6, tos,
|
||||
ttl, df);
|
||||
ttl, df, !net_eq(tunnel->net, dev_net(dev)));
|
||||
iptunnel_xmit_stats(err, &dev->stats, dev->tstats);
|
||||
return NETDEV_TX_OK;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue