net: rtl8139: Read HW address from EEPROM only on probe

Do not re-read the HW address from the EEPROM on every start of
transfer, otherwise the user will not be able to adjust ethaddr
as needed. Read the address only once, when the card is detected.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
diff --git a/drivers/net/rtl8139.c b/drivers/net/rtl8139.c
index f319017..d7fabdb 100644
--- a/drivers/net/rtl8139.c
+++ b/drivers/net/rtl8139.c
@@ -502,17 +502,11 @@
 
 static int rtl8139_init_common(struct rtl8139_priv *priv)
 {
-	unsigned short *ap = (unsigned short *)priv->enetaddr;
-	int addr_len, i;
 	u8 reg;
 
 	/* Bring the chip out of low-power mode. */
 	outb(0x00, priv->ioaddr + RTL_REG_CONFIG1);
 
-	addr_len = rtl8139_read_eeprom(priv, 0, 8) == 0x8129 ? 8 : 6;
-	for (i = 0; i < 3; i++)
-		*ap++ = le16_to_cpu(rtl8139_read_eeprom(priv, i + 7, addr_len));
-
 	rtl8139_reset(priv);
 
 	reg = inb(priv->ioaddr + RTL_REG_MEDIASTATUS);
@@ -521,9 +515,6 @@
 		return -1;
 	}
 
-	/* Non-DM compatibility */
-	memcpy(priv->dev.enetaddr, priv->enetaddr, 6);
-
 	return 0;
 }
 
@@ -532,6 +523,19 @@
 	rtl8139_hw_reset(priv);
 }
 
+static void rtl8139_get_hwaddr(struct rtl8139_priv *priv)
+{
+	unsigned short *ap = (unsigned short *)priv->enetaddr;
+	int i, addr_len;
+
+	/* Bring the chip out of low-power mode. */
+	outb(0x00, priv->ioaddr + RTL_REG_CONFIG1);
+
+	addr_len = rtl8139_read_eeprom(priv, 0, 8) == 0x8129 ? 8 : 6;
+	for (i = 0; i < 3; i++)
+		*ap++ = le16_to_cpu(rtl8139_read_eeprom(priv, i + 7, addr_len));
+}
+
 static void rtl8139_name(char *str, int card_number)
 {
 	sprintf(str, "RTL8139#%u", card_number);
@@ -626,6 +630,11 @@
 		dev->recv = rtl8139_recv;
 		dev->mcast = rtl8139_bcast_addr;
 
+		rtl8139_get_hwaddr(priv);
+
+		/* Non-DM compatibility */
+		memcpy(priv->dev.enetaddr, priv->enetaddr, 6);
+
 		eth_register(dev);
 
 		card_number++;