au1000_setup_hw_rings(aup, aup->macdma);
 
-       /* set a random MAC now in case platform_data doesn't provide one */
-       random_ether_addr(dev->dev_addr);
-
        writel(0, aup->enable);
        aup->mac_enabled = 0;
 
                                        " PHY search on MAC0\n");
                aup->phy1_search_mac0 = 1;
        } else {
-               if (is_valid_ether_addr(pd->mac))
+               if (is_valid_ether_addr(pd->mac)) {
                        memcpy(dev->dev_addr, pd->mac, 6);
+               } else {
+                       /* Set a random MAC since no valid provided by platform_data. */
+                       eth_hw_addr_random(dev);
+               }
 
                aup->phy_static_config = pd->phy_static_config;
                aup->phy_search_highest_addr = pd->phy_search_highest_addr;