drivers/net: remove useless semicolons
[safe/jmp/linux-2.6] / drivers / net / lance.c
index f349e88..21f8ada 100644 (file)
@@ -57,6 +57,7 @@ static const char version[] = "lance.c:v1.16 2006/11/09 dplatt@3do.com, becker@c
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/skbuff.h>
+#include <linux/mm.h>
 #include <linux/bitops.h>
 
 #include <asm/io.h>
@@ -299,9 +300,10 @@ static unsigned char lance_need_isa_bounce_buffers = 1;
 
 static int lance_open(struct net_device *dev);
 static void lance_init_ring(struct net_device *dev, gfp_t mode);
-static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
+                                   struct net_device *dev);
 static int lance_rx(struct net_device *dev);
-static irqreturn_t lance_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t lance_interrupt(int irq, void *dev_id);
 static int lance_close(struct net_device *dev);
 static struct net_device_stats *lance_get_stats(struct net_device *dev);
 static void set_multicast_list(struct net_device *dev);
@@ -358,7 +360,7 @@ int __init init_module(void)
 
 static void cleanup_card(struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        if (dev->dma != 4)
                free_dma(dev->dma);
        release_region(dev->base_addr, LANCE_TOTAL_SIZE);
@@ -367,7 +369,7 @@ static void cleanup_card(struct net_device *dev)
        kfree(lp);
 }
 
-void cleanup_module(void)
+void __exit cleanup_module(void)
 {
        int this_dev;
 
@@ -390,7 +392,8 @@ MODULE_LICENSE("GPL");
    */
 static int __init do_lance_probe(struct net_device *dev)
 {
-       int *port, result;
+       unsigned int *port;
+       int result;
 
        if (high_memory <= phys_to_virt(16*1024*1024))
                lance_need_isa_bounce_buffers = 0;
@@ -417,7 +420,7 @@ static int __init do_lance_probe(struct net_device *dev)
                        if (card < NUM_CARDS) { /*Signature OK*/
                                result = lance_probe1(dev, ioaddr, 0, 0);
                                if (!result) {
-                                       struct lance_private *lp = dev->priv;
+                                       struct lance_private *lp = dev->ml_priv;
                                        int ver = lp->chip_version;
 
                                        r->name = chip_table[ver].name;
@@ -452,16 +455,28 @@ out:
 }
 #endif
 
+static const struct net_device_ops lance_netdev_ops = {
+       .ndo_open               = lance_open,
+       .ndo_start_xmit         = lance_start_xmit,
+       .ndo_stop               = lance_close,
+       .ndo_get_stats          = lance_get_stats,
+       .ndo_set_multicast_list = set_multicast_list,
+       .ndo_tx_timeout         = lance_tx_timeout,
+       .ndo_change_mtu         = eth_change_mtu,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
+};
+
 static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int options)
 {
        struct lance_private *lp;
-       long dma_channels;                      /* Mark spuriously-busy DMA channels */
+       unsigned long dma_channels;     /* Mark spuriously-busy DMA channels */
        int i, reset_val, lance_version;
        const char *chipname;
        /* Flags for specific chips or boards. */
-       unsigned char hpJ2405A = 0;             /* HP ISA adaptor */
-       int hp_builtin = 0;                     /* HP on-board ethernet. */
-       static int did_version;                 /* Already printed version info. */
+       unsigned char hpJ2405A = 0;     /* HP ISA adaptor */
+       int hp_builtin = 0;             /* HP on-board ethernet. */
+       static int did_version;         /* Already printed version info. */
        unsigned long flags;
        int err = -ENOMEM;
        void __iomem *bios;
@@ -478,14 +493,14 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
                static const short ioaddr_table[] = { 0x300, 0x320, 0x340, 0x360};
                int hp_port = (readl(bios + 1) & 1)  ? 0x499 : 0x99;
                /* We can have boards other than the built-in!  Verify this is on-board. */
-               if ((inb(hp_port) & 0xc0) == 0x80
-                       && ioaddr_table[inb(hp_port) & 3] == ioaddr)
+               if ((inb(hp_port) & 0xc0) == 0x80 &&
+                   ioaddr_table[inb(hp_port) & 3] == ioaddr)
                        hp_builtin = hp_port;
        }
        iounmap(bios);
        /* We also recognize the HP Vectra on-board here, but check below. */
-       hpJ2405A = (inb(ioaddr) == 0x08 && inb(ioaddr+1) == 0x00
-                               && inb(ioaddr+2) == 0x09);
+       hpJ2405A = (inb(ioaddr) == 0x08 && inb(ioaddr+1) == 0x00 &&
+                   inb(ioaddr+2) == 0x09);
 
        /* Reset the LANCE.      */
        reset_val = inw(ioaddr+LANCE_RESET); /* Reset the LANCE */
@@ -518,26 +533,25 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
                }
        }
 
