Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 482e3feb authored by Joe Perches's avatar Joe Perches Committed by David S. Miller
Browse files

via-rhine: Assign random MAC address if necessary



Roger Luethi has had several reports of Rhine NICs providing
an invalid MAC address.  If so, assign a random MAC address so
the hardware can still be used.

Tested as a standalone interface, as carrier for ppp, and as a
bonding slave.

Original-patch-by: default avatarAlexandru Gagniuc <mr.nuke.me@gmail.com>
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent df4511fe
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -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)