realtek: use full range of assigned MAC addresses
authorBjørn Mork <bjorn@mork.no>
Mon, 12 Apr 2021 12:27:25 +0000 (14:27 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 28 Nov 2021 21:43:08 +0000 (22:43 +0100)
Some devices are assigned globally unique MAC addresses for all
ports. These are stored by U-Boot in the second U-Boot enviroment
("sysinfo") as a range of start and end address.

Use the full range if provided.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
target/linux/realtek/base-files/etc/board.d/02_network

index 4eeb5768e35c823935af9ea9ca56101e90aa87c2..93d6d4bd1e73c76f31a5253dd4db823c57c44854 100644 (file)
@@ -25,11 +25,14 @@ ucidef_set_bridge_device switch
 ucidef_set_interface_lan "$lan_list"
 
 lan_mac=""
+lan_mac_end=""
 label_mac=""
 case $board in
 *)
-       lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
-       label_mac=$lan_mac
+       lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
+       lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
+       label_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
+       [ -z "$lan_mac" ] && lan_mac=$label_mac
        ;;
 esac
 
@@ -38,7 +41,7 @@ ucidef_set_bridge_mac "$lan_mac"
 ucidef_set_network_device_mac eth0 $lan_mac
 for lan in $lan_list; do
        ucidef_set_network_device_mac $lan $lan_mac
-       lan_mac=$(macaddr_setbit_la $lan_mac)
+       [ -z "$lan_mac_end" ] || [ "$lan_mac" == "$lan_mac_end" ] && lan_mac=$(macaddr_setbit_la $lan_mac)
        lan_mac=$(macaddr_add $lan_mac 1)
 done
 [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac