net/vxlan: Add ethtool drvinfo
authorYan Burman <yanb@mellanox.com>
Tue, 29 Jan 2013 23:43:07 +0000 (23:43 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 31 Jan 2013 03:47:22 +0000 (22:47 -0500)
Implement ethtool get_drvinfo.

Signed-off-by: Yan Burman <yanb@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c

index 656230e..72485b9 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/etherdevice.h>
 #include <linux/if_ether.h>
 #include <linux/hash.h>
+#include <linux/ethtool.h>
 #include <net/arp.h>
 #include <net/ndisc.h>
 #include <net/ip.h>
@@ -1271,6 +1272,18 @@ static int vxlan_validate(struct nlattr *tb[], struct nlattr *data[])
        return 0;
 }
 
+static void vxlan_get_drvinfo(struct net_device *netdev,
+                             struct ethtool_drvinfo *drvinfo)
+{
+       strlcpy(drvinfo->version, VXLAN_VERSION, sizeof(drvinfo->version));
+       strlcpy(drvinfo->driver, "vxlan", sizeof(drvinfo->driver));
+}
+
+static const struct ethtool_ops vxlan_ethtool_ops = {
+       .get_drvinfo    = vxlan_get_drvinfo,
+       .get_link       = ethtool_op_get_link,
+};
+
 static int vxlan_newlink(struct net *net, struct net_device *dev,
                         struct nlattr *tb[], struct nlattr *data[])
 {
@@ -1348,6 +1361,8 @@ static int vxlan_newlink(struct net *net, struct net_device *dev,
                vxlan->port_max = ntohs(p->high);
        }
 
+       SET_ETHTOOL_OPS(dev, &vxlan_ethtool_ops);
+
        err = register_netdevice(dev);
        if (!err)
                hlist_add_head_rcu(&vxlan->hlist, vni_head(net, vxlan->vni));