Message ID | 201008051302.06045.rusty@rustcorp.com.au |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 2010-08-05 at 13:02 +0930, Rusty Russell wrote: > I often use "ethtool -i" command to check what driver controls the > ehternet device. But because current virtio_net driver doesn't > support "ethtool -i", it becomes the following: > > # ethtool -i eth3 > Cannot get driver information: Operation not supported > > This patch simply adds the "ethtool -i" support. The following is the > result when using the virtio_net driver with my patch applied to. > > # ethtool -i eth3 > driver: virtio_net > version: N/A > firmware-version: N/A > bus-info: virtio0 > > Personally, "-i" is one of the most frequently-used option, and most > network drivers support "ethtool -i", so I think virtio_net also > should do. [...] This information is already available generically through sysfs: basename $(readlink /sys/class/net/eth3/device) basename $(readlink /sys/class/net/eth3/device/driver) Given that, we should either recommend that people use that method instead, or we should add an equivalent default implementation of the get_drvinfo operation. Ben.
From: Ben Hutchings <bhutchings@solarflare.com> Date: Thu, 05 Aug 2010 04:47:21 +0100 > On Thu, 2010-08-05 at 13:02 +0930, Rusty Russell wrote: >> I often use "ethtool -i" command to check what driver controls the >> ehternet device. But because current virtio_net driver doesn't >> support "ethtool -i", it becomes the following: >> >> # ethtool -i eth3 >> Cannot get driver information: Operation not supported >> >> This patch simply adds the "ethtool -i" support. The following is the >> result when using the virtio_net driver with my patch applied to. >> >> # ethtool -i eth3 >> driver: virtio_net >> version: N/A >> firmware-version: N/A >> bus-info: virtio0 >> >> Personally, "-i" is one of the most frequently-used option, and most >> network drivers support "ethtool -i", so I think virtio_net also >> should do. > [...] > > This information is already available generically through sysfs: > basename $(readlink /sys/class/net/eth3/device) > basename $(readlink /sys/class/net/eth3/device/driver) > > Given that, we should either recommend that people use that method > instead, or we should add an equivalent default implementation of the > get_drvinfo operation. We've had ethtool for nearly a decade, it's a standard facility and it's only wise to have all drivers implement as much of the API as possible. As such I've applied Rusty's patch and I will apply any patch which makes a driver more fully provide support for all ethtool facilities. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> This information is already available generically through sysfs: > basename $(readlink /sys/class/net/eth3/device) > basename $(readlink /sys/class/net/eth3/device/driver) > > Given that, we should either recommend that people use that method > instead sysfs-rules.txt::"Accessing /sys/class/net/eth0/device is a bug in the application." I understand Dave has accepted the patch already(which is perfect). I'm not being sarcastic but I really want to understand if I can access these nodes. Chetan Loke
On Fri, 2010-08-06 at 11:59 -0400, Loke, Chetan wrote: > > This information is already available generically through sysfs: > > basename $(readlink /sys/class/net/eth3/device) > > basename $(readlink /sys/class/net/eth3/device/driver) > > > > Given that, we should either recommend that people use that method > > instead > > sysfs-rules.txt::"Accessing /sys/class/net/eth0/device is a bug in the application." > > I understand Dave has accepted the patch already(which is perfect). > I'm not being sarcastic but I really want to understand if I can > access these nodes. You should probably believe that document rather than me. Ben.
Index: net-next.35/drivers/net/virtio_net.c =================================================================== --- net-next.35.orig/drivers/net/virtio_net.c +++ net-next.35/drivers/net/virtio_net.c @@ -701,6 +701,19 @@ static int virtnet_close(struct net_devi return 0; } +static void virtnet_get_drvinfo(struct net_device *dev, + struct ethtool_drvinfo *drvinfo) +{ + struct virtnet_info *vi = netdev_priv(dev); + struct virtio_device *vdev = vi->vdev; + + strncpy(drvinfo->driver, KBUILD_MODNAME, ARRAY_SIZE(drvinfo->driver)); + strncpy(drvinfo->version, "N/A", ARRAY_SIZE(drvinfo->version)); + strncpy(drvinfo->fw_version, "N/A", ARRAY_SIZE(drvinfo->fw_version)); + strncpy(drvinfo->bus_info, dev_name(&vdev->dev), + ARRAY_SIZE(drvinfo->bus_info)); +} + static int virtnet_set_tx_csum(struct net_device *dev, u32 data) { struct virtnet_info *vi = netdev_priv(dev); @@ -813,6 +825,7 @@ static void virtnet_vlan_rx_kill_vid(str } static const struct ethtool_ops virtnet_ethtool_ops = { + .get_drvinfo = virtnet_get_drvinfo, .set_tx_csum = virtnet_set_tx_csum, .set_sg = ethtool_op_set_sg, .set_tso = ethtool_op_set_tso,