arm: board: Random way to change multiple mac addresses

Change-Id: I11f93717fae567daaba4801979fb38c74e7b4e83
Signed-off-by: David Wu <david.wu@rock-chips.com>
This commit is contained in:
David Wu 2020-12-22 19:10:16 +08:00 committed by Jianhong Chen
parent 98637248d5
commit 2cde40a19f
1 changed files with 14 additions and 2 deletions

View File

@ -93,12 +93,24 @@ static int rockchip_set_ethaddr(void)
char buf[ARP_HLEN_ASCII + 1], mac[16];
u8 ethaddr[ARP_HLEN * MAX_ETHERNET] = {0};
int ret, i;
bool need_write = false;
bool need_write = false, randomed = false;
ret = vendor_storage_read(VENDOR_LAN_MAC_ID, ethaddr, sizeof(ethaddr));
for (i = 0; i < MAX_ETHERNET; i++) {
if (ret <= 0 || !is_valid_ethaddr(&ethaddr[i * ARP_HLEN])) {
if (!randomed) {
net_random_ethaddr(&ethaddr[i * ARP_HLEN]);
randomed = true;
} else {
if (i > 0) {
memcpy(&ethaddr[i * ARP_HLEN],
&ethaddr[(i - 1) * ARP_HLEN],
ARP_HLEN);
ethaddr[i * ARP_HLEN] |= 0x02;
ethaddr[i * ARP_HLEN] += (i << 2);
}
}
need_write = true;
}