Preparations to caching root in path_walk()
[safe/jmp/linux-2.6] / drivers / net / plip.c
index fee3d7b..0be0f0b 100644 (file)
@@ -229,7 +229,7 @@ static inline void enable_parport_interrupts (struct net_device *dev)
        if (dev->irq != -1)
        {
                struct parport *port =
-                  ((struct net_local *)dev->priv)->pardev->port;
+                  ((struct net_local *)netdev_priv(dev))->pardev->port;
                port->ops->enable_irq (port);
        }
 }
@@ -239,7 +239,7 @@ static inline void disable_parport_interrupts (struct net_device *dev)
        if (dev->irq != -1)
        {
                struct parport *port =
-                  ((struct net_local *)dev->priv)->pardev->port;
+                  ((struct net_local *)netdev_priv(dev))->pardev->port;
                port->ops->disable_irq (port);
        }
 }
@@ -247,7 +247,7 @@ static inline void disable_parport_interrupts (struct net_device *dev)
 static inline void write_data (struct net_device *dev, unsigned char data)
 {
        struct parport *port =
-          ((struct net_local *)dev->priv)->pardev->port;
+          ((struct net_local *)netdev_priv(dev))->pardev->port;
 
        port->ops->write_data (port, data);
 }
@@ -255,7 +255,7 @@ static inline void write_data (struct net_device *dev, unsigned char data)
 static inline unsigned char read_status (struct net_device *dev)
 {
        struct parport *port =
-          ((struct net_local *)dev->priv)->pardev->port;
+          ((struct net_local *)netdev_priv(dev))->pardev->port;
 
        return port->ops->read_status (port);
 }
@@ -265,6 +265,13 @@ static const struct header_ops plip_header_ops = {
        .cache  = plip_hard_header_cache,
 };
 
+static const struct net_device_ops plip_netdev_ops = {
+       .ndo_open                = plip_open,
+       .ndo_stop                = plip_close,
+       .ndo_start_xmit          = plip_tx_packet,
+       .ndo_do_ioctl            = plip_ioctl,
+};
+
 /* Entry point of PLIP driver.
    Probe the hardware, and register/initialize the driver.
 
@@ -280,15 +287,11 @@ plip_init_netdev(struct net_device *dev)
        struct net_local *nl = netdev_priv(dev);
 
        /* Then, override parts of it */
-       dev->hard_start_xmit     = plip_tx_packet;
-       dev->open                = plip_open;
-       dev->stop                = plip_close;
-       dev->do_ioctl            = plip_ioctl;
-
        dev->tx_queue_len        = 10;
        dev->flags               = IFF_POINTOPOINT|IFF_NOARP;
        memset(dev->dev_addr, 0xfc, ETH_ALEN);
 
+       dev->netdev_ops          = &plip_netdev_ops;
        dev->header_ops          = &plip_header_ops;
 
 
@@ -638,14 +641,14 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
 
        case PLIP_PK_DATA:
                lbuf = rcv->skb->data;
-               do
+               do {
                        if (plip_receive(nibble_timeout, dev,
                                         &rcv->nibble, &lbuf[rcv->byte]))
                                return TIMEOUT;
-               while (++rcv->byte < rcv->length.h);
-               do
+               while (++rcv->byte < rcv->length.h);
+               do {
                        rcv->checksum += lbuf[--rcv->byte];
-               while (rcv->byte);
+               while (rcv->byte);
                rcv->state = PLIP_PK_CHECKSUM;
 
        case PLIP_PK_CHECKSUM:
@@ -664,7 +667,6 @@ plip_receive_packet(struct net_device *dev, struct net_local *nl,
                /* Inform the upper layer for the arrival of a packet. */
                rcv->skb->protocol=plip_type_trans(rcv->skb, dev);
                netif_rx_ni(rcv->skb);
-               dev->last_rx = jiffies;
                dev->stats.rx_bytes += rcv->length.h;
                dev->stats.rx_packets++;
                rcv->skb = NULL;
@@ -817,14 +819,14 @@ plip_send_packet(struct net_device *dev, struct net_local *nl,
                snd->checksum = 0;
 
        case PLIP_PK_DATA:
-               do
+               do {
                        if (plip_send(nibble_timeout, dev,
                                      &snd->nibble, lbuf[snd->byte]))
                                return TIMEOUT;
-               while (++snd->byte < snd->length.h);
-               do
+               while (++snd->byte < snd->length.h);
+               do {
                        snd->checksum += lbuf[--snd->byte];
-               while (snd->byte);
+               while (snd->byte);
                snd->state = PLIP_PK_CHECKSUM;
 
        case PLIP_PK_CHECKSUM:
@@ -903,17 +905,18 @@ plip_interrupt(void *dev_id)
        struct net_local *nl;
        struct plip_local *rcv;
        unsigned char c0;
+       unsigned long flags;
 
        nl = netdev_priv(dev);
        rcv = &nl->rcv_data;
 
-       spin_lock_irq (&nl->lock);
+       spin_lock_irqsave (&nl->lock, flags);
 
        c0 = read_status(dev);
        if ((c0 & 0xf8) != 0xc0) {
                if ((dev->irq != -1) && (net_debug > 1))
                        printk(KERN_DEBUG "%s: spurious interrupt\n", dev->name);
-               spin_unlock_irq (&nl->lock);
+               spin_unlock_irqrestore (&nl->lock, flags);
                return;
        }
 
@@ -942,7 +945,7 @@ plip_interrupt(void *dev_id)
                break;
        }
 
-       spin_unlock_irq(&nl->lock);
+       spin_unlock_irqrestore(&nl->lock, flags);
 }
 
 static int
@@ -1017,8 +1020,8 @@ plip_hard_header(struct sk_buff *skb, struct net_device *dev,
        return ret;
 }
 
-int plip_hard_header_cache(const struct neighbour *neigh,
-                           struct hh_cache *hh)
+static int plip_hard_header_cache(const struct neighbour *neigh,
+                                 struct hh_cache *hh)
 {
        int ret;
 
@@ -1396,9 +1399,3 @@ static int __init plip_init (void)
 module_init(plip_init);
 module_exit(plip_cleanup_module);
 MODULE_LICENSE("GPL");
-
-/*
- * Local variables:
- * compile-command: "gcc -DMODULE -DMODVERSIONS -D__KERNEL__ -Wall -Wstrict-prototypes -O2 -g -fomit-frame-pointer -pipe -c plip.c"
- * End:
- */