From f82f4ad7bf9dc3c7268080cc2afdff897e1d72ca Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 4 May 2010 09:58:57 -0700 Subject: [PATCH] Staging: hv: add basic ethtool support Ethtool allows querying device information and controlling parameters. For now just add ability to turn on/off scatter/gather. Signed-off-by: Stephen Hemminger Acked-by: Hank Janssen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/hv/netvsc_drv.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c index a6ca01025e48..a6584a876618 100644 --- a/drivers/staging/hv/netvsc_drv.c +++ b/drivers/staging/hv/netvsc_drv.c @@ -326,6 +326,21 @@ static int netvsc_recv_callback(struct hv_device *device_obj, return 0; } +static void netvsc_get_drvinfo(struct net_device *net, + struct ethtool_drvinfo *info) +{ + strcpy(info->driver, "hv_netvsc"); + strcpy(info->version, HV_DRV_VERSION); + strcpy(info->fw_version, "N/A"); +} + +static const struct ethtool_ops ethtool_ops = { + .get_drvinfo = netvsc_get_drvinfo, + .get_sg = ethtool_op_get_sg, + .set_sg = ethtool_op_set_sg, + .get_link = ethtool_op_get_link, +}; + static const struct net_device_ops device_ops = { .ndo_open = netvsc_open, .ndo_stop = netvsc_close, @@ -396,6 +411,7 @@ static int netvsc_probe(struct device *device) /* TODO: Add GSO and Checksum offload */ net->features = NETIF_F_SG; + SET_ETHTOOL_OPS(net, ðtool_ops); SET_NETDEV_DEV(net, device); ret = register_netdev(net);