aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-01-21 00:13:17 -0500
committerJeff Garzik <jgarzik@pobox.com>2006-01-26 22:10:39 -0500
commitc35ca399e09828f3f6b40c0007a95a6582d90347 (patch)
tree4606c4f3680be2e699562750bcd74896445a4883
parent6f9d47220eb2d1b17a0a3ecaf1b564ff95b8393d (diff)
[PATCH] b44: fix laptop carrier detect
On my laptop, the b44 device is created and the carrier state defaults to ON when created by alloc_etherdev. This means tools like NetworkManager see the carrier as On and try and bring the device up. The correct thing to do is mark the carrier as Off when device is created. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
-rw-r--r--drivers/net/b44.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index df9d6e80c4f2..c3267e4e1bb0 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
1399 b44_init_rings(bp); 1399 b44_init_rings(bp);
1400 b44_init_hw(bp); 1400 b44_init_hw(bp);
1401 1401
1402 netif_carrier_off(dev);
1403 b44_check_phy(bp); 1402 b44_check_phy(bp);
1404 1403
1405 err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev); 1404 err = request_irq(dev->irq, b44_interrupt, SA_SHIRQ, dev->name, dev);
@@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev)
1464#endif 1463#endif
1465 b44_halt(bp); 1464 b44_halt(bp);
1466 b44_free_rings(bp); 1465 b44_free_rings(bp);
1467 netif_carrier_off(bp->dev); 1466 netif_carrier_off(dev);
1468 1467
1469 spin_unlock_irq(&bp->lock); 1468 spin_unlock_irq(&bp->lock);
1470 1469
@@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
2000 dev->irq = pdev->irq; 1999 dev->irq = pdev->irq;
2001 SET_ETHTOOL_OPS(dev, &b44_ethtool_ops); 2000 SET_ETHTOOL_OPS(dev, &b44_ethtool_ops);
2002 2001
2002 netif_carrier_off(dev);
2003
2003 err = b44_get_invariants(bp); 2004 err = b44_get_invariants(bp);
2004 if (err) { 2005 if (err) {
2005 printk(KERN_ERR PFX "Problem fetching invariants of chip, " 2006 printk(KERN_ERR PFX "Problem fetching invariants of chip, "