]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/b44.c
e1000: Add 82573 controller support to TSO fix
[linux-2.6-omap-h63xx.git] / drivers / net / b44.c
index c53848f787ebb600632d4f8b05964de4b7b919dd..c3267e4e1bb02d6c7bf552b1fc818aa4308fa0c2 100644 (file)
@@ -28,8 +28,8 @@
 
 #define DRV_MODULE_NAME                "b44"
 #define PFX DRV_MODULE_NAME    ": "
-#define DRV_MODULE_VERSION     "0.96"
-#define DRV_MODULE_RELDATE     "Nov 8, 2005"
+#define DRV_MODULE_VERSION     "0.97"
+#define DRV_MODULE_RELDATE     "Nov 30, 2005"
 
 #define B44_DEF_MSG_ENABLE       \
        (NETIF_MSG_DRV          | \
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
        b44_init_rings(bp);
        b44_init_hw(bp);
 
-       netif_carrier_off(dev);
        b44_check_phy(bp);
 
        err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev);
@@ -1417,6 +1416,7 @@ static int b44_open(struct net_device *dev)
        add_timer(&bp->timer);
 
        b44_enable_ints(bp);
+       netif_start_queue(dev);
 out:
        return err;
 }
@@ -1463,7 +1463,7 @@ static int b44_close(struct net_device *dev)
 #endif
        b44_halt(bp);
        b44_free_rings(bp);
-       netif_carrier_off(bp->dev);
+       netif_carrier_off(dev);
 
        spin_unlock_irq(&bp->lock);
 
@@ -1837,12 +1837,15 @@ static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
        struct mii_ioctl_data *data = if_mii(ifr);
        struct b44 *bp = netdev_priv(dev);
-       int err;
+       int err = -EINVAL;
+
+       if (!netif_running(dev))
+               goto out;
 
        spin_lock_irq(&bp->lock);
        err = generic_mii_ioctl(&bp->mii_if, data, cmd, NULL);
        spin_unlock_irq(&bp->lock);
-
+out:
        return err;
 }
 
@@ -1996,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
        dev->irq = pdev->irq;
        SET_ETHTOOL_OPS(dev, &b44_ethtool_ops);
 
+       netif_carrier_off(dev);
+
        err = b44_get_invariants(bp);
        if (err) {
                printk(KERN_ERR PFX "Problem fetching invariants of chip, "
@@ -2113,6 +2118,7 @@ static int b44_resume(struct pci_dev *pdev)
        add_timer(&bp->timer);
 
        b44_enable_ints(bp);
+       netif_wake_queue(dev);
        return 0;
 }
 
@@ -2131,7 +2137,7 @@ static int __init b44_init(void)
 
        /* Setup paramaters for syncing RX/TX DMA descriptors */
        dma_desc_align_mask = ~(dma_desc_align_size - 1);
-       dma_desc_sync_size = max(dma_desc_align_size, sizeof(struct dma_desc));
+       dma_desc_sync_size = max_t(unsigned int, dma_desc_align_size, sizeof(struct dma_desc));
 
        return pci_module_init(&b44_driver);
 }