ucc_geth driver: add ioctl
authorSergey Matyukevich <geomatsi@gmail.com>
Mon, 7 Jun 2010 08:38:13 +0000 (08:38 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 12 Jun 2010 22:26:07 +0000 (15:26 -0700)
ioctl operation (ndo_do_ioctl) is added to make mii-tools work

Signed-off-by: Sergey Matyukevich <geomatsi@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ucc_geth.c

index 4a34833b85ddad284c1f19efff1bf9d23ed7f7e1..538148a3a142bf6640fb2bc6d1f386839ec74dbf 100644 (file)
@@ -3702,6 +3702,19 @@ static phy_interface_t to_phy_interface(const char *phy_connection_type)
        return PHY_INTERFACE_MODE_MII;
 }
 
+static int ucc_geth_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
+{
+       struct ucc_geth_private *ugeth = netdev_priv(dev);
+
+       if (!netif_running(dev))
+               return -EINVAL;
+
+       if (!ugeth->phydev)
+               return -ENODEV;
+
+       return phy_mii_ioctl(ugeth->phydev, if_mii(rq), cmd);
+}
+
 static const struct net_device_ops ucc_geth_netdev_ops = {
        .ndo_open               = ucc_geth_open,
        .ndo_stop               = ucc_geth_close,
@@ -3711,6 +3724,7 @@ static const struct net_device_ops ucc_geth_netdev_ops = {
        .ndo_change_mtu         = eth_change_mtu,
        .ndo_set_multicast_list = ucc_geth_set_multi,
        .ndo_tx_timeout         = ucc_geth_timeout,
+       .ndo_do_ioctl           = ucc_geth_ioctl,
 #ifdef CONFIG_NET_POLL_CONTROLLER
        .ndo_poll_controller    = ucc_netpoll,
 #endif