]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: thunderbolt: Allow changing MAC address of the device
authorMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 15 Jan 2026 11:56:43 +0000 (12:56 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 19 Jan 2026 20:09:57 +0000 (12:09 -0800)
The MAC address we use is based on a suggestion in the USB4 Inter-domain
spec but it is not really used in the USB4NET protocol. It is more
targeted for the upper layers of the network stack. There is no reason
why it should not be changed by the userspace for example if needed for
bonding.

Reported-by: Ian MacDonald <ian@netstatz.com>
Closes: https://lore.kernel.org/netdev/CAFJzfF9N4Hak23sc-zh0jMobbkjK7rg4odhic1DQ1cC+=MoQoA@mail.gmail.com/
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Link: https://patch.msgid.link/20260115115646.328898-2-mika.westerberg@linux.intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/thunderbolt/main.c

index dcaa62377808c290fa3103347f6089c942f04057..57b226afeb844a2725a8a23bfa24439211e6b403 100644 (file)
@@ -1261,6 +1261,7 @@ static const struct net_device_ops tbnet_netdev_ops = {
        .ndo_open = tbnet_open,
        .ndo_stop = tbnet_stop,
        .ndo_start_xmit = tbnet_start_xmit,
+       .ndo_set_mac_address = eth_mac_addr,
        .ndo_get_stats64 = tbnet_get_stats64,
 };
 
@@ -1281,6 +1282,9 @@ static void tbnet_generate_mac(struct net_device *dev)
        hash = jhash2((u32 *)xd->local_uuid, 4, hash);
        addr[5] = hash & 0xff;
        eth_hw_addr_set(dev, addr);
+
+       /* Allow changing it if needed */
+       dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
 }
 
 static int tbnet_probe(struct tb_service *svc, const struct tb_service_id *id)