From 6640e1c3681b4b9e7f0d8a57351b068ec40d3efd Mon Sep 17 00:00:00 2001
From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date: Mon, 12 Aug 2019 13:21:05 +0200
Subject: [PATCH] ramips: clean and improve MAC address setup in 02_network

This patch removes unnecessary MAC address setup statements in
ramips' 02_network by doing several optimizations:

1. For the following devices, lan_mac was set up with
   mtd_get_mac_binary although the same address was set in DTS.
   The lan_mac statement is removed in 02_network, but
   wan_mac is kept:
   - mercury,mac1200r-v2
   - phicomm,k2g
   - skylab,skw92a
   - wiznet,wizfi630a

2. For the following devices, wan_mac was set up with
   mtd_get_mac_binary although the same address was set in DTS.
   The wan_mac statement is removed in 02_network, no
   lan_mac is present:
   - buffalo,whr-g300n
   - glinet,gl-mt300n-v2
   - zyxel,keenetic-start

3. For the following device, lan_mac and wan_mac were set up
   with mtd_get_mac_binary to the same address as set in DTS.
   Both statements are removed in 02_network:
   - buffalo,whr-600d

4. For some devices, it was possible to move setup from 02_network
   to DTS by introducing previously missing mtd_mac_address:
   - buffalo,whr-1166d
   - buffalo,whr-300hp2
   - buffalo,wsr-600dhp
   - ohyeah,oy-0001
   - planex,vr500

5. For one device, mtd_mac_address was just wrong and overwritten
   by 02_network. Put the correct value in DTS and remove redundant
   statement in 02_network:
   - asus,rt-ac57u

6. For one device, MAC address defined in DTS is exchanged together
   with lan_mac/wan_mac setup in 02_network, so that cases in
   02_network can be merged:
   - phicomm,k2p

For some devices, an empty case has to be used to prevent them
from falling into the default case and have
WAN address = eth0 address + 1 set to them.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../ramips/base-files/etc/board.d/02_network  | 43 +++++++------------
 .../ramips/dts/mt7620a_buffalo_whr-1166d.dts  |  2 +
 .../ramips/dts/mt7620a_buffalo_whr-300hp2.dts |  1 +
 .../ramips/dts/mt7620a_ohyeah_oy-0001.dts     |  1 +
 .../linux/ramips/dts/mt7621_asus_rt-ac57u.dts |  2 +-
 .../ramips/dts/mt7621_buffalo_wsr-600dhp.dts  |  4 ++
 .../ramips/dts/mt7621_netgear_r6220.dtsi      |  2 +-
 .../linux/ramips/dts/mt7621_phicomm_k2p.dts   |  2 +-
 .../linux/ramips/dts/mt7621_planex_vr500.dts  |  4 ++
 9 files changed, 30 insertions(+), 31 deletions(-)

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index e19a618389c7..a6b0177ddeb8 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -513,7 +513,10 @@ ramips_setup_macs()
 	alfa-network,w502u|\
 	arcwireless,freestation5|\
 	cudy,wr1000|\
-	netgear,wnce2001)
+	netgear,wnce2001|\
+	ohyeah,oy-0001|\
+	phicomm,k2g|\
+	skylab,skw92a)
 		wan_mac=$(mtd_get_mac_binary factory 0x2e)
 		;;
 	arcwireless,freestation5|\
@@ -535,9 +538,12 @@ ramips_setup_macs()
 		wan_mac=$(macaddr_add "$lan_mac" 1)
 		;;
 	asus,rt-ac57u|\
+	elecom,wrc-1167ghbk2-s|\
+	elecom,wrc-1900gst|\
+	elecom,wrc-2533gst|\
 	phicomm,k2p|\
-	planex,vr500)
-		lan_mac=$(mtd_get_mac_binary factory 0xe000)
+	planex,vr500|\
+	samknows,whitebox-v8)
 		wan_mac=$(mtd_get_mac_binary factory 0xe006)
 		;;
 	asus,rt-n56u)
