Message ID | 20241115183346.597503-1-mail@tk154.de (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net: uevent: also pass network device driver | expand |
On Fri, 15 Nov 2024 19:33:46 +0100 Til Kaiser wrote: > Currently, for uevent, the interface name and > index are passed via shell variables. > > This commit also passes the network device > driver as a shell variable to uevent. Can you add more information to the commit message for the 'why'? I'm guessing this can only be used for local one off hacks, or can a generic (eg distro level) naming policy benefit from the driver name?
Hi, thanks for the response. I have added a short explanation to the commit message. I aim to retrieve the network interface's driver when it gets created on the Linux OpenWrt OS. OpenWrt doesn't use udev but uses its own hotplug implementation where the driver name isn't available per a shell variable. As I mentioned in my commit message, I could add the driver query to the hotplug implementation. But I think it might also be beneficial for other Linux OS that the driver name comes directly from the Linux Kernel. Furthermore, I think it's more comfortable for a user that he can directly check the driver name through the sysfs uevent file. Kind regards Til Changes in v2: - Updated the commit message to clarify the purpose of the patch.
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 05cf5347f25e..67aad5ca82f8 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -2000,6 +2000,7 @@ EXPORT_SYMBOL_GPL(net_ns_type_operations); static int netdev_uevent(const struct device *d, struct kobj_uevent_env *env) { const struct net_device *dev = to_net_dev(d); + const char *driver = netdev_drivername(dev); int retval; /* pass interface to uevent. */ @@ -2012,6 +2013,12 @@ static int netdev_uevent(const struct device *d, struct kobj_uevent_env *env) * and is what RtNetlink uses natively. */ retval = add_uevent_var(env, "IFINDEX=%d", dev->ifindex); + if (retval) + goto exit; + + if (driver[0]) + /* pass driver to uevent. */ + retval = add_uevent_var(env, "DRIVER=%s", driver); exit: return retval;
Currently, for uevent, the interface name and index are passed via shell variables. This commit also passes the network device driver as a shell variable to uevent. Signed-off-by: Til Kaiser <mail@tk154.de> --- net/core/net-sysfs.c | 7 +++++++ 1 file changed, 7 insertions(+)