diff mbox series

[OpenWrt-Devel,v2,07/14] ath79/mikrotik: don't use mtd-mac-address in DTS

Message ID 20200420133503.18700-8-hacks@slashdirt.org
State Accepted
Delegated to: Koen Vandeputte
Headers show
Series RouterBOARD sysfs driver for RouterBoot data | expand

Commit Message

Thibaut April 20, 2020, 1:34 p.m. UTC
As evidenced here[1] the device MAC address can be stored at a random
offset in the hard_config partition. Rely on sysfs to update the MAC
address correctly.

Note: this will trigger a harmless kernel message during boot:
ag71xx 19000000.eth: invalid MAC address, using random address

There is no clean workaround to prevent this message from being emitted.

[1] https://github.com/openwrt/openwrt/pull/2850#issuecomment-610809021

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
---
 .../ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts     | 3 ---
 .../ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts      | 2 --
 target/linux/ath79/mikrotik/base-files/etc/board.d/02_network      | 7 +++++++
 3 files changed, 7 insertions(+), 5 deletions(-)

Comments

Adrian Schmutzler April 20, 2020, 1:58 p.m. UTC | #1
Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org]
> On Behalf Of Thibaut VARÈNE
> Sent: Montag, 20. April 2020 15:35
> To: openwrt-devel@lists.openwrt.org
> Cc: Thibaut VARÈNE <hacks@slashdirt.org>; koen.vandeputte@ncentric.com
> Subject: [OpenWrt-Devel] [PATCH v2 07/14] ath79/mikrotik: don't use mtd-
> mac-address in DTS
> 
> As evidenced here[1] the device MAC address can be stored at a random
> offset in the hard_config partition. Rely on sysfs to update the MAC address
> correctly.
> 
> Note: this will trigger a harmless kernel message during boot:
> ag71xx 19000000.eth: invalid MAC address, using random address
> 
> There is no clean workaround to prevent this message from being emitted.
> 
> [1] https://github.com/openwrt/openwrt/pull/2850#issuecomment-
> 610809021
> 
> Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
> ---
>  .../ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts     | 3 ---
>  .../ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts      | 2 --
>  target/linux/ath79/mikrotik/base-files/etc/board.d/02_network      | 7
> +++++++
>  3 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-
> 5hact2hnd.dts b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-
> wap-g-5hact2hnd.dts
> index 529ac1cf3b..3c0dc84a37 100644
> --- a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-
> 5hact2hnd.dts
> +++ b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-
> 5hact2hn
> +++ d.dts
> @@ -11,7 +11,6 @@
>  	model = "MikroTik RouterBOARD wAP G-5HacT2HnD";
> 
>  	aliases {
> -		label-mac-device = &eth1;
>  		mdio-gpio1 = &mdio2;
>  		serial0 = &uart;
>  	};
> @@ -53,8 +52,6 @@
>  &eth1 {
>  	status = "okay";
> 
> -	mtd-mac-address = <&hard_config 0x10>;
> -
>  	pll-data = <0x03000101 0x80000101 0x80001313>;
>  	phy-handle = <&phy0>;
> 
> diff --git a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-
> 5hpacd.dts b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-
> 922uags-5hpacd.dts
> index 3f2a1a51a6..ff806ff88d 100644
> --- a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-
> 5hpacd.dts
> +++ b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-
> 5hpacd
> +++ .dts
> @@ -11,7 +11,6 @@
>  	model = "MikroTik RouterBOARD 922UAGS-5HPacD";
> 
>  	aliases {
> -		label-mac-device = &eth0;
>  		led-boot = &led_user;
>  		led-failsafe = &led_user;
>  		led-upgrade = &led_user;
> @@ -80,7 +79,6 @@
>  &eth0 {
>  	status = "okay";
> 
> -	mtd-mac-address = <&hard_config 0x10>;
>  	phy-handle = <&phy4>;
>  	pll-data = <0x8f000000 0xa0000101 0xa0001313>;
> 
> diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
> b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
> index ee795c7496..20c670f702 100755
> --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
> @@ -21,8 +21,15 @@ ath79_setup_interfaces()
>  ath79_setup_macs()
>  {
>  	local board="$1"
> +	local lan_mac=""
> +	local wan_mac=""
> +	local mac_base="/sys/firmware/mikrotik/hard_config/mac_base"

One of the concepts I tried to maintain for this section has been to always deal with MAC addresses directly (and not other types of data, like a path in this case).
Thus, I'd prefer to have

local mac_base="$(cat /sys/firmware/mikrotik/hard_config/mac_base)"

and

lan_mac="$mac_base"
...

Despite, we save one cat ...

Despite that, you removed the label-mac-device above, so one should add it as label_mac here.

Best

Adrian

> 
>  	case "$board" in
> +	*)
> +		lan_mac="$(cat $mac_base)"
> +		wan_mac="$(cat $mac_base)"
> +		;;
>  	esac
> 
>  	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
> --
> 2.11.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Thibaut April 20, 2020, 2:01 p.m. UTC | #2
Hi,

> Le 20 avr. 2020 à 15:58, <mail@adrianschmutzler.de> <mail@adrianschmutzler.de> a écrit :
> 
> Hi,
> 
>> 
>> diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
>> b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
>> index ee795c7496..20c670f702 100755
>> --- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
>> +++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
>> @@ -21,8 +21,15 @@ ath79_setup_interfaces()
>> ath79_setup_macs()
>> {
>> 	local board="$1"
>> +	local lan_mac=""
>> +	local wan_mac=""
>> +	local mac_base="/sys/firmware/mikrotik/hard_config/mac_base"
> 
> One of the concepts I tried to maintain for this section has been to always deal with MAC addresses directly (and not other types of data, like a path in this case).
> Thus, I'd prefer to have
> 
> local mac_base="$(cat /sys/firmware/mikrotik/hard_config/mac_base)"
> 
> and
> 
> lan_mac="$mac_base"
> ...
> 
> Despite, we save one cat ...
> 
> Despite that, you removed the label-mac-device above, so one should add it as label_mac here.

OK, will fix right away.

Thanks,
Thibaut
diff mbox series

Patch

diff --git a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
index 529ac1cf3b..3c0dc84a37 100644
--- a/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
+++ b/target/linux/ath79/dts/qca9556_mikrotik_routerboard-wap-g-5hact2hnd.dts
@@ -11,7 +11,6 @@ 
 	model = "MikroTik RouterBOARD wAP G-5HacT2HnD";
 
 	aliases {
-		label-mac-device = &eth1;
 		mdio-gpio1 = &mdio2;
 		serial0 = &uart;
 	};
@@ -53,8 +52,6 @@ 
 &eth1 {
 	status = "okay";
 
-	mtd-mac-address = <&hard_config 0x10>;
-
 	pll-data = <0x03000101 0x80000101 0x80001313>;
 	phy-handle = <&phy0>;
 
diff --git a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
index 3f2a1a51a6..ff806ff88d 100644
--- a/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
+++ b/target/linux/ath79/dts/qca9558_mikrotik_routerboard-922uags-5hpacd.dts
@@ -11,7 +11,6 @@ 
 	model = "MikroTik RouterBOARD 922UAGS-5HPacD";
 
 	aliases {
-		label-mac-device = &eth0;
 		led-boot = &led_user;
 		led-failsafe = &led_user;
 		led-upgrade = &led_user;
@@ -80,7 +79,6 @@ 
 &eth0 {
 	status = "okay";
 
-	mtd-mac-address = <&hard_config 0x10>;
 	phy-handle = <&phy4>;
 	pll-data = <0x8f000000 0xa0000101 0xa0001313>;
 
diff --git a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
index ee795c7496..20c670f702 100755
--- a/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/mikrotik/base-files/etc/board.d/02_network
@@ -21,8 +21,15 @@  ath79_setup_interfaces()
 ath79_setup_macs()
 {
 	local board="$1"
+	local lan_mac=""
+	local wan_mac=""
+	local mac_base="/sys/firmware/mikrotik/hard_config/mac_base"
 
 	case "$board" in
+	*)
+		lan_mac="$(cat $mac_base)"
+		wan_mac="$(cat $mac_base)"
+		;;
 	esac
 
 	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac