via-rhine: Assign random MAC address if necessary
[sfrench/cifs-2.6.git] / drivers / net / via-rhine.c
index 40f394ce113bb2c6467756529134c760fac29b67..7f23ab913fd9044fea6c2377bacbf5fd4f632ccc 100644 (file)
@@ -838,13 +838,15 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,
 
        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = ioread8(ioaddr + StationAddr + i);
-       memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
-       if (!is_valid_ether_addr(dev->perm_addr)) {
-               rc = -EIO;
-               dev_err(&pdev->dev, "Invalid MAC address\n");
-               goto err_out_unmap;
+       if (!is_valid_ether_addr(dev->dev_addr)) {
+               /* Report it and use a random ethernet address instead */
+               netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
+               random_ether_addr(dev->dev_addr);
+               netdev_info(dev, "Using random MAC address: %pM\n",
+                           dev->dev_addr);
        }
+       memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 
        /* For Rhine-I/II, phy_id is loaded from EEPROM */
        if (!phy_id)