]> git.sur5r.net Git - u-boot/blobdiff - net/eth-uclass.c
Merge branch 'master' of git://www.denx.de/git/u-boot-imx
[u-boot] / net / eth-uclass.c
index a356a088262d333e578d5723f6d680db0da2d466..1d130110890ec402048fea58eb1a52461e9899a0 100644 (file)
@@ -14,6 +14,8 @@
 #include <dm/uclass-internal.h>
 #include "eth_internal.h"
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /**
  * struct eth_device_priv - private structure for each Ethernet device
  *
@@ -225,6 +227,7 @@ static int on_ethaddr(const char *name, const char *value, enum env_op op,
                case env_op_create:
                case env_op_overwrite:
                        eth_parse_enetaddr(value, pdata->enetaddr);
+                       eth_write_hwaddr(dev);
                        break;
                case env_op_delete:
                        memset(pdata->enetaddr, 0, 6);
@@ -509,7 +512,8 @@ static int eth_post_probe(struct udevice *dev)
                eth_setenv_enetaddr_by_index("eth", dev->seq, pdata->enetaddr);
                printf("\nWarning: %s using MAC address from ROM\n",
                       dev->name);
-       } else if (is_zero_ethaddr(pdata->enetaddr)) {
+       } else if (is_zero_ethaddr(pdata->enetaddr) ||
+                  !is_valid_ethaddr(pdata->enetaddr)) {
 #ifdef CONFIG_NET_RANDOM_ETHADDR
                net_random_ethaddr(pdata->enetaddr);
                printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",