From: Til Kaiser <mail@tk154.de>
To: kuba@kernel.org
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Til Kaiser <mail@tk154.de>
Subject: [PATCH net-next v2] net: sysfs: also pass network device driver to uevent
Date: Sat, 16 Nov 2024 17:30:30 +0100 [thread overview]
Message-ID: <20241116163206.7585-2-mail@tk154.de> (raw)
In-Reply-To: <20241116163206.7585-1-mail@tk154.de>
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.
One way to retrieve a network interface's driver
name is to resolve its sysfs device/driver symlink
and then substitute leading directory components.
You could implement this yourself (e.g., like udev from
systemd does) or with Linux tools by using a combination
of readlink and shell substitution or basename.
The advantages of passing the driver directly through uevent are:
- Linux distributions don't need to implement additional code
to retrieve the driver when, e.g., interface events happen.
- There is no need to create additional process forks in shell
scripts for readlink or basename.
- If a user wants to check his network interface's driver on the
command line, he can directly read it from the sysfs uevent file.
Signed-off-by: Til Kaiser <mail@tk154.de>
---
net/core/net-sysfs.c | 7 +++++++
1 file changed, 7 insertions(+)
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;
--
2.47.0
next prev parent reply other threads:[~2024-11-16 16:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-15 18:33 [PATCH net-next] net: uevent: also pass network device driver Til Kaiser
2024-11-15 22:06 ` Jakub Kicinski
2024-11-16 16:30 ` Til Kaiser
2024-11-16 16:30 ` Til Kaiser [this message]
2024-11-19 1:55 ` [PATCH net-next v2] net: sysfs: also pass network device driver to uevent Jakub Kicinski
2024-12-05 16:28 ` Til Kaiser
2024-12-06 7:13 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241116163206.7585-2-mail@tk154.de \
--to=mail@tk154.de \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.