aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-04-07 12:31:48 +0200
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-04-08 16:59:14 +0200
commit85aef6f627040cd0909bd549abb721eafa511353 (patch)
tree175d6b42fa1ada843b771493244dc1faf70203b1
parentc948a4782ba9e99f690a75ddf95ad76add95b5fa (diff)
downloadupstream-85aef6f627040cd0909bd549abb721eafa511353.tar.gz
upstream-85aef6f627040cd0909bd549abb721eafa511353.tar.bz2
upstream-85aef6f627040cd0909bd549abb721eafa511353.zip
ath79: fix MAC addresses for ethernet on ZyXEL NBG6716
MAC addresses of the ethernet devices (eth0 & eth1) are randomly set at boot time by the ag71xx driver, because it is currently not possible to retrieve MAC addresses in ASCII format within the DTS file. This commit works around this behaviour by setting the MAC addresses during the preinit phase. The same has been implemented recently for the Siemens WS-AP3610 in d2b8ccb1c04d ("ath79: add support for Siemens WS-AP3610"). MAC assignment in vendor firmware is as follows: use vendor address OpenWrt 2g wifi0 ethaddr -> wlan1 5g wifi1 ethaddr +1 -> wlan0 lan eth1 ethaddr +2 -> eth0 wan eth0 ethaddr +3 -> eth1 ethaddr is retrieved by $(mtd_get_mac_ascii u-boot-env ethaddr) Note that both Wifi and ethernet indexing is swapped in OpenWrt compared to vendor firmware. Suggested-by: Guillaume Lefebvre <guillaume@zelig.ch> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Tested-by: Kevin Gagnon <kevin_gagnon@videotron.ca>
-rwxr-xr-xtarget/linux/ath79/nand/base-files/etc/board.d/02_network4
-rw-r--r--target/linux/ath79/nand/base-files/lib/preinit/10_fix_eth_mac.sh14
2 files changed, 14 insertions, 4 deletions
diff --git a/target/linux/ath79/nand/base-files/etc/board.d/02_network b/target/linux/ath79/nand/base-files/etc/board.d/02_network
index 1626ec31ca..b2191eed92 100755
--- a/target/linux/ath79/nand/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/nand/base-files/etc/board.d/02_network
@@ -48,10 +48,6 @@ ath79_setup_macs()
netgear,wndr4500-v3)
wan_mac=$(mtd_get_mac_binary caldata 0x6)
;;
- zyxel,nbg6716)
- lan_mac=$(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +2)
- wan_mac=$(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +3)
- ;;
esac
[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
diff --git a/target/linux/ath79/nand/base-files/lib/preinit/10_fix_eth_mac.sh b/target/linux/ath79/nand/base-files/lib/preinit/10_fix_eth_mac.sh
new file mode 100644
index 0000000000..fdd8381f56
--- /dev/null
+++ b/target/linux/ath79/nand/base-files/lib/preinit/10_fix_eth_mac.sh
@@ -0,0 +1,14 @@
+. /lib/functions.sh
+. /lib/functions/system.sh
+
+preinit_set_mac_address() {
+ case $(board_name) in
+ zyxel,nbg6716)
+ ethaddr=$(mtd_get_mac_ascii u-boot-env ethaddr)
+ ip link set dev eth0 address $(macaddr_add $ethaddr 2)
+ ip link set dev eth1 address $(macaddr_add $ethaddr 3)
+ ;;
+ esac
+}
+
+boot_hook_add preinit_main preinit_set_mac_address