mediatek: store MAC address in boot partition on Banana Pi R2

Like many boards, the Banana Pi R2 doesn't have permanant storage of
its MAC address, and we store the first random one that the kernel
generates in order to use it later and at least be consistent.

Store it in the FAT boot partition, just as the U7623 board (and others)
do.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
David Woodhouse 2020-06-14 14:20:36 +01:00 committed by Petr Štetiar
parent 7adc29f59e
commit e19ffb25d9

View file

@ -1,23 +1,19 @@
# Copyright (C) 2018 OpenWrt.org # Copyright (C) 2018 OpenWrt.org
RECOVERY_PART=/dev/mmcblk0p1 . /lib/functions.sh
. /lib/functions/system.sh
preinit_set_mac_address() { set_recovery_mac_address() {
local RECOVERY_PART="$1"
local mac local mac
. /lib/functions.sh
. /lib/functions/system.sh
case $(board_name) in
unielec,u7623-02-emmc-512m)
if [ -b $RECOVERY_PART ]; then if [ -b $RECOVERY_PART ]; then
insmod nls_cp437 insmod nls_cp437
insmod nls_iso8859-1 insmod nls_iso8859-1
insmod fat insmod fat
insmod vfat insmod vfat
mkdir -p /tmp/recovery mkdir -p /tmp/recovery
mount -o rw,noatime $RECOVERY_PART /tmp/recovery if mount -o rw,noatime $RECOVERY_PART -t vfat /tmp/recovery; then
if [ -f "/tmp/recovery/mac_addr" ]; if [ -f "/tmp/recovery/mac_addr" ];
then then
mac=$(cat /tmp/recovery/mac_addr) mac=$(cat /tmp/recovery/mac_addr)
@ -28,8 +24,7 @@ preinit_set_mac_address() {
sync sync
umount /tmp/recovery umount /tmp/recovery
rm -rf /tmp/recovery rmdir /tmp/recovery
fi
ip link set dev wan address $mac 2> /dev/null ip link set dev wan address $mac 2> /dev/null
@ -39,6 +34,24 @@ preinit_set_mac_address() {
ip link set dev lan1 address $mac 2>/dev/null ip link set dev lan1 address $mac 2>/dev/null
ip link set dev lan2 address $mac 2>/dev/null ip link set dev lan2 address $mac 2>/dev/null
ip link set dev lan3 address $mac 2>/dev/null ip link set dev lan3 address $mac 2>/dev/null
fi
fi
}
preinit_set_mac_address() {
local rootpart
case $(board_name) in
bananapi,bpi-r2)
rootpart=$(cat /proc/cmdline)
rootpart="${rootpart##*root=}"
rootpart="${rootpart%%p3 *}"
if [ "$rootpart" = "/dev/mmcblk0" -o "$rootpart" = "/dev/mmcblk1" ]; then
set_recovery_mac_address ${rootpart}p2
fi
;;
unielec,u7623-02-emmc-512m)
set_recovery_mac_address /dev/mmcblk0p1
;; ;;
esac esac
} }