char name[IFNAMSIZ];
 
                sprintf(name, "rose%d", i);
-               dev = alloc_netdev(sizeof(struct net_device_stats),
-                                  name, rose_setup);
+               dev = alloc_netdev(0, name, rose_setup);
                if (!dev) {
                        printk(KERN_ERR "ROSE: rose_proto_init - unable to allocate memory\n");
                        rc = -ENOMEM;
 
 {
 #ifdef CONFIG_INET
        struct net_device *dev = skb->dev;
-       struct net_device_stats *stats = netdev_priv(dev);
+       struct net_device_stats *stats = &dev->stats;
        unsigned char *bp = (unsigned char *)skb->data;
        struct sk_buff *skbn;
        unsigned int len;
 
 static int rose_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-       struct net_device_stats *stats = netdev_priv(dev);
+       struct net_device_stats *stats = &dev->stats;
 
        if (!netif_running(dev)) {
                printk(KERN_ERR "ROSE: rose_xmit - called when iface is down\n");
        return 0;
 }
 
-static struct net_device_stats *rose_get_stats(struct net_device *dev)
-{
-       return netdev_priv(dev);
-}
-
 static const struct header_ops rose_header_ops = {
        .create = rose_header,
        .rebuild= rose_rebuild_header,
 
        /* New-style flags. */
        dev->flags              = IFF_NOARP;
-       dev->get_stats = rose_get_stats;
 }