diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
index 96bc0e5fb1163c530cf61f14a3ab11ca643d1875..c21643bbd3b41381e54a8090df25042e6fb18d93 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
@@ -1228,9 +1228,12 @@ static int __init fe_init(struct net_device *dev)
 		priv->soc->switch_init(priv);
 
 	of_get_mac_address_mtd(priv->device->of_node, dev->dev_addr);
-	/*If the mac address is invalid, use default mac address  */
-	if (!is_valid_ether_addr(dev->dev_addr))
-		memcpy(dev->dev_addr, priv->soc->mac, ETH_ALEN);
+	/*If the mac address is invalid, use random mac address  */
+	if (!is_valid_ether_addr(dev->dev_addr)) {
+		random_ether_addr(dev->dev_addr);
+		dev_err(priv->device, "generated random MAC address %pM\n",
+				dev->dev_addr);
+	}
 
 	err = fe_mdio_init(priv);
 	if (err)
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
index bf2a999f609fadb38677e13548e56cc1a00351d0..9d5ea0ce5834a25782212255c9c45e1e940b85a5 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.h
@@ -386,7 +386,6 @@ struct fe_phy {
 
 struct fe_soc_data
 {
-	unsigned char mac[6];
 	const u32 *reg_table;
 
 	void (*init_data)(struct fe_soc_data *data, struct net_device *netdev);
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c
index 3d610ec38ac0250f6561bd1e336d02d99af61542..f408f077332063438caf4c3ff6f17703c1673bca 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_mt7620.c
@@ -229,7 +229,6 @@ static void mt7621_set_mac(struct fe_priv *priv, unsigned char *mac)
 }
 
 static struct fe_soc_data mt7620_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = mt7620_init_data,
 	.reset_fe = mt7620_fe_reset,
 	.set_mac = mt7620_set_mac,
@@ -251,7 +250,6 @@ static struct fe_soc_data mt7620_data = {
 };
 
 static struct fe_soc_data mt7621_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = mt7621_init_data,
 	.reset_fe = mt7621_fe_reset,
 	.set_mac = mt7621_set_mac,
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt2880.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt2880.c
index 715221b100eb90f3264fe75a5ca36ba6fed86807..147687b39e61ba66d3c2e56c75b348a2d9a1dfee 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt2880.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt2880.c
@@ -57,7 +57,6 @@ static int rt2880_fwd_config(struct fe_priv *priv)
 }
 
 struct fe_soc_data rt2880_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = rt2880_init_data,
 	.reset_fe = rt2880_fe_reset,
 	.fwd_config = rt2880_fwd_config,
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt305x.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt305x.c
index 4c04ca5f5b0cf68efaad6976f95b759b285a0bc5..eacb8d874b680e8ab46c9be0553704eabb532253 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt305x.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt305x.c
@@ -125,7 +125,6 @@ static void rt5350_fe_reset(void)
 }
 
 static struct fe_soc_data rt3050_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = rt305x_init_data,
 	.reset_fe = rt305x_fe_reset,
 	.fwd_config = rt3050_fwd_config,
@@ -137,7 +136,6 @@ static struct fe_soc_data rt3050_data = {
 };
 
 static struct fe_soc_data rt5350_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = rt5350_init_data,
 	.reg_table = rt5350_reg_table,
 	.reset_fe = rt5350_fe_reset,
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt3883.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt3883.c
index 5d540c2c1eb9d76d9389099cf13972942ddba44f..82499fe3b65e6fc4dcbadc89ae292445a46c7812 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt3883.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/soc_rt3883.c
@@ -56,7 +56,6 @@ static void rt3883_init_data(struct fe_soc_data *data,
 }
 
 static struct fe_soc_data rt3883_data = {
-	.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
 	.init_data = rt3883_init_data,
 	.reset_fe = rt3883_fe_reset,
 	.fwd_config = rt3883_fwd_config,