net:wireless:bcmdhd: rename bcmsdh_remove & bcmsdh_probe
[linux-2.6.git] / drivers / net / lp486e.c
index 4d1a059..385a953 100644 (file)
@@ -27,7 +27,7 @@
 
        Credits:
        Thanks to Murphy Software BV for letting me write this in their time.
-       Well, actually, I get payed doing this...
+       Well, actually, I get paid doing this...
        (Also: see http://www.murphy.nl for murphy, and my homepage ~ard for
        more information on the Professional Workstation)
 
@@ -377,7 +377,7 @@ static char init_setup[14] = {
 };
 
 static int i596_open(struct net_device *dev);
-static int i596_start_xmit(struct sk_buff *skb, struct net_device *dev);
+static netdev_tx_t i596_start_xmit(struct sk_buff *skb, struct net_device *dev);
 static irqreturn_t i596_interrupt(int irq, void *dev_id);
 static int i596_close(struct net_device *dev);
 static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd);
@@ -460,7 +460,7 @@ init_rx_bufs(struct net_device *dev, int num) {
        }
        lp->rbd_tail->next = rfd->rbd;
 #endif
-       return (i);
+       return i;
 }
 
 static inline void
@@ -845,7 +845,7 @@ static int i596_open(struct net_device *dev)
 {
        int i;
 
-       i = request_irq(dev->irq, &i596_interrupt, IRQF_SHARED, dev->name, dev);
+       i = request_irq(dev->irq, i596_interrupt, IRQF_SHARED, dev->name, dev);
        if (i) {
                printk(KERN_ERR "%s: IRQ %d not free\n", dev->name, dev->irq);
                return i;
@@ -863,7 +863,7 @@ static int i596_open(struct net_device *dev)
        return 0;                       /* Always succeed */
 }
 
-static int i596_start_xmit (struct sk_buff *skb, struct net_device *dev) {
+static netdev_tx_t i596_start_xmit (struct sk_buff *skb, struct net_device *dev) {
        struct tx_cmd *tx_cmd;
        short length;
 
@@ -871,12 +871,10 @@ static int i596_start_xmit (struct sk_buff *skb, struct net_device *dev) {
 
        if (length < ETH_ZLEN) {
                if (skb_padto(skb, ETH_ZLEN))
-                       return 0;
+                       return NETDEV_TX_OK;
                length = ETH_ZLEN;
        }
 
-       dev->trans_start = jiffies;
-
        tx_cmd = kmalloc((sizeof (struct tx_cmd) + sizeof (struct i596_tbd)), GFP_ATOMIC);
        if (tx_cmd == NULL) {
                printk(KERN_WARNING "%s: i596_xmit Memory squeeze, dropping packet.\n", dev->name);
@@ -906,7 +904,7 @@ static int i596_start_xmit (struct sk_buff *skb, struct net_device *dev) {
                dev->stats.tx_packets++;
        }
 
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 static void
@@ -952,6 +950,17 @@ static void print_eth(char *add)
                (unsigned char) add[12], (unsigned char) add[13]);
 }
 
+static const struct net_device_ops i596_netdev_ops = {
+       .ndo_open               = i596_open,
+       .ndo_stop               = i596_close,
+       .ndo_start_xmit         = i596_start_xmit,
+       .ndo_set_multicast_list = set_multicast_list,
+       .ndo_tx_timeout         = i596_tx_timeout,
+       .ndo_change_mtu         = eth_change_mtu,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
+};
+
 static int __init lp486e_probe(struct net_device *dev) {
        struct i596_private *lp;
        unsigned char eth_addr[6] = { 0, 0xaa, 0, 0, 0, 0 };
@@ -1014,12 +1023,8 @@ static int __init lp486e_probe(struct net_device *dev) {
        printk("\n");
 
        /* The LP486E-specific entries in the device structure. */
-       dev->open = &i596_open;
-       dev->stop = &i596_close;
-       dev->hard_start_xmit = &i596_start_xmit;
-       dev->set_multicast_list = &set_multicast_list;
+       dev->netdev_ops = &i596_netdev_ops;
        dev->watchdog_timeo = 5*HZ;
-       dev->tx_timeout = i596_tx_timeout;
 
 #if 0
        /* selftest reports 0x320925ae - don't know what that means */
@@ -1246,21 +1251,22 @@ static void set_multicast_list(struct net_device *dev) {
 
        if (i596_debug > 1)
                printk ("%s: set multicast list %d\n",
-                       dev->name, dev->mc_count);
+                       dev->name, netdev_mc_count(dev));
 
-       if (dev->mc_count > 0) {
-               struct dev_mc_list *dmi;
+       if (!netdev_mc_empty(dev)) {
+               struct netdev_hw_addr *ha;
                char *cp;
-               cmd = kmalloc(sizeof(struct i596_cmd)+2+dev->mc_count*6, GFP_ATOMIC);
+               cmd = kmalloc(sizeof(struct i596_cmd) + 2 +
+                             netdev_mc_count(dev) * 6, GFP_ATOMIC);
                if (cmd == NULL) {
                        printk (KERN_ERR "%s: set_multicast Memory squeeze.\n", dev->name);
                        return;
                }
                cmd->command = CmdMulticastList;
-               *((unsigned short *) (cmd + 1)) = dev->mc_count * 6;
+               *((unsigned short *) (cmd + 1)) = netdev_mc_count(dev) * 6;
                cp = ((char *)(cmd + 1))+2;
-               for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) {
-                       memcpy(cp, dmi,6);
+               netdev_for_each_mc_addr(ha, dev) {
+                       memcpy(cp, ha->addr, 6);
                        cp += 6;
                }
                if (i596_debug & LOG_SRCDST)
@@ -1270,7 +1276,8 @@ static void set_multicast_list(struct net_device *dev) {
                if (lp->set_conf.pa_next != I596_NULL) {
                        return;
                }
-               if (dev->mc_count == 0 && !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
+               if (netdev_mc_empty(dev) &&
+                   !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
                        lp->i596_config[8] &= ~0x01;
                } else {
                        lp->i596_config[8] |= 0x01;