On Tue, 3 Dec 2024 08:39:47 +0900 'Dominique MARTINET' wrote:
If that is what was intended, I am fine with this, but I think these local ppp usb interfaces are rather common in the cheap modem world.
Which will work, as long as they are marked appropriately; that is marked with FLAG_POINTTOPOINT.
Hmm, but the check here was either FLAG_POINTTOPOINT being unset or not locally administered address, so to keep the usb0 name we need both?
if ((dev->driver_info->flags & FLAG_ETHER) != 0 && ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||
(net->dev_addr [0] & 0x02) == 0))
/* somebody touched it*/
!is_zero_ether_addr(net->dev_addr))) strscpy(net->name, "eth%d", sizeof(net->name));
i.e., something that didn't have FLAG_POINTTOPOINT in the first place would not get into this mac consideration, so it must be set.
Right! I missed the && plus ||
My problematic device here has FLAG_POINTTOPOINT and a (locally admistered) mac address set, so it was not renamed up till now, but the new check makes the locally admistered mac address being set mean that it is no longer eligible to keep the usbX name.
Ideally, udev would be the best option, like Greg said. This driver is already a fragile pile of workarounds.
If you really really want the old behavior tho, let's convert the zero check to !is_zero_ether_addr() && !is_local_ether_addr(). Maybe factor out the P2P + address validation to a helper because the && vs || is getting complicated.