r6040: fix link checking with switches
[safe/jmp/linux-2.6] / drivers / net / de600.c
index c866ca9..23a6539 100644 (file)
@@ -166,16 +166,16 @@ 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);
        }
@@ -199,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;
                        }
                }
        }
@@ -226,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;
 }
 
 /*