diff options
author | Chris Healy <cphealy@gmail.com> | 2013-06-17 10:25:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-17 19:34:14 -0400 |
commit | 32bc9b46d840d08e1c8f58eaf500d0e596c33659 (patch) | |
tree | f6f67d111b0fa05643241e402e28973de40182b0 | |
parent | cedb743f3e8db12cc76a706888792497953e93bb (diff) |
fec: Add support to restart autonegotiate
Add ethtool operation to restart autonegotiation via the PHY.
Tested on i.MX28EVK.
Signed-off-by: Chris Healy <cphealy@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index c540055e4f4f..46f2544fd1a7 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c | |||
@@ -1435,6 +1435,17 @@ static int fec_enet_set_pauseparam(struct net_device *ndev, | |||
1435 | return 0; | 1435 | return 0; |
1436 | } | 1436 | } |
1437 | 1437 | ||
1438 | static int fec_enet_nway_reset(struct net_device *dev) | ||
1439 | { | ||
1440 | struct fec_enet_private *fep = netdev_priv(dev); | ||
1441 | struct phy_device *phydev = fep->phy_dev; | ||
1442 | |||
1443 | if (!phydev) | ||
1444 | return -ENODEV; | ||
1445 | |||
1446 | return genphy_restart_aneg(phydev); | ||
1447 | } | ||
1448 | |||
1438 | static const struct ethtool_ops fec_enet_ethtool_ops = { | 1449 | static const struct ethtool_ops fec_enet_ethtool_ops = { |
1439 | .get_pauseparam = fec_enet_get_pauseparam, | 1450 | .get_pauseparam = fec_enet_get_pauseparam, |
1440 | .set_pauseparam = fec_enet_set_pauseparam, | 1451 | .set_pauseparam = fec_enet_set_pauseparam, |
@@ -1443,6 +1454,7 @@ static const struct ethtool_ops fec_enet_ethtool_ops = { | |||
1443 | .get_drvinfo = fec_enet_get_drvinfo, | 1454 | .get_drvinfo = fec_enet_get_drvinfo, |
1444 | .get_link = ethtool_op_get_link, | 1455 | .get_link = ethtool_op_get_link, |
1445 | .get_ts_info = fec_enet_get_ts_info, | 1456 | .get_ts_info = fec_enet_get_ts_info, |
1457 | .nway_reset = fec_enet_nway_reset, | ||
1446 | }; | 1458 | }; |
1447 | 1459 | ||
1448 | static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) | 1460 | static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd) |