-       /* We can't allocate dev->priv from alloc_etherdev() because it must
+       /* We can't allocate private data from alloc_etherdev() because it must
           a ISA DMA-able region. */
-       SET_MODULE_OWNER(dev);
        chipname = chip_table[lance_version].name;
-       printk("%s: %s at %#3x,", dev->name, chipname, ioaddr);
+       printk("%s: %s at %#3x, ", dev->name, chipname, ioaddr);
 
        /* There is a 16 byte station address PROM at the base address.
           The first six bytes are the station address. */
        for (i = 0; i < 6; i++)
-               printk(" %2.2x", dev->dev_addr[i] = inb(ioaddr + i));
+               dev->dev_addr[i] = inb(ioaddr + i);
+       printk("%pM", dev->dev_addr);
 
        dev->base_addr = ioaddr;
        /* Make certain the data structures used by the LANCE are aligned and DMAble. */
 
-       lp = kmalloc(sizeof(*lp), GFP_DMA | GFP_KERNEL);
+       lp = kzalloc(sizeof(*lp), GFP_DMA | GFP_KERNEL);
        if(lp==NULL)
                return -ENODEV;
        if (lance_debug > 6) printk(" (#0x%05lx)", (unsigned long)lp);
-       memset(lp, 0, sizeof(*lp));
-       dev->priv = lp;
+       dev->ml_priv = lp;
        lp->name = chipname;
        lp->rx_buffs = (unsigned long)kmalloc(PKT_BUF_SZ*RX_RING_SIZE,
                                                  GFP_DMA | GFP_KERNEL);
@@ -713,12 +727,7 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
                printk(version);
 
        /* The LANCE-specific entries in the device structure. */
-       dev->open = lance_open;
-       dev->hard_start_xmit = lance_start_xmit;
-       dev->stop = lance_close;
-       dev->get_stats = lance_get_stats;
-       dev->set_multicast_list = set_multicast_list;
-       dev->tx_timeout = lance_tx_timeout;
+       dev->netdev_ops = &lance_netdev_ops;
        dev->watchdog_timeo = TX_TIMEOUT;
 
        err = register_netdev(dev);
