skge: handle zero address at open
authorStephen Hemminger <shemminger@linux-foundation.org>
Fri, 2 Feb 2007 16:22:51 +0000 (08:22 -0800)
committerJeff Garzik <jeff@garzik.org>
Wed, 7 Feb 2007 00:07:44 +0000 (19:07 -0500)
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>
drivers/net/skge.c

index 45283f3f95e4a345e4c769d2181432c0deba0082..ce25b6f505c42a81ddebf697384e9ff08106aeff 100644 (file)
@@ -2373,6 +2373,9 @@ static int skge_up(struct net_device *dev)
        size_t rx_size, tx_size;
        int err;
 
+       if (!is_valid_ether_addr(dev->dev_addr))
+               return -EINVAL;
+
        if (netif_msg_ifup(skge))
                printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);
 
@@ -3567,11 +3570,10 @@ static int __devinit skge_probe(struct pci_dev *pdev,
        if (!dev)
                goto err_out_led_off;
 
+       /* Some motherboards are broken and has zero in ROM. */
        if (!is_valid_ether_addr(dev->dev_addr)) {
-               printk(KERN_ERR PFX "%s: bad (zero?) ethernet address in rom\n",
+               printk(KERN_WARNING PFX "%s: bad (zero?) ethernet address in rom\n",
                       pci_name(pdev));
-               err = -EIO;
-               goto err_out_free_netdev;
        }
 
        err = register_netdev(dev);