aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/stmmac
diff options
context:
space:
mode:
authorRichard Cochran <richardcochran@gmail.com>2010-07-17 04:48:55 -0400
committerDavid S. Miller <davem@davemloft.net>2010-07-18 22:15:25 -0400
commit28b041139e344ecd0f144d6205b004ae354cfa1e (patch)
tree7fc0e05d01717da0410a7b3252b0cac3fc8db81d /drivers/net/stmmac
parent4507a71507d4ff37e9a499c4241b7701ed1feab4 (diff)
net: preserve ifreq parameter when calling generic phy_mii_ioctl().
The phy_mii_ioctl() function unnecessarily throws away the original ifreq. We need access to the ifreq in order to support PHYs that can perform hardware time stamping. Two maverick drivers filter the ioctl commands passed to phy_mii_ioctl(). This is unnecessary since phylib will check the command in any case. Signed-off-by: Richard Cochran <richard.cochran@omicron.at> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/stmmac')
-rw-r--r--drivers/net/stmmac/stmmac_main.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c
index a31d580f306d..acf061686940 100644
--- a/drivers/net/stmmac/stmmac_main.c
+++ b/drivers/net/stmmac/stmmac_main.c
@@ -1437,24 +1437,18 @@ static void stmmac_poll_controller(struct net_device *dev)
1437static int stmmac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) 1437static int stmmac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
1438{ 1438{
1439 struct stmmac_priv *priv = netdev_priv(dev); 1439 struct stmmac_priv *priv = netdev_priv(dev);
1440 int ret = -EOPNOTSUPP; 1440 int ret;
1441 1441
1442 if (!netif_running(dev)) 1442 if (!netif_running(dev))
1443 return -EINVAL; 1443 return -EINVAL;
1444 1444
1445 switch (cmd) { 1445 if (!priv->phydev)
1446 case SIOCGMIIPHY: 1446 return -EINVAL;
1447 case SIOCGMIIREG: 1447
1448 case SIOCSMIIREG: 1448 spin_lock(&priv->lock);
1449 if (!priv->phydev) 1449 ret = phy_mii_ioctl(priv->phydev, rq, cmd);
1450 return -EINVAL; 1450 spin_unlock(&priv->lock);
1451 1451
1452 spin_lock(&priv->lock);
1453 ret = phy_mii_ioctl(priv->phydev, if_mii(rq), cmd);
1454 spin_unlock(&priv->lock);
1455 default:
1456 break;
1457 }
1458 return ret; 1452 return ret;
1459} 1453}
1460 1454