sunxi: Ensure that the NIC specific bytes of the mac are not all 0
authorHans de Goede <hdegoede@redhat.com>
Wed, 27 Jul 2016 15:58:06 +0000 (17:58 +0200)
committerHans de Goede <hdegoede@redhat.com>
Sun, 31 Jul 2016 19:45:34 +0000 (21:45 +0200)
On 2 of my H3 boards bytes 13-15 of the SID are all 0 leading to
the NIC specific bytes of the mac all being 0, which leads to the
boards not getting an ipv6 address from the dhcp server.

This commits adds a check to ensure this does not happen.

Cc: Chen-Yu Tsai <wens@csie.org>
Cc: Corentin LABBE <clabbe.montjoie@gmail.com>
Cc: Amit Singh Tomar <amittomer25@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
board/sunxi/board.c

index 36cf963..ef3fe26 100644 (file)
@@ -623,6 +623,10 @@ static void setup_environment(const void *fdt)
 
        ret = sunxi_get_sid(sid);
        if (ret == 0 && sid[0] != 0 && sid[3] != 0) {
+               /* Ensure the NIC specific bytes of the mac are not all 0 */
+               if ((sid[3] & 0xffffff) == 0)
+                       sid[3] |= 0x800000;
+
                for (i = 0; i < 4; i++) {
                        sprintf(ethaddr, "ethernet%d", i);
                        if (!fdt_get_alias(fdt, ethaddr))