}
 }
 
-static void vti6_dev_free(struct net_device *dev)
-{
-       free_percpu(dev->tstats);
-}
-
 static int vti6_tnl_create2(struct net_device *dev)
 {
        struct ip6_tnl *t = netdev_priv(dev);
 {
        dev->netdev_ops = &vti6_netdev_ops;
        dev->header_ops = &ip_tunnel_header_ops;
-       dev->needs_free_netdev = true;
-       dev->priv_destructor = vti6_dev_free;
 
+       dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
        dev->type = ARPHRD_TUNNEL6;
        dev->min_mtu = IPV4_MIN_MTU;
        dev->max_mtu = IP_MAX_MTU - sizeof(struct ipv6hdr);
 
        t->dev = dev;
        t->net = dev_net(dev);
-       dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
-       if (!dev->tstats)
-               return -ENOMEM;
        netdev_hold(dev, &t->dev_tracker, GFP_KERNEL);
        netdev_lockdep_set_classes(dev);
        return 0;