Merge branch 'next' into for-linus
[cascardo/linux.git] / drivers / net / wan / dlci.c
index 66be20c..a297e3e 100644 (file)
@@ -66,15 +66,15 @@ static void dlci_setup(struct net_device *);
  */
 
 static int dlci_header(struct sk_buff *skb, struct net_device *dev, 
-                           unsigned short type, void *daddr, void *saddr, 
-                           unsigned len)
+                      unsigned short type, const void *daddr,
+                      const void *saddr, unsigned len)
 {
        struct frhdr            hdr;
        struct dlci_local       *dlp;
        unsigned int            hlen;
        char                    *dest;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        hdr.control = FRAD_I_UI;
        switch(type)
@@ -110,7 +110,7 @@ static void dlci_receive(struct sk_buff *skb, struct net_device *dev)
        struct frhdr            *hdr;
        int                                     process, header;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
        if (!pskb_may_pull(skb, sizeof(*hdr))) {
                printk(KERN_NOTICE "%s: invalid data no header\n",
                       dev->name);
@@ -181,7 +181,6 @@ static void dlci_receive(struct sk_buff *skb, struct net_device *dev)
                dlp->stats.rx_bytes += skb->len;
                netif_rx(skb);
                dlp->stats.rx_packets++;
-               dev->last_rx = jiffies;
        }
        else
                dev_kfree_skb(skb);
@@ -197,7 +196,7 @@ static int dlci_transmit(struct sk_buff *skb, struct net_device *dev)
        if (!skb || !dev)
                return(0);
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        netif_stop_queue(dev);
        
@@ -235,9 +234,9 @@ static int dlci_config(struct net_device *dev, struct dlci_conf __user *conf, in
        struct frad_local       *flp;
        int                     err;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
-       flp = dlp->slave->priv;
+       flp = netdev_priv(dlp->slave);
 
        if (!get)
        {
@@ -269,7 +268,7 @@ static int dlci_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
        if (!capable(CAP_NET_ADMIN))
                return(-EPERM);
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        switch(cmd)
        {
@@ -298,7 +297,7 @@ static int dlci_change_mtu(struct net_device *dev, int new_mtu)
 {
        struct dlci_local *dlp;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        return((*dlp->slave->change_mtu)(dlp->slave, new_mtu));
 }
@@ -309,7 +308,7 @@ static int dlci_open(struct net_device *dev)
        struct frad_local       *flp;
        int                     err;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        if (!*(short *)(dev->dev_addr))
                return(-EINVAL);
@@ -317,7 +316,7 @@ static int dlci_open(struct net_device *dev)
        if (!netif_running(dlp->slave))
                return(-ENOTCONN);
 
-       flp = dlp->slave->priv;
+       flp = netdev_priv(dlp->slave);
        err = (*flp->activate)(dlp->slave, dev);
        if (err)
                return(err);
@@ -335,9 +334,9 @@ static int dlci_close(struct net_device *dev)
 
        netif_stop_queue(dev);
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
-       flp = dlp->slave->priv;
+       flp = netdev_priv(dlp->slave);
        err = (*flp->deactivate)(dlp->slave, dev);
 
        return 0;
@@ -347,7 +346,7 @@ static struct net_device_stats *dlci_get_stats(struct net_device *dev)
 {
        struct dlci_local *dlp;
 
-       dlp = dev->priv;
+       dlp = netdev_priv(dev);
 
        return(&dlp->stats);
 }
@@ -361,11 +360,11 @@ static int dlci_add(struct dlci_add *dlci)
 
 
        /* validate slave device */
-       slave = dev_get_by_name(dlci->devname);
+       slave = dev_get_by_name(&init_net, dlci->devname);
        if (!slave)
                return -ENODEV;
 
-       if (slave->type != ARPHRD_FRAD || slave->priv == NULL)
+       if (slave->type != ARPHRD_FRAD || netdev_priv(slave) == NULL)
                goto err1;
 
        /* create device name */
@@ -391,11 +390,11 @@ static int dlci_add(struct dlci_add *dlci)
 
        *(short *)(master->dev_addr) = dlci->dlci;
 
-       dlp = (struct dlci_local *) master->priv;
+       dlp = netdev_priv(master);
        dlp->slave = slave;
        dlp->master = master;
 
-       flp = slave->priv;
+       flp = netdev_priv(slave);
        err = (*flp->assoc)(slave, master);
        if (err < 0)
                goto err2;
@@ -427,7 +426,7 @@ static int dlci_del(struct dlci_add *dlci)
        int                     err;
 
        /* validate slave device */
-       master = __dev_get_by_name(dlci->devname);
+       master = __dev_get_by_name(&init_net, dlci->devname);
        if (!master)
                return(-ENODEV);
 
@@ -435,9 +434,9 @@ static int dlci_del(struct dlci_add *dlci)
                return(-EBUSY);
        }
 
-       dlp = master->priv;
+       dlp = netdev_priv(master);
        slave = dlp->slave;
-       flp = slave->priv;
+       flp = netdev_priv(slave);
 
        rtnl_lock();
        err = (*flp->deassoc)(slave, master);
@@ -485,16 +484,20 @@ static int dlci_ioctl(unsigned int cmd, void __user *arg)
        return(err);
 }
 
+static const struct header_ops dlci_header_ops = {
+       .create = dlci_header,
+};
+
 static void dlci_setup(struct net_device *dev)
 {
-       struct dlci_local *dlp = dev->priv;
+       struct dlci_local *dlp = netdev_priv(dev);
 
        dev->flags              = 0;
        dev->open               = dlci_open;
        dev->stop               = dlci_close;
        dev->do_ioctl           = dlci_dev_ioctl;
        dev->hard_start_xmit    = dlci_transmit;
-       dev->hard_header        = dlci_header;
+       dev->header_ops         = &dlci_header_ops;
        dev->get_stats          = dlci_get_stats;
        dev->change_mtu         = dlci_change_mtu;
        dev->destructor         = free_netdev;
@@ -513,6 +516,9 @@ static int dlci_dev_event(struct notifier_block *unused,
 {
        struct net_device *dev = (struct net_device *) ptr;
 
+       if (dev_net(dev) != &init_net)
+               return NOTIFY_DONE;
+
        if (event == NETDEV_UNREGISTER) {
                struct dlci_local *dlp;