Message ID | 20240605153340.25694-1-gmazyland@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | cb6cf0820f22ca36dc8f95cf1bd196e5ec24e69d |
Headers | show |
Series | r8152: Set NET_ADDR_STOLEN if using passthru MAC | expand |
On Wed, Jun 05, 2024 at 05:33:40PM +0200, Milan Broz wrote: > Some docks support MAC pass-through - MAC address > is taken from another device. > > Driver should indicate that with NET_ADDR_STOLEN flag. > > This should help to avoid collisions if network interface > names are generated with MAC policy. > > Reported and discussed here > https://github.com/systemd/systemd/issues/33104 MAC pass-through is broken, and expected to cause problems. We strongly push back on any patches trying to add more instances of it. Ideally it needs to be done in user space where you have full access to the tree of devices, can determine if the device getting the MAC address really is in a dock, is the first dock in a chain of docks, and not a USB dongle etc. Using NET_ADDR_STOLEN is interesting. It is currently used in bonding, when the bond device takes the MAC address from one of its slaves. It is also used with VLAN interfaces, which inherit the MAC address of the base interface. There is a clear relationship between the two interfaces using the same MAC address. However in the pass through case, the interfaces are unrelated. However, the code says: #define NET_ADDR_STOLEN 2 /* address is stolen from other device */ which is exactly what is happening here. > Signed-off-by: Milan Broz <gmazyland@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Wed, 5 Jun 2024 17:33:40 +0200 you wrote: > Some docks support MAC pass-through - MAC address > is taken from another device. > > Driver should indicate that with NET_ADDR_STOLEN flag. > > This should help to avoid collisions if network interface > names are generated with MAC policy. > > [...] Here is the summary with links: - r8152: Set NET_ADDR_STOLEN if using passthru MAC https://git.kernel.org/netdev/net-next/c/cb6cf0820f22 You are awesome, thank you!
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 19df1cd9f072..ea5c5be4a958 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1774,6 +1774,7 @@ static int vendor_mac_passthru_addr_read(struct r8152 *tp, struct sockaddr *sa) goto amacout; } memcpy(sa->sa_data, buf, 6); + tp->netdev->addr_assign_type = NET_ADDR_STOLEN; netif_info(tp, probe, tp->netdev, "Using pass-thru MAC addr %pM\n", sa->sa_data);
Some docks support MAC pass-through - MAC address is taken from another device. Driver should indicate that with NET_ADDR_STOLEN flag. This should help to avoid collisions if network interface names are generated with MAC policy. Reported and discussed here https://github.com/systemd/systemd/issues/33104 Signed-off-by: Milan Broz <gmazyland@gmail.com> --- drivers/net/usb/r8152.c | 1 + 1 file changed, 1 insertion(+)