net: mvpp2: implement ioctl() operation for PHY ioctls
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Sun, 27 Jul 2014 21:21:36 +0000 (23:21 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 29 Jul 2014 23:47:43 +0000 (16:47 -0700)
This commit implements the ->ndo_do_ioctl() operation so that the
PHY-related ioctl() calls can work from userspace, which allows
applications like mii-tool or mii-diag to do their job.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/mvpp2.c

index 3cae3d2abe7e3e18dce3600d89820f32a6ee4e48..ece83f101526de02fac0af5ccf0f85c88d440670 100644 (file)
@@ -5714,6 +5714,21 @@ mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
        return stats;
 }
 
+static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+{
+       struct mvpp2_port *port = netdev_priv(dev);
+       int ret;
+
+       if (!port->phy_dev)
+               return -ENOTSUPP;
+
+       ret = phy_mii_ioctl(port->phy_dev, ifr, cmd);
+       if (!ret)
+               mvpp2_link_event(dev);
+
+       return ret;
+}
+
 /* Ethtool methods */
 
 /* Get settings (phy address, speed) for ethtools */
@@ -5868,6 +5883,7 @@ static const struct net_device_ops mvpp2_netdev_ops = {
        .ndo_set_mac_address    = mvpp2_set_mac_address,
        .ndo_change_mtu         = mvpp2_change_mtu,
        .ndo_get_stats64        = mvpp2_get_stats64,
+       .ndo_do_ioctl           = mvpp2_ioctl,
 };
 
 static const struct ethtool_ops mvpp2_eth_tool_ops = {