diff --git a/board/BuR/common/common.c b/board/BuR/common/common.c
index ccaa9c6..13f23fd 100644
--- a/board/BuR/common/common.c
+++ b/board/BuR/common/common.c
@@ -216,7 +216,7 @@
 
 	node = fdt_path_offset((void *)dtbaddr, path);
 	mac = fdt_getprop((void *)dtbaddr, node, "mac-address", &len);
-	if (mac && is_valid_ether_addr((u8 *)mac))
+	if (mac && is_valid_ethaddr((u8 *)mac))
 		return mac;
 
 	return NULL;
@@ -595,7 +595,7 @@
 		#endif
 		if (!mac) {
 			printf("<ethaddr> not set. validating E-fuse MAC ... ");
-			if (is_valid_ether_addr((const u8 *)mac_addr))
+			if (is_valid_ethaddr((const u8 *)mac_addr))
 				mac = (const char *)mac_addr;
 		}
 
diff --git a/board/ait/cam_enc_4xx/cam_enc_4xx.c b/board/ait/cam_enc_4xx/cam_enc_4xx.c
index 290dc19..c5687ba 100644
--- a/board/ait/cam_enc_4xx/cam_enc_4xx.c
+++ b/board/ait/cam_enc_4xx/cam_enc_4xx.c
@@ -70,7 +70,7 @@
 	if (!s)
 		return -EINVAL;
 
-	if (!is_valid_ether_addr((const u8 *)s))
+	if (!is_valid_ethaddr((const u8 *)s))
 		return -EINVAL;
 
 	s = getenv("ipaddr");
diff --git a/board/alphaproject/ap_sh4a_4a/ap_sh4a_4a.c b/board/alphaproject/ap_sh4a_4a/ap_sh4a_4a.c
index b81a68d..e65befc 100644
--- a/board/alphaproject/ap_sh4a_4a/ap_sh4a_4a.c
+++ b/board/alphaproject/ap_sh4a_4a/ap_sh4a_4a.c
@@ -167,7 +167,7 @@
 	/* Read MAC address */
 	i2c_read(0x50, 0x0, 0, mac, 6);
 
-	if (is_valid_ether_addr(mac))
+	if (is_valid_ethaddr(mac))
 		eth_setenv_enetaddr("ethaddr", mac);
 
 	return 0;
