net: wireless: bcmdhd: Allow Improved suspend/resume processing on 2.6.39
[linux-2.6.git] / drivers / net / de600.c
index 2826c74..23a6539 100644 (file)
@@ -38,14 +38,6 @@ static const char version[] = "de600.c: $Revision: 1.41-2.5 $,  Bjorn Ekwall (bj
 /* Add more time here if your adapter won't work OK: */
 #define DE600_SLOW_DOWN        udelay(delay_time)
 
-/* use 0 for production, 1 for verification, >2 for debug */
-#ifdef DE600_DEBUG
-#define PRINTK(x) if (de600_debug >= 2) printk x
-#else
-#define DE600_DEBUG 0
-#define PRINTK(x) /**/
-#endif
-
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
@@ -67,10 +59,6 @@ static const char version[] = "de600.c: $Revision: 1.41-2.5 $,  Bjorn Ekwall (bj
 
 #include "de600.h"
 
-static unsigned int de600_debug = DE600_DEBUG;
-module_param(de600_debug, int, 0);
-MODULE_PARM_DESC(de600_debug, "DE-600 debug level (0-2)");
-
 static unsigned int check_lost = 1;
 module_param(check_lost, bool, 0);
 MODULE_PARM_DESC(check_lost, "If set then check for unplugged de600");
@@ -178,22 +166,22 @@ static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev)
        int     i;
 
        if (free_tx_pages <= 0) {       /* Do timeouts, to avoid hangs. */
-               tickssofar = jiffies - dev->trans_start;
-               if (tickssofar < 5)
-                       return 1;
+               tickssofar = jiffies - dev_trans_start(dev);
+               if (tickssofar < HZ/20)
+                       return NETDEV_TX_BUSY;
                /* else */
                printk(KERN_WARNING "%s: transmit timed out (%d), %s?\n", dev->name, tickssofar, "network cable problem");
                /* Restart the adapter. */
                spin_lock_irqsave(&de600_lock, flags);
                if (adapter_init(dev)) {
                        spin_unlock_irqrestore(&de600_lock, flags);
-                       return 1;
+                       return NETDEV_TX_BUSY;
                }
                spin_unlock_irqrestore(&de600_lock, flags);
        }
 
        /* Start real output */
-       PRINTK(("de600_start_xmit:len=%d, page %d/%d\n", skb->len, tx_fifo_in, free_tx_pages));
+       pr_debug("de600_start_xmit:len=%d, page %d/%d\n", skb->len, tx_fifo_in, free_tx_pages);
 
        if ((len = skb->len) < RUNT)
                len = RUNT;
@@ -211,7 +199,7 @@ static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev)
                if (was_down || (de600_read_byte(READ_DATA, dev) != 0xde)) {
                        if (adapter_init(dev)) {
                                spin_unlock_irqrestore(&de600_lock, flags);
-                               return 1;
+                               return NETDEV_TX_BUSY;
                        }
                }
        }
@@ -238,7 +226,7 @@ static int de600_start_xmit(struct sk_buff *skb, struct net_device *dev)
        }
        spin_unlock_irqrestore(&de600_lock, flags);
        dev_kfree_skb(skb);
-       return 0;
+       return NETDEV_TX_OK;
 }
 
 /*
@@ -259,7 +247,7 @@ static irqreturn_t de600_interrupt(int irq, void *dev_id)
        irq_status = de600_read_status(dev);
 
        do {
-               PRINTK(("de600_interrupt (%02X)\n", irq_status));
+               pr_debug("de600_interrupt (%02X)\n", irq_status);
 
                if (irq_status & RX_GOOD)
                        de600_rx_intr(dev);
@@ -369,7 +357,6 @@ static void de600_rx_intr(struct net_device *dev)
        netif_rx(skb);
 
        /* update stats */
-       dev->last_rx = jiffies;
        dev->stats.rx_packets++; /* count all receives */
        dev->stats.rx_bytes += size; /* count all received bytes */
 
@@ -379,6 +366,16 @@ static void de600_rx_intr(struct net_device *dev)
         */
 }
 
+static const struct net_device_ops de600_netdev_ops = {
+       .ndo_open               = de600_open,
+       .ndo_stop               = de600_close,
+       .ndo_start_xmit         = de600_start_xmit,
+       .ndo_change_mtu         = eth_change_mtu,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
+};
+
+
 static struct net_device * __init de600_probe(void)
 {
        int     i;
@@ -398,8 +395,7 @@ static struct net_device * __init de600_probe(void)
 
        printk(KERN_INFO "%s: D-Link DE-600 pocket adapter", dev->name);
        /* Alpha testers must have the version number to report bugs. */
-       if (de600_debug > 1)
-               printk(version);
+       pr_debug("%s", version);
 
        /* probe for adapter */
        err = -ENODEV;
@@ -440,9 +436,7 @@ static struct net_device * __init de600_probe(void)
 
        printk(", Ethernet Address: %pM\n", dev->dev_addr);
 
-       dev->open = de600_open;
-       dev->stop = de600_close;
-       dev->hard_start_xmit = &de600_start_xmit;
+       dev->netdev_ops = &de600_netdev_ops;
 
        dev->flags&=~IFF_MULTICAST;