| From 5684abf7020dfc5f0b6ba1d68eda3663871fce52 Mon Sep 17 00:00:00 2001 |
| From: Xin Long <lucien.xin@gmail.com> |
| Date: Mon, 17 Jun 2019 21:34:13 +0800 |
| Subject: ip_tunnel: allow not to count pkts on tstats by setting skb's dev to NULL |
| |
| From: Xin Long <lucien.xin@gmail.com> |
| |
| commit 5684abf7020dfc5f0b6ba1d68eda3663871fce52 upstream. |
| |
| iptunnel_xmit() works as a common function, also used by a udp tunnel |
| which doesn't have to have a tunnel device, like how TIPC works with |
| udp media. |
| |
| In these cases, we should allow not to count pkts on dev's tstats, so |
| that udp tunnel can work with no tunnel device safely. |
| |
| Signed-off-by: Xin Long <lucien.xin@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Cc: Tommi Rantala <tommi.t.rantala@nokia.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/ipv4/ip_tunnel_core.c | 9 ++++++--- |
| 1 file changed, 6 insertions(+), 3 deletions(-) |
| |
| --- a/net/ipv4/ip_tunnel_core.c |
| +++ b/net/ipv4/ip_tunnel_core.c |
| @@ -89,9 +89,12 @@ void iptunnel_xmit(struct sock *sk, stru |
| __ip_select_ident(net, iph, skb_shinfo(skb)->gso_segs ?: 1); |
| |
| err = ip_local_out(net, sk, skb); |
| - if (unlikely(net_xmit_eval(err))) |
| - pkt_len = 0; |
| - iptunnel_xmit_stats(dev, pkt_len); |
| + |
| + if (dev) { |
| + if (unlikely(net_xmit_eval(err))) |
| + pkt_len = 0; |
| + iptunnel_xmit_stats(dev, pkt_len); |
| + } |
| } |
| EXPORT_SYMBOL_GPL(iptunnel_xmit); |
| |