diff -Naupr a/drivers/net/ixp4xx/mac_driver.c b/drivers/net/ixp4xx/mac_driver.c --- a/drivers/net/ixp4xx/mac_driver.c 2007-01-12 21:54:40.000000000 -0700 +++ b/drivers/net/ixp4xx/mac_driver.c 2007-01-12 22:27:18.000000000 -0700 @@ -350,6 +350,16 @@ static int ixmac_open (struct net_device mac->npe_stat_num = inpe_stat_num += NPE_Q_STAT_NUM; + /* Only use platform or random if there's currently no device hw addr */ + if (is_zero_ether_addr(dev->dev_addr)) { + if (is_zero_ether_addr(mac->plat->hwaddr)) { + random_ether_addr(dev->dev_addr); + dev->dev_addr[5] = mac->plat->phy_id; + } + else + memcpy(dev->dev_addr, mac->plat->hwaddr, 6); + } + mac_set_uniaddr(dev); media_check(dev, 1); ixmac_set_rx_mode(dev); @@ -691,20 +701,6 @@ static int mac_probe(struct platform_dev INIT_WORK(&mac->mdio_thread, mac_mdio_thread, dev); - /* The place of the MAC address is very system dependent. - * Here we use a random one to be replaced by one of the - * following commands: - * "ip link set address 02:03:04:04:04:01 dev eth0" - * "ifconfig eth0 hw ether 02:03:04:04:04:07" - */ - - if (is_zero_ether_addr(plat->hwaddr)) { - random_ether_addr(dev->dev_addr); - dev->dev_addr[5] = plat->phy_id; - } - else - memcpy(dev->dev_addr, plat->hwaddr, 6); - printk(KERN_INFO IXMAC_NAME " driver " IXMAC_VERSION ": %s on %s with PHY[%d] initialized\n", dev->name, npe->plat->name, plat->phy_id);