From: Gavin Shan
> Sent: 15 July 2016 11:44
> The device is assigned with random MAC address. It isn't reasonable.
> An valid MAC address might have been provided by (uboot) firmware by
> device-tree or in chip. It's reasonable to use it to maintain consistency.
> 
> This uses the MAC address from device-tree or that in the chip if it's
> valid. Otherwise, a random MAC address is given as before.
...
> +     m = ioread32(priv->base + FTGMAC100_OFFSET_MAC_MADR);
> +     l = ioread32(priv->base + FTGMAC100_OFFSET_MAC_LADR);
> +
> +     mac[0] = (m >> 8) & 0xff;
> +     mac[1] = m & 0xff;
> +     mac[2] = (l >> 24) & 0xff;
> +     mac[3] = (l >> 16) & 0xff;
> +     mac[4] = (l >> 8) & 0xff;
> +     mac[5] = l & 0xff;
> +
> +     if (!is_valid_ether_addr(mac)) {
> +             mac[5] = (m >> 8) & 0xff;
> +             mac[4] = m & 0xff;
> +             mac[3] = (l >> 24) & 0xff;
> +             mac[2] = (l >> 16) & 0xff;
> +             mac[1] = (l >>  8) & 0xff;
> +             mac[0] = l & 0xff;
> +     }
...

That is horrid, not all byte reversed addresses will be invalid.

        David


Reply via email to