igb: add support for SGMII-based MDIO PHYs
[deliverable/linux.git] / drivers / net / eth16i.c
index d4e24f08b3ba3bb0c51d925109cd0ffc88964b1c..10e39f2b31c3993e7e5bce57be2944702235481a 100644 (file)
@@ -1027,7 +1027,7 @@ static void eth16i_timeout(struct net_device *dev)
        inw(ioaddr + TX_STATUS_REG),  (inb(ioaddr + TX_STATUS_REG) & TX_DONE) ?
                       "IRQ conflict" : "network cable problem");
 
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
 
        /* Let's dump all registers */
        if(eth16i_debug > 0) {
@@ -1047,7 +1047,7 @@ static void eth16i_timeout(struct net_device *dev)
        }
        dev->stats.tx_errors++;
        eth16i_reset(dev);
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
        outw(ETH16I_INTR_ON, ioaddr + TX_INTR_REG);
        netif_wake_queue(dev);
 }
@@ -1109,7 +1109,6 @@ static netdev_tx_t eth16i_tx(struct sk_buff *skb, struct net_device *dev)
                outb(TX_START | lp->tx_queue, ioaddr + TRANSMIT_START_REG);
                lp->tx_queue = 0;
                lp->tx_queue_len = 0;
-               dev->trans_start = jiffies;
                lp->tx_started = 1;
                netif_wake_queue(dev);
        }
@@ -1443,8 +1442,10 @@ int __init init_module(void)
                dev->if_port = eth16i_parse_mediatype(mediatype[this_dev]);
 
                if(io[this_dev] == 0) {
-                       if(this_dev != 0) /* Only autoprobe 1st one */
+                       if (this_dev != 0) { /* Only autoprobe 1st one */
+                               free_netdev(dev);
                                break;
+                       }
 
                        printk(KERN_NOTICE "eth16i.c: Presently autoprobing (not recommended) for a single card.\n");
                }
This page took 0.024223 seconds and 5 git commands to generate.