aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-02-02 11:22:51 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-06 19:07:44 -0500
commitfae87592280039837fdd72c5ecdac2af2eb97f63 (patch)
tree742628efdd91e394d528ed202ada01bce9e75140 /drivers
parenta7bed27dc69e3bc9238549a4964ea94ec318362c (diff)
skge: handle zero address at open
Some motherboards are broken and have no address set. Failing at probe time prevents the device from ever being used (like to download a fixed BIOS). Instead warn on probe and check again when device is brought up. That way the address can be set. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/skge.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 45283f3f95e4..ce25b6f505c4 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2373,6 +2373,9 @@ static int skge_up(struct net_device *dev)
2373 size_t rx_size, tx_size; 2373 size_t rx_size, tx_size;
2374 int err; 2374 int err;
2375 2375
2376 if (!is_valid_ether_addr(dev->dev_addr))
2377 return -EINVAL;
2378
2376 if (netif_msg_ifup(skge)) 2379 if (netif_msg_ifup(skge))
2377 printk(KERN_INFO PFX "%s: enabling interface\n", dev->name); 2380 printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);
2378 2381
@@ -3567,11 +3570,10 @@ static int __devinit skge_probe(struct pci_dev *pdev,
3567 if (!dev) 3570 if (!dev)
3568 goto err_out_led_off; 3571 goto err_out_led_off;
3569 3572
3573 /* Some motherboards are broken and has zero in ROM. */
3570 if (!is_valid_ether_addr(dev->dev_addr)) { 3574 if (!is_valid_ether_addr(dev->dev_addr)) {
3571 printk(KERN_ERR PFX "%s: bad (zero?) ethernet address in rom\n", 3575 printk(KERN_WARNING PFX "%s: bad (zero?) ethernet address in rom\n",
3572 pci_name(pdev)); 3576 pci_name(pdev));
3573 err = -EIO;
3574 goto err_out_free_netdev;
3575 } 3577 }
3576 3578
3577 err = register_netdev(dev); 3579 err = register_netdev(dev);