@@ -557,13 +563,11 @@ ramips_setup_macs()
 	buffalo,whr-1166d|\
 	buffalo,whr-300hp2|\
 	buffalo,whr-600d|\
-	buffalo,wsr-600dhp)
-		wan_mac=$(mtd_get_mac_binary factory 0x4)
-		lan_mac=$wan_mac
-		;;
 	buffalo,whr-g300n|\
-	glinet,gl-mt300n-v2)
-		wan_mac=$(mtd_get_mac_binary factory 0x4)
+	buffalo,wsr-600dhp|\
+	glinet,gl-mt300n-v2|\
+	zyxel,keenetic-start)
+		# This empty case has to be kept for devices without any MAC address adjustments
 		;;
 	dlink,dch-m225|\
 	samsung,cy-swr1100)
@@ -600,12 +604,6 @@ ramips_setup_macs()
 	netgear,r6850)
 		wan_mac=$(macaddr_add "$(cat /sys/class/net/eth0/address)" 2)
 		;;
-	elecom,wrc-1167ghbk2-s|\
-	elecom,wrc-1900gst|\
-	elecom,wrc-2533gst|\
-	samknows,whitebox-v8)
-		wan_mac=$(mtd_get_mac_binary factory 0xe006)
-		;;
 	hiwifi,hc5661|\
 	hiwifi,hc5661a|\
 	hiwifi,hc5761|\
@@ -642,14 +640,7 @@ ramips_setup_macs()
 		lan_mac=$(mtd_get_mac_binary factory 0x2e)
 		;;
 	mercury,mac1200r-v2)
-		lan_mac=$(mtd_get_mac_binary factory_info 0xd)
-		wan_mac=$(macaddr_add "$lan_mac" 1)
-		;;
-	ohyeah,oy-0001|\
-	phicomm,k2g|\
-	skylab,skw92a)
-		lan_mac=$(mtd_get_mac_binary factory 0x28)
-		wan_mac=$(mtd_get_mac_binary factory 0x2e)
+		wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory_info 0xd)" 1)
 		;;
 	poray,m3|\
 	poray,m4-4m|\
@@ -662,9 +653,9 @@ ramips_setup_macs()
 		wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x8004)" 2)
 		;;
 	sparklan,wcr-150gn|\
+	wiznet,wizfi630a|\
 	zyxel,keenetic-omni|\
 	zyxel,keenetic-omni-ii|\
-	zyxel,keenetic-start|\
 	zyxel,keenetic-viva)
 		wan_mac=$(mtd_get_mac_binary factory 0x28)
 		;;
@@ -674,10 +665,6 @@ ramips_setup_macs()
 	trendnet,tew-691gr)
 		wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" 3)
 		;;
-	wiznet,wizfi630a)
-		lan_mac=$(mtd_get_mac_binary factory 0x4)
-		wan_mac=$(mtd_get_mac_binary factory 0x28)
-		;;
 	xiaomi,mir3g|\
 	xiaomi,mir3p)
 		lan_mac=$(mtd_get_mac_binary factory 0xe006)
diff --git a/target/linux/ramips/dts/mt7620a_buffalo_whr-1166d.dts b/target/linux/ramips/dts/mt7620a_buffalo_whr-1166d.dts
index 9a6ca335a8ca..4be719a2491c 100644
--- a/target/linux/ramips/dts/mt7620a_buffalo_whr-1166d.dts
+++ b/target/linux/ramips/dts/mt7620a_buffalo_whr-1166d.dts
@@ -144,6 +144,8 @@
 	pinctrl-names = "default";
 	pinctrl-0 = <&rgmii1_pins &mdio_pins>;
 