@@ -741,12 +750,12 @@ out_lp:
 static int
 lance_open(struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        int ioaddr = dev->base_addr;
        int i;
 
        if (dev->irq == 0 ||
-               request_irq(dev->irq, &lance_interrupt, 0, lp->name, dev)) {
+               request_irq(dev->irq, lance_interrupt, 0, lp->name, dev)) {
                return -EAGAIN;
        }
 
@@ -829,7 +838,7 @@ lance_open(struct net_device *dev)
 static void
 lance_purge_ring(struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        int i;
 
        /* Free all the skbuffs in the Rx and Tx queues. */
@@ -853,7 +862,7 @@ lance_purge_ring(struct net_device *dev)
 static void
 lance_init_ring(struct net_device *dev, gfp_t gfp)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        int i;
 
        lp->cur_rx = lp->cur_tx = 0;
@@ -895,7 +904,7 @@ lance_init_ring(struct net_device *dev, gfp_t gfp)
 static void
 lance_restart(struct net_device *dev, unsigned int csr0_bits, int must_reinit)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
 
        if (must_reinit ||
                (chip_table[lp->chip_version].flags & LANCE_MUST_REINIT_RING)) {
@@ -909,7 +918,7 @@ lance_restart(struct net_device *dev, unsigned int csr0_bits, int must_reinit)
 
 static void lance_tx_timeout (struct net_device *dev)
 {
-       struct lance_private *lp = (struct lance_private *) dev->priv;
+       struct lance_private *lp = (struct lance_private *) dev->ml_priv;
        int ioaddr = dev->base_addr;
 
        outw (0, ioaddr + LANCE_ADDR);
@@ -936,14 +945,15 @@ static void lance_tx_timeout (struct net_device *dev)
 #endif
        lance_restart (dev, 0x0043, 1);
 
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
        netif_wake_queue (dev);
 }
 
 
-static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t lance_start_xmit(struct sk_buff *skb,
+                                   struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        int ioaddr = dev->base_addr;
        int entry;
        unsigned long flags;
@@ -987,7 +997,7 @@ static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
                if (lance_debug > 5)
                        printk("%s: bouncing a high-memory packet (%#x).\n",
                                   dev->name, (u32)isa_virt_to_bus(skb->data));
-               memcpy(&lp->tx_bounce_buffs[entry], skb->data, skb->len);
+               skb_copy_from_linear_data(skb, &lp->tx_bounce_buffs[entry], skb->len);
                lp->tx_ring[entry].base =
                        ((u32)isa_virt_to_bus((lp->tx_bounce_buffs + entry)) & 0xffffff) | 0x83000000;
                dev_kfree_skb(skb);
@@ -1001,38 +1011,30 @@ static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
        outw(0x0000, ioaddr+LANCE_ADDR);
        outw(0x0048, ioaddr+LANCE_DATA);
 
-       dev->trans_start = jiffies;
-
        if ((lp->cur_tx - lp->dirty_tx) >= TX_RING_SIZE)
                netif_stop_queue(dev);
 
 out:
        spin_unlock_irqrestore(&lp->devlock, flags);
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 /* The LANCE interrupt handler. */
-static irqreturn_t
-lance_interrupt(int irq, void *dev_id, struct pt_regs * regs)
+static irqreturn_t lance_interrupt(int irq, void *dev_id)
 {
        struct net_device *dev = dev_id;
        struct lance_private *lp;
        int csr0, ioaddr, boguscnt=10;
        int must_restart;
 
-       if (dev == NULL) {
-               printk ("lance_interrupt(): irq %d for unknown device.\n", irq);
-               return IRQ_NONE;
-       }
-
        ioaddr = dev->base_addr;
-       lp = dev->priv;
+       lp = dev->ml_priv;
 
        spin_lock (&lp->devlock);
 
        outw(0x00, dev->base_addr + LANCE_ADDR);
-       while ((csr0 = inw(dev->base_addr + LANCE_DATA)) & 0x8600
-                  && --boguscnt >= 0) {
+       while ((csr0 = inw(dev->base_addr + LANCE_DATA)) & 0x8600 &&
+              --boguscnt >= 0) {
                /* Acknowledge all of the current interrupt sources ASAP. */
                outw(csr0 & ~0x004f, dev->base_addr + LANCE_DATA);
 
@@ -1139,7 +1141,7 @@ lance_interrupt(int irq, void *dev_id, struct pt_regs * regs)
 static int
 lance_rx(struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
        int entry = lp->cur_rx & RX_RING_MOD_MASK;
        int i;
 
@@ -1189,15 +1191,13 @@ lance_rx(struct net_device *dev)
                                        }
                                        break;
                                }
-                               skb->dev = dev;
                                skb_reserve(skb,2);     /* 16 byte align */
                                skb_put(skb,pkt_len);   /* Make room */
-                               eth_copy_and_sum(skb,
+                               skb_copy_to_linear_data(skb,
                                        (unsigned char *)isa_bus_to_virt((lp->rx_ring[entry].base & 0x00ffffff)),
-                                       pkt_len,0);
+                                       pkt_len);
                                skb->protocol=eth_type_trans(skb,dev);
                                netif_rx(skb);
-                               dev->last_rx = jiffies;
                                lp->stats.rx_packets++;
                                lp->stats.rx_bytes+=pkt_len;
                        }
@@ -1219,7 +1219,7 @@ static int
 lance_close(struct net_device *dev)
 {
        int ioaddr = dev->base_addr;
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
 
        netif_stop_queue (dev);
 
@@ -1252,7 +1252,7 @@ lance_close(struct net_device *dev)
 
 static struct net_device_stats *lance_get_stats(struct net_device *dev)
 {
-       struct lance_private *lp = dev->priv;
+       struct lance_private *lp = dev->ml_priv;
 
        if (chip_table[lp->chip_version].flags & LANCE_HAS_MISSED_FRAME) {
                short ioaddr = dev->base_addr;
@@ -1286,7 +1286,7 @@ static void set_multicast_list(struct net_device *dev)
        } else {
                short multicast_table[4];
                int i;
-               int num_addrs=dev->mc_count;
+               int num_addrs=netdev_mc_count(dev);
                if(dev->flags&IFF_ALLMULTI)
                        num_addrs=1;
                /* FIXIT: We don't use the multicast table, but rely on upper-layer filtering. */