From: Ben Dooks Date: Tue, 13 Jun 2006 22:50:15 +0000 (+0100) Subject: [PATCH] DM9000 - check for MAC left in by bootloader X-Git-Tag: v2.6.18-rc1~457^2~8 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b55dda6f40c46e93006b3c88f75550e0d3b3032;p=linux-2.6 [PATCH] DM9000 - check for MAC left in by bootloader The DM9000 driver does not deal with the case where there is no serial EEPROM to store the configuration, and the bootloader has placed an MAC address into the device already. If there is no valid MAC in the EEPROM, read the one already in the chip and check to see if that one is valid. Signed-off-by: Ben Dooks Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index 631e0d9f2e..e6bdbd3a67 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c @@ -559,6 +559,13 @@ dm9000_probe(struct platform_device *pdev) for (i = 0; i < 6; i++) ndev->dev_addr[i] = db->srom[i]; + if (!is_valid_ether_addr(ndev->dev_addr)) { + /* try reading from mac */ + + for (i = 0; i < 6; i++) + ndev->dev_addr[i] = ior(db, i+DM9000_PAR); + } + if (!is_valid_ether_addr(ndev->dev_addr)) printk("%s: Invalid ethernet MAC address. Please " "set using ifconfig\n", ndev->name);