Staging: hv: add basic ethtool support
authorStephen Hemminger <shemminger@vyatta.com>
Tue, 4 May 2010 16:58:57 +0000 (09:58 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 11 May 2010 18:36:10 +0000 (11:36 -0700)
Ethtool allows querying device information and controlling parameters.
For now just add ability to turn on/off scatter/gather.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/netvsc_drv.c

index a6ca01025e48c6f24b33ea117be3720fa68996ef..a6584a87661888cddf0dd5f5de957a76ef1ffb11 100644 (file)
@@ -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, &ethtool_ops);
        SET_NETDEV_DEV(net, device);
 
        ret = register_netdev(net);