On Tue, 11 Aug 2015 15:35:56 +0100 Liviu Dudau <liviu.du...@arm.com> wrote:
> On some embedded systems the EEPROM does not contain a valid MAC address. > In that case it is better to fallback to a generated mac address and > let init scripts fix the value later. > > Reported-by: Liviu Dudau <liviu.du...@arm.com> > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > [Changed handcoded setup to use eth_hw_addr_random() instead] > Signed-off-by: Liviu Dudau <liviu.du...@arm.com> > --- > I have tested this on my Juno platform and I can successfully do an nfsroot > boot. > > Best regards, > Liviu > > drivers/net/ethernet/marvell/sky2.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/ethernet/marvell/sky2.c > b/drivers/net/ethernet/marvell/sky2.c > index d9f4498..c309879 100644 > --- a/drivers/net/ethernet/marvell/sky2.c > +++ b/drivers/net/ethernet/marvell/sky2.c > @@ -4819,6 +4819,13 @@ static struct net_device *sky2_init_netdev(struct > sky2_hw *hw, unsigned port, > memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, > ETH_ALEN); > > + /* if the address is invalid, use a random value */ > + if (!is_valid_ether_addr(dev->dev_addr)) { > + netdev_warn(dev, > + "Invalid MAC address, defaulting to random\n"); > + eth_hw_addr_random(dev); > + } > + > return dev; > } > This is not enough, you need to program the hardware with the new random MAC address. The easiest way is calling sky2_set_mac_address, but you need to convert the address from array back to sockaddr. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html