drivers: net: xgene: ethtool: Use phy_ethtool_gset and sset
authorIyappan Subramanian <isubramanian@apm.com>
Tue, 26 Jul 2016 00:12:44 +0000 (17:12 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Jul 2016 04:51:43 +0000 (21:51 -0700)
Changed SGMII 1G get_settings to use phy_ethtool_gset.
Changed SGMII 1G set_settings to use phy_ethtool_sset.

Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
Tested-by: Fushen Chen <fchen@apm.com>
Tested-by: Toan Le <toanle@apm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/apm/xgene/xgene_enet_ethtool.c

index 416d6ebfc2ceb2395895fc69a4bfaed1cf610b68..22a7b26ca1d6f811b026c0c975c44b7004500735 100644 (file)
@@ -65,8 +65,15 @@ static int xgene_get_settings(struct net_device *ndev, struct ethtool_cmd *cmd)
 
                return phy_ethtool_gset(phydev, cmd);
        } else if (pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) {
-               cmd->supported = SUPPORTED_1000baseT_Full |
-                                SUPPORTED_Autoneg | SUPPORTED_MII;
+               if (pdata->mdio_driver) {
+                       if (!phydev)
+                               return -ENODEV;
+
+                       return phy_ethtool_gset(phydev, cmd);
+               }
+
+               cmd->supported = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg |
+                                SUPPORTED_MII;
                cmd->advertising = cmd->supported;
                ethtool_cmd_speed_set(cmd, SPEED_1000);
                cmd->duplex = DUPLEX_FULL;
@@ -92,12 +99,21 @@ static int xgene_set_settings(struct net_device *ndev, struct ethtool_cmd *cmd)
        struct phy_device *phydev = pdata->phy_dev;
 
        if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) {
-               if (phydev == NULL)
+               if (!phydev)
                        return -ENODEV;
 
                return phy_ethtool_sset(phydev, cmd);
        }
 
+       if (pdata->phy_mode == PHY_INTERFACE_MODE_SGMII) {
+               if (pdata->mdio_driver) {
+                       if (!phydev)
+                               return -ENODEV;
+
+                       return phy_ethtool_sset(phydev, cmd);
+               }
+       }
+
        return -EINVAL;
 }