+	mtd-mac-address = <&factory 0x4>;
+
 	port@5 {
 		status = "okay";
 		phy-handle = <&phy5>;
diff --git a/target/linux/ramips/dts/mt7620a_buffalo_whr-300hp2.dts b/target/linux/ramips/dts/mt7620a_buffalo_whr-300hp2.dts
index 8a79d6ab0547..7dbc58fee77a 100644
--- a/target/linux/ramips/dts/mt7620a_buffalo_whr-300hp2.dts
+++ b/target/linux/ramips/dts/mt7620a_buffalo_whr-300hp2.dts
@@ -143,6 +143,7 @@
 &ethernet {
 	pinctrl-names = "default";
 	pinctrl-0 = <&ephy_pins>;
+	mtd-mac-address = <&factory 0x4>;
 	mediatek,portmap = "llllw";
 };
 
diff --git a/target/linux/ramips/dts/mt7620a_ohyeah_oy-0001.dts b/target/linux/ramips/dts/mt7620a_ohyeah_oy-0001.dts
index 6b93b8d08988..a4fd86bbd6b0 100644
--- a/target/linux/ramips/dts/mt7620a_ohyeah_oy-0001.dts
+++ b/target/linux/ramips/dts/mt7620a_ohyeah_oy-0001.dts
@@ -106,6 +106,7 @@
 &ethernet {
 	pinctrl-names = "default";
 	pinctrl-0 = <&ephy_pins>;
+	mtd-mac-address = <&factory 0x28>;
 	mediatek,portmap = "llllw";
 };
 
diff --git a/target/linux/ramips/dts/mt7621_asus_rt-ac57u.dts b/target/linux/ramips/dts/mt7621_asus_rt-ac57u.dts
index 8060fd9eaa01..e589461a4dd2 100644
--- a/target/linux/ramips/dts/mt7621_asus_rt-ac57u.dts
+++ b/target/linux/ramips/dts/mt7621_asus_rt-ac57u.dts
@@ -135,7 +135,7 @@
 };
 
 &ethernet {
-	mtd-mac-address = <&factory 0x4e000>;
+	mtd-mac-address = <&factory 0xe000>;
 };
 
 &pinctrl {
diff --git a/target/linux/ramips/dts/mt7621_buffalo_wsr-600dhp.dts b/target/linux/ramips/dts/mt7621_buffalo_wsr-600dhp.dts
index 6e7066d66cbb..3f20002fea45 100644
--- a/target/linux/ramips/dts/mt7621_buffalo_wsr-600dhp.dts
+++ b/target/linux/ramips/dts/mt7621_buffalo_wsr-600dhp.dts
@@ -181,6 +181,10 @@
 	};
 };
 
+&ethernet {
+	mtd-mac-address = <&factory 0x4>;
+};
+
 &xhci {
 	status = "disabled";
 };
diff --git a/target/linux/ramips/dts/mt7621_netgear_r6220.dtsi b/target/linux/ramips/dts/mt7621_netgear_r6220.dtsi
index 17000a5bf29e..a25a677d3b66 100644
--- a/target/linux/ramips/dts/mt7621_netgear_r6220.dtsi
+++ b/target/linux/ramips/dts/mt7621_netgear_r6220.dtsi
@@ -107,7 +107,7 @@
 };
 
 &ethernet {
-	mtd-mac-address = <&factory 0x00000004>;
+	mtd-mac-address = <&factory 0x4>;
 };
 
 &pinctrl {
diff --git a/target/linux/ramips/dts/mt7621_phicomm_k2p.dts b/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
index a71e5f63b800..a2bac13c7ba4 100644
--- a/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
+++ b/target/linux/ramips/dts/mt7621_phicomm_k2p.dts
@@ -109,7 +109,7 @@
 };
 
 &ethernet {
-	mtd-mac-address = <&factory 0xe006>;
+	mtd-mac-address = <&factory 0xe000>;
 };
 
 &pinctrl {
diff --git a/target/linux/ramips/dts/mt7621_planex_vr500.dts b/target/linux/ramips/dts/mt7621_planex_vr500.dts
index 46980c41361b..f0116944b131 100644
--- a/target/linux/ramips/dts/mt7621_planex_vr500.dts
+++ b/target/linux/ramips/dts/mt7621_planex_vr500.dts
@@ -81,6 +81,10 @@
 	};
 };
 
+&ethernet {
+	mtd-mac-address = <&factory 0xe000>;
+};
+
 &pinctrl {
 	state_default: pinctrl0 {
 		gpio {
-- 
2.30.2