const struct tnl_ptk_info *tpi, struct metadata_dst *tun_dst,
                  bool log_ecn_error)
 {
-       struct pcpu_sw_netstats *tstats;
        const struct iphdr *iph = ip_hdr(skb);
        int err;
 
                }
        }
 
-       tstats = this_cpu_ptr(tunnel->dev->tstats);
-       u64_stats_update_begin(&tstats->syncp);
-       tstats->rx_packets++;
-       tstats->rx_bytes += skb->len;
-       u64_stats_update_end(&tstats->syncp);
-
+       dev_sw_netstats_rx_add(tunnel->dev, skb->len);
        skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(tunnel->dev)));
 
        if (tunnel->dev->type == ARPHRD_ETHER) {
 
 {
        unsigned short family;
        struct net_device *dev;
-       struct pcpu_sw_netstats *tstats;
        struct xfrm_state *x;
        const struct xfrm_mode *inner_mode;
        struct ip_tunnel *tunnel = XFRM_TUNNEL_SKB_CB(skb)->tunnel.ip4;
 
        skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(skb->dev)));
        skb->dev = dev;
-
-       tstats = this_cpu_ptr(dev->tstats);
-
-       u64_stats_update_begin(&tstats->syncp);
-       tstats->rx_packets++;
-       tstats->rx_bytes += skb->len;
-       u64_stats_update_end(&tstats->syncp);
+       dev_sw_netstats_rx_add(dev, skb->len);
 
        return 0;
 }