diff --git a/board/bct-brettl2/bct-brettl2.c b/board/bct-brettl2/bct-brettl2.c
index 6be9b18..1f0dfb4 100644
--- a/board/bct-brettl2/bct-brettl2.c
+++ b/board/bct-brettl2/bct-brettl2.c
@@ -32,7 +32,7 @@
 static void board_init_enetaddr(uchar *mac_addr)
 {
 	puts("Warning: Generating 'random' MAC address\n");
-	eth_random_addr(mac_addr);
+	net_random_ethaddr(mac_addr);
 	eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
diff --git a/board/bf518f-ezbrd/bf518f-ezbrd.c b/board/bf518f-ezbrd/bf518f-ezbrd.c
index 3a94a57..8ecfbb2 100644
--- a/board/bf518f-ezbrd/bf518f-ezbrd.c
+++ b/board/bf518f-ezbrd/bf518f-ezbrd.c
@@ -39,7 +39,7 @@
 	if (USE_MAC_IN_FLASH) {
 		/* we cram the MAC in the last flash sector */
 		uchar *board_mac_addr = (uchar *)0x203F0096;
-		if (is_valid_ether_addr(board_mac_addr)) {
+		if (is_valid_ethaddr(board_mac_addr)) {
 			memcpy(mac_addr, board_mac_addr, 6);
 			valid_mac = true;
 		}
@@ -47,7 +47,7 @@
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/bf526-ezbrd/bf526-ezbrd.c b/board/bf526-ezbrd/bf526-ezbrd.c
index 368d6be..0a88491 100644
--- a/board/bf526-ezbrd/bf526-ezbrd.c
+++ b/board/bf526-ezbrd/bf526-ezbrd.c
@@ -36,7 +36,7 @@
 	if (USE_MAC_IN_FLASH) {
 		/* we cram the MAC in the last flash sector */
 		uchar *board_mac_addr = (uchar *)0x203F0096;
-		if (is_valid_ether_addr(board_mac_addr)) {
+		if (is_valid_ethaddr(board_mac_addr)) {
 			memcpy(mac_addr, board_mac_addr, 6);
 			valid_mac = true;
 		}
@@ -44,7 +44,7 @@
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/bf527-ezkit/bf527-ezkit.c b/board/bf527-ezkit/bf527-ezkit.c
index 88e1869..257775f 100644
--- a/board/bf527-ezkit/bf527-ezkit.c
+++ b/board/bf527-ezkit/bf527-ezkit.c
@@ -40,13 +40,13 @@
 		for (ret = 0; ret < 6; ++ret)
 			mac_addr[ret] = otp_mac_p[5 - ret];
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			valid_mac = true;
 	}
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/bf537-minotaur/bf537-minotaur.c b/board/bf537-minotaur/bf537-minotaur.c
index ca61ef9..71b4293 100644
--- a/board/bf537-minotaur/bf537-minotaur.c
+++ b/board/bf537-minotaur/bf537-minotaur.c
@@ -26,7 +26,7 @@
 static void board_init_enetaddr(uchar *mac_addr)
 {
 	puts("Warning: Generating 'random' MAC address\n");
-	eth_random_addr(mac_addr);
+	net_random_ethaddr(mac_addr);
 	eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
diff --git a/board/bf537-pnav/bf537-pnav.c b/board/bf537-pnav/bf537-pnav.c
index df00110..93522df 100644
--- a/board/bf537-pnav/bf537-pnav.c
+++ b/board/bf537-pnav/bf537-pnav.c
@@ -26,7 +26,7 @@
 static void board_init_enetaddr(uchar *mac_addr)
 {
 	puts("Warning: Generating 'random' MAC address\n");
-	eth_random_addr(mac_addr);
+	net_random_ethaddr(mac_addr);
 	eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
diff --git a/board/bf537-srv1/bf537-srv1.c b/board/bf537-srv1/bf537-srv1.c
index 725296a..6581028 100644
--- a/board/bf537-srv1/bf537-srv1.c
+++ b/board/bf537-srv1/bf537-srv1.c
@@ -26,7 +26,7 @@
 static void board_init_enetaddr(uchar *mac_addr)
 {
 	puts("Warning: Generating 'random' MAC address\n");
-	eth_random_addr(mac_addr);
+	net_random_ethaddr(mac_addr);
 	eth_setenv_enetaddr("ethaddr", mac_addr);
 }
 
diff --git a/board/bf537-stamp/bf537-stamp.c b/board/bf537-stamp/bf537-stamp.c
index 32045a9..66e5492 100644
--- a/board/bf537-stamp/bf537-stamp.c
+++ b/board/bf537-stamp/bf537-stamp.c
@@ -39,7 +39,7 @@
 	if (USE_MAC_IN_FLASH) {
 		/* we cram the MAC in the last flash sector */
 		uchar *board_mac_addr = (uchar *)0x203F0000;
-		if (is_valid_ether_addr(board_mac_addr)) {
+		if (is_valid_ethaddr(board_mac_addr)) {
 			memcpy(mac_addr, board_mac_addr, 6);
 			valid_mac = true;
 		}
@@ -47,7 +47,7 @@
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/birdland/bav335x/board.c b/board/birdland/bav335x/board.c
index d1e1c8c..32ff7a4 100644
--- a/board/birdland/bav335x/board.c
+++ b/board/birdland/bav335x/board.c
@@ -384,7 +384,7 @@
 	ecode = read_eeprom(&header);
 	/* if we have a valid EE, get mac address from there */
 	if ((ecode == 0) &&
-	    is_valid_ether_addr((const u8 *)&header.mac_addr[0][0])) {
+	    is_valid_ethaddr((const u8 *)&header.mac_addr[0][0])) {
 		memcpy(mac_addr, (const void *)&header.mac_addr[0][0], 6);
 	}
 
@@ -395,7 +395,7 @@
 	if (!getenv("ethaddr")) {
 		printf("<ethaddr> not set. Validating first E-fuse MAC\n");
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
diff --git a/board/buffalo/lsxl/lsxl.c b/board/buffalo/lsxl/lsxl.c
index b0d49c4..487875c 100644
--- a/board/buffalo/lsxl/lsxl.c
+++ b/board/buffalo/lsxl/lsxl.c
@@ -232,7 +232,7 @@
 	printf("Entering rescue mode..\n");
 #ifdef CONFIG_RANDOM_MACADDR
 	if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
-		eth_random_addr(enetaddr);
+		net_random_ethaddr(enetaddr);
 		if (eth_setenv_enetaddr("ethaddr", enetaddr)) {
 			printf("Failed to set ethernet address\n");
 				set_led(LED_ALARM_BLINKING);
diff --git a/board/cm-bf527/cm-bf527.c b/board/cm-bf527/cm-bf527.c
index 1533eb9..2871fa2 100644
--- a/board/cm-bf527/cm-bf527.c
+++ b/board/cm-bf527/cm-bf527.c
@@ -39,13 +39,13 @@
 		for (ret = 0; ret < 6; ++ret)
 			mac_addr[ret] = otp_mac_p[5 - ret];
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			valid_mac = true;
 	}
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/cm-bf537e/cm-bf537e.c b/board/cm-bf537e/cm-bf537e.c
index e79f90f..902611e 100644
--- a/board/cm-bf537e/cm-bf537e.c
+++ b/board/cm-bf537e/cm-bf537e.c
@@ -31,7 +31,7 @@
 		return;
 
 	printf("Warning: %s: generating 'random' MAC address\n", var);
-	eth_random_addr(enetaddr);
+	net_random_ethaddr(enetaddr);
 	eth_setenv_enetaddr(var, enetaddr);
 }
 
diff --git a/board/cm-bf537u/cm-bf537u.c b/board/cm-bf537u/cm-bf537u.c
index 632cbda..69bffd7 100644
--- a/board/cm-bf537u/cm-bf537u.c
+++ b/board/cm-bf537u/cm-bf537u.c
@@ -31,7 +31,7 @@
 		return;
 
 	printf("Warning: %s: generating 'random' MAC address\n", var);
-	eth_random_addr(enetaddr);
+	net_random_ethaddr(enetaddr);
 	eth_setenv_enetaddr(var, enetaddr);
 }
 
diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
index ae6945b..7a1bbaf 100644
--- a/board/compulab/cm_fx6/cm_fx6.c
+++ b/board/compulab/cm_fx6/cm_fx6.c
@@ -425,7 +425,7 @@
 	if (rc)
 		return rc;
 
-	if (!is_valid_ether_addr(enetaddr))
+	if (!is_valid_ethaddr(enetaddr))
 		return -1;
 
 	return eth_setenv_enetaddr(env_var, enetaddr);
diff --git a/board/compulab/cm_t335/cm_t335.c b/board/compulab/cm_t335/cm_t335.c
index 592ef3d..428aee6 100644
--- a/board/compulab/cm_t335/cm_t335.c
+++ b/board/compulab/cm_t335/cm_t335.c
@@ -114,7 +114,7 @@
 	if (rv)
 		get_efuse_mac_addr(enetaddr);
 
-	if (!is_valid_ether_addr(enetaddr))
+	if (!is_valid_ethaddr(enetaddr))
 		return -1;
 
 	return eth_setenv_enetaddr("ethaddr", enetaddr);
diff --git a/board/compulab/cm_t35/cm_t35.c b/board/compulab/cm_t35/cm_t35.c
index c4ea8ea..374edbc 100644
--- a/board/compulab/cm_t35/cm_t35.c
+++ b/board/compulab/cm_t35/cm_t35.c
@@ -441,7 +441,7 @@
 	if (rc)
 		return rc;
 
-	if (!is_valid_ether_addr(enetaddr))
+	if (!is_valid_ethaddr(enetaddr))
 		return -1;
 
 	return eth_setenv_enetaddr("ethaddr", enetaddr);
diff --git a/board/compulab/cm_t3517/cm_t3517.c b/board/compulab/cm_t3517/cm_t3517.c
index 624cf4c..03b2bad 100644
--- a/board/compulab/cm_t3517/cm_t3517.c
+++ b/board/compulab/cm_t3517/cm_t3517.c
@@ -132,7 +132,7 @@
 	enetaddr[4] = (u8)((lsb >> 8)  & 0xff);
 	enetaddr[5] = (u8)(lsb & 0xff);
 
-	return is_valid_ether_addr(enetaddr);
+	return is_valid_ethaddr(enetaddr);
 }
 
 static inline int cm_t3517_init_emac(bd_t *bis)
@@ -170,7 +170,7 @@
 			return ret;
 	}
 
-	if (!is_valid_ether_addr(enetaddr))
+	if (!is_valid_ethaddr(enetaddr))
 		return -1;
 
 	return eth_setenv_enetaddr("ethaddr", enetaddr);
diff --git a/board/compulab/cm_t54/cm_t54.c b/board/compulab/cm_t54/cm_t54.c
index fdea909..fad0551 100644
--- a/board/compulab/cm_t54/cm_t54.c
+++ b/board/compulab/cm_t54/cm_t54.c
@@ -166,10 +166,10 @@
 		return 0;
 
 	ret = cl_eeprom_read_mac_addr(enetaddr, CONFIG_SYS_I2C_EEPROM_BUS);
-	if (ret || !is_valid_ether_addr(enetaddr))
+	if (ret || !is_valid_ethaddr(enetaddr))
 		generate_mac_addr(enetaddr);
 
-	if (!is_valid_ether_addr(enetaddr))
+	if (!is_valid_ethaddr(enetaddr))
 		return -1;
 
 	return eth_setenv_enetaddr("usbethaddr", enetaddr);
diff --git a/board/davinci/da8xxevm/da850evm.c b/board/davinci/da8xxevm/da850evm.c
index b9ca38e..b82385a 100644
--- a/board/davinci/da8xxevm/da850evm.c
+++ b/board/davinci/da8xxevm/da850evm.c
@@ -145,7 +145,7 @@
 	 */
 	if (!enetaddr_found) {
 		if (!spi_mac_read) {
-			if (is_valid_ether_addr(buff)) {
+			if (is_valid_ethaddr(buff)) {
 				if (eth_setenv_enetaddr("ethaddr", buff)) {
 					printf("Warning: Failed to "
 					"set MAC address from SPI flash\n");
@@ -160,8 +160,8 @@
 		 * MAC address present in environment compare it with
 		 * the MAC address in SPI flash and warn on mismatch
 		 */
-		if (!spi_mac_read && is_valid_ether_addr(buff) &&
-						memcmp(env_enetaddr, buff, 6))
+		if (!spi_mac_read && is_valid_ethaddr(buff) &&
+		    memcmp(env_enetaddr, buff, 6))
 			printf("Warning: MAC address in SPI flash don't match "
 					"with the MAC address in the environment\n");
 			printf("Default using MAC address from environment\n");
diff --git a/board/dnp5370/dnp5370.c b/board/dnp5370/dnp5370.c
index df721c9..655fcac 100644
--- a/board/dnp5370/dnp5370.c
+++ b/board/dnp5370/dnp5370.c
@@ -46,7 +46,7 @@
 	if (USE_MAC_IN_FLASH) {
 		/* we cram the MAC in the last flash sector */
 		uchar *board_mac_addr = (uchar *)0x202F0000;
-		if (is_valid_ether_addr(board_mac_addr)) {
+		if (is_valid_ethaddr(board_mac_addr)) {
 			memcpy(mac_addr, board_mac_addr, 6);
 			valid_mac = true;
 		}
@@ -54,7 +54,7 @@
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/gumstix/pepper/board.c b/board/gumstix/pepper/board.c
index f644f81..beb2fac 100644
--- a/board/gumstix/pepper/board.c
+++ b/board/gumstix/pepper/board.c
@@ -165,7 +165,7 @@
 		mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
diff --git a/board/ifm/ac14xx/ac14xx.c b/board/ifm/ac14xx/ac14xx.c
index 5d2ab2f..72932ca 100644
--- a/board/ifm/ac14xx/ac14xx.c
+++ b/board/ifm/ac14xx/ac14xx.c
@@ -225,7 +225,7 @@
 		break;
 	}
 
-	if (mac && is_valid_ether_addr(mac)) {
+	if (mac && is_valid_ethaddr(mac)) {
 		eth_setenv_enetaddr("ethaddr", mac);
 		if (mac_diag) {
 			mac_txt = getenv("ethaddr");
diff --git a/board/ip04/ip04.c b/board/ip04/ip04.c
index ae52633..d20500f 100644
--- a/board/ip04/ip04.c
+++ b/board/ip04/ip04.c
@@ -32,7 +32,7 @@
 	uchar enetaddr[6];
 	if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(enetaddr);
+		net_random_ethaddr(enetaddr);
 		eth_setenv_enetaddr("ethaddr", enetaddr);
 	}
 
diff --git a/board/isee/igep0033/board.c b/board/isee/igep0033/board.c
index 9f8fcf2..5fea7ff 100644
--- a/board/isee/igep0033/board.c
+++ b/board/isee/igep0033/board.c
@@ -156,7 +156,7 @@
 		mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
diff --git a/board/phytec/pcm051/board.c b/board/phytec/pcm051/board.c
index 1071662..1bf9d73 100644
--- a/board/phytec/pcm051/board.c
+++ b/board/phytec/pcm051/board.c
@@ -228,7 +228,7 @@
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 		else
 			goto try_usbether;
diff --git a/board/renesas/r0p7734/r0p7734.c b/board/renesas/r0p7734/r0p7734.c
index 5687ad4..2e31ba6 100644
--- a/board/renesas/r0p7734/r0p7734.c
+++ b/board/renesas/r0p7734/r0p7734.c
@@ -55,7 +55,7 @@
 	/* Read MAC address */
 	i2c_read(0x50, 0x10, 0, mac, 6);
 
-	if (is_valid_ether_addr(mac))
+	if (is_valid_ethaddr(mac))
 		eth_setenv_enetaddr("ethaddr", mac);
 
 	return 0;
diff --git a/board/siemens/common/factoryset.c b/board/siemens/common/factoryset.c
index 7baac3d..d81f548 100644
--- a/board/siemens/common/factoryset.c
+++ b/board/siemens/common/factoryset.c
@@ -271,7 +271,7 @@
 	uint8_t mac_addr[6];
 
 	debug("FactorySet: Set mac address\n");
-	if (is_valid_ether_addr(factory_dat.mac)) {
+	if (is_valid_ethaddr(factory_dat.mac)) {
 		memcpy(mac_addr, factory_dat.mac, 6);
 	} else {
 		uint32_t mac_hi, mac_lo;
@@ -286,7 +286,7 @@
 		mac_addr[3] = (mac_hi & 0xFF000000) >> 24;
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
-		if (!is_valid_ether_addr(mac_addr)) {
+		if (!is_valid_ethaddr(mac_addr)) {
 			printf("Warning: ethaddr not set by FactorySet or E-fuse. Set <ethaddr> variable to overcome this.\n");
 			return -1;
 		}
diff --git a/board/siemens/pxm2/board.c b/board/siemens/pxm2/board.c
index 264ba02..4d8ba3c 100644
--- a/board/siemens/pxm2/board.c
+++ b/board/siemens/pxm2/board.c
@@ -222,7 +222,7 @@
 	struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
 #ifdef CONFIG_FACTORYSET
 	int rv;
-	if (!is_valid_ether_addr(factory_dat.mac))
+	if (!is_valid_ethaddr(factory_dat.mac))
 		printf("Error: no valid mac address\n");
 	else
 		eth_setenv_enetaddr("ethaddr", factory_dat.mac);
diff --git a/board/silica/pengwyn/board.c b/board/silica/pengwyn/board.c
index ee88b6f..815c9a7 100644
--- a/board/silica/pengwyn/board.c
+++ b/board/silica/pengwyn/board.c
@@ -189,7 +189,7 @@
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 		else
 			return n;
diff --git a/board/tcm-bf518/tcm-bf518.c b/board/tcm-bf518/tcm-bf518.c
index 5d25fcd..3fa7d97 100644
--- a/board/tcm-bf518/tcm-bf518.c
+++ b/board/tcm-bf518/tcm-bf518.c
@@ -39,14 +39,14 @@
 		for (ret = 0; ret < 6; ++ret)
 			mac_addr[ret] = otp_mac_p[5 - ret];
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			valid_mac = true;
 	}
 #endif
 
 	if (!valid_mac) {
 		puts("Warning: Generating 'random' MAC address\n");
-		eth_random_addr(mac_addr);
+		net_random_ethaddr(mac_addr);
 	}
 
 	eth_setenv_enetaddr("ethaddr", mac_addr);
diff --git a/board/tcm-bf537/tcm-bf537.c b/board/tcm-bf537/tcm-bf537.c
index a4f0f71..2531a44 100644
--- a/board/tcm-bf537/tcm-bf537.c
+++ b/board/tcm-bf537/tcm-bf537.c
@@ -31,7 +31,7 @@
 		return;
 
 	printf("Warning: %s: generating 'random' MAC address\n", var);
-	eth_random_addr(enetaddr);
+	net_random_ethaddr(enetaddr);
 	eth_setenv_enetaddr(var, enetaddr);
 }
 
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index 0739e60..96245a3 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -593,7 +593,7 @@
 	if (!getenv("ethaddr")) {
 		printf("<ethaddr> not set. Validating first E-fuse MAC\n");
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
@@ -609,7 +609,7 @@
 	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
 	if (!getenv("eth1addr")) {
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("eth1addr", mac_addr);
 	}
 
@@ -658,7 +658,7 @@
 #endif
 #if defined(CONFIG_USB_ETHER) && \
 	(!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_USBETH_SUPPORT))
-	if (is_valid_ether_addr(mac_addr))
+	if (is_valid_ethaddr(mac_addr))
 		eth_setenv_enetaddr("usbnet_devaddr", mac_addr);
 
 	rv = usb_eth_initialize(bis);
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index ddf4c5f..4aae230 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -802,7 +802,7 @@
 
 	if (!getenv("ethaddr")) {
 		puts("<ethaddr> not set. Validating first E-fuse MAC\n");
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
@@ -816,7 +816,7 @@
 	mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
 	if (!getenv("eth1addr")) {
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("eth1addr", mac_addr);
 	}
 
diff --git a/board/ti/beagle_x15/board.c b/board/ti/beagle_x15/board.c
index ac0d22c..ffcd531 100644
--- a/board/ti/beagle_x15/board.c
+++ b/board/ti/beagle_x15/board.c
@@ -356,7 +356,7 @@
 	if (!getenv("ethaddr")) {
 		printf("<ethaddr> not set. Validating first E-fuse MAC\n");
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
@@ -370,7 +370,7 @@
 	mac_addr[5] = mac_lo & 0xFF;
 
 	if (!getenv("eth1addr")) {
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("eth1addr", mac_addr);
 	}
 
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c
index 3089fa2..c101928 100644
--- a/board/ti/dra7xx/evm.c
+++ b/board/ti/dra7xx/evm.c
@@ -341,7 +341,7 @@
 	if (!getenv("ethaddr")) {
 		printf("<ethaddr> not set. Validating first E-fuse MAC\n");
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 	}
 
@@ -355,7 +355,7 @@
 	mac_addr[5] = mac_lo & 0xFF;
 
 	if (!getenv("eth1addr")) {
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("eth1addr", mac_addr);
 	}
 
diff --git a/board/ti/ti814x/evm.c b/board/ti/ti814x/evm.c
index 54b3dfb..e406dab 100644
--- a/board/ti/ti814x/evm.c
+++ b/board/ti/ti814x/evm.c
@@ -178,7 +178,7 @@
 		mac_addr[4] = mac_lo & 0xFF;
 		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
 
-		if (is_valid_ether_addr(mac_addr))
+		if (is_valid_ethaddr(mac_addr))
 			eth_setenv_enetaddr("ethaddr", mac_addr);
 		else
 			printf("Unable to read MAC address. Set <ethaddr>\n");
