In practice (as found in the OpenWrt project) many devices with multiple ethernet interfaces just store a base MAC address in NVMEM and increase the lowermost byte with one for each interface, so as to occupy less NVMEM. Here is an example patch from the Linksys WRT300N router that was used before we had device tree: f = ioremap(IXP4XX_EXP_BUS_BASE(0), 0x60000); if (f) { for (i = 0; i < 6; i++) { wrt300nv2_plat_eth[0].hwaddr[i] = readb(f + 0x5FFA0 + i); if (i == 5) offset = 1; wrt300nv2_plat_eth[1].hwaddr[i] = (wrt300nv2_plat_eth[0].hwaddr[i] + offset); } } iounmap(f); In order to support this scheme directly from device tree we need some way to encode the same into device tree, this patchset provides that. Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> --- Linus Walleij (2): dt-bindings: net: ethernet-controller: Add mac offset option net: of: Support adding offset to nvmem MAC addresses .../devicetree/bindings/net/ethernet-controller.yaml | 12 ++++++++++++ net/core/of_net.c | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) --- base-commit: 40384c840ea1944d7c5a392e8975ed088ecf0b37 change-id: 20241219-net-mac-nvmem-offset-22b6218a4b0f Best regards, -- Linus Walleij <linus.walleij@xxxxxxxxxx>