Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[safe/jmp/linux-2.6] / drivers / net / lp486e.c
index 0eff1a0..d44bddb 100644 (file)
@@ -390,7 +390,7 @@ i596_timeout(struct net_device *dev, char *msg, int ct) {
        struct i596_private *lp;
        int boguscnt = ct;
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        while (lp->scb.command) {
                if (--boguscnt == 0) {
                        printk("%s: %s timed out - stat %4.4x, cmd %4.4x\n",
@@ -411,7 +411,7 @@ init_rx_bufs(struct net_device *dev, int num) {
        int i;
        // struct i596_rbd *rbd;
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        lp->scb.pa_rfd = I596_NULL;
 
        for (i = 0; i < num; i++) {
@@ -468,7 +468,7 @@ remove_rx_bufs(struct net_device *dev) {
        struct i596_private *lp;
        struct i596_rfd *rfd;
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        lp->rx_tail->pa_next = I596_NULL;
 
        do {
@@ -517,7 +517,7 @@ CLEAR_INT(void) {
 /* selftest or dump */
 static void
 i596_port_do(struct net_device *dev, int portcmd, char *cmdname) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        u16 *outp;
        int i, m;
 
@@ -541,7 +541,7 @@ i596_port_do(struct net_device *dev, int portcmd, char *cmdname) {
 
 static int
 i596_scp_setup(struct net_device *dev) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        int boguscnt;
 
        /* Setup SCP, ISCP, SCB */
@@ -622,7 +622,7 @@ init_i596(struct net_device *dev) {
        if (i596_scp_setup(dev))
                return 1;
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        lp->scb.command = 0;
 
        memcpy ((void *)lp->i596_config, init_setup, 14);
@@ -676,7 +676,6 @@ i596_rx_one(struct net_device *dev, struct i596_private *lp,
 
                skb->protocol = eth_type_trans(skb,dev);
                netif_rx(skb);
-               dev->last_rx = jiffies;
                dev->stats.rx_packets++;
        } else {
 #if 0
@@ -705,7 +704,7 @@ i596_rx_one(struct net_device *dev, struct i596_private *lp,
 
 static int
 i596_rx(struct net_device *dev) {
-       struct i596_private *lp = (struct i596_private *) dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        struct i596_rfd *rfd;
        int frames = 0;
 
@@ -738,7 +737,7 @@ i596_cleanup_cmd(struct net_device *dev) {
        struct i596_private *lp;
        struct i596_cmd *cmd;
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        while (lp->cmd_head) {
                cmd = (struct i596_cmd *)lp->cmd_head;
 
@@ -806,7 +805,7 @@ static void i596_reset(struct net_device *dev, struct i596_private *lp, int ioad
 }
 
 static void i596_add_cmd(struct net_device *dev, struct i596_cmd *cmd) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        int ioaddr = dev->base_addr;
        unsigned long flags;
 
@@ -912,7 +911,7 @@ static int i596_start_xmit (struct sk_buff *skb, struct net_device *dev) {
 
 static void
 i596_tx_timeout (struct net_device *dev) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        int ioaddr = dev->base_addr;
 
        /* Transmitter timeout, serious problems. */
@@ -953,6 +952,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 };
@@ -970,7 +980,7 @@ static int __init lp486e_probe(struct net_device *dev) {
                return -EBUSY;
        }
 
-       lp = (struct i596_private *) dev->priv;
+       lp = netdev_priv(dev);
        spin_lock_init(&lp->cmd_lock);
 
        /*
@@ -1015,12 +1025,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 */
@@ -1144,10 +1150,10 @@ i596_handle_CU_completion(struct net_device *dev,
 }
 
 static irqreturn_t
-i596_interrupt (int irq, void *dev_instance)
+i596_interrupt(int irq, void *dev_instance)
 {
        struct net_device *dev = dev_instance;
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        unsigned short status, ack_cmd = 0;
        int frames_in = 0;
 
@@ -1215,7 +1221,7 @@ i596_interrupt (int irq, void *dev_instance)
 }
 
 static int i596_close(struct net_device *dev) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
 
        netif_stop_queue(dev);
 
@@ -1242,7 +1248,7 @@ static int i596_close(struct net_device *dev) {
 */
 
 static void set_multicast_list(struct net_device *dev) {
-       struct i596_private *lp = dev->priv;
+       struct i596_private *lp = netdev_priv(dev);
        struct i596_cmd *cmd;
 
        if (i596_debug > 1)
@@ -1272,8 +1278,6 @@ static void set_multicast_list(struct net_device *dev) {
                        return;
                }
                if (dev->mc_count == 0 && !(dev->flags & (IFF_PROMISC | IFF_ALLMULTI))) {
-                       if (dev->flags & IFF_ALLMULTI)
-                               dev->flags |= IFF_PROMISC;
                        lp->i596_config[8] &= ~0x01;
                } else {
                        lp->i596_config[8] |= 0x01;