[SRU][F][PULL][PATCH v2 17/23] Revert "UBUNTU: SAUCE: mlxbf_gige_main.c: Fix OOB's ethtool command"
Asmaa Mnebhi
asmaa at nvidia.com
Fri Jul 9 19:08:24 UTC 2021
BugLink: https://bugs.launchpad.net/bugs/1934923
This reverts commit a9139cd0033706cfc4610009f61035ec2c155a16.
Signed-off-by: Asmaa Mnebhi <asmaa at nvidia.com>
---
.../mellanox/mlxbf_gige/mlxbf_gige_main.c | 46 ++++++++++++++++++-
1 file changed, 45 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
index 75263fcd542e..b267d473f978 100644
--- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
+++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c
@@ -481,6 +481,50 @@ static void mlxbf_gige_get_pauseparam(struct net_device *netdev,
pause->tx_pause = 1;
}
+static int mlxbf_gige_get_link_ksettings(struct net_device *netdev,
+ struct ethtool_link_ksettings *link_ksettings)
+{
+ struct phy_device *phydev = netdev->phydev;
+ u32 supported, advertising;
+ u32 lp_advertising = 0;
+ int status;
+
+ supported = SUPPORTED_TP | SUPPORTED_1000baseT_Full |
+ SUPPORTED_Autoneg | SUPPORTED_Pause;
+
+ advertising = ADVERTISED_1000baseT_Full | ADVERTISED_Autoneg |
+ ADVERTISED_Pause;
+
+ status = phy_read(phydev, MII_LPA);
+ if (status >= 0) {
+ lp_advertising = mii_lpa_to_ethtool_lpa_t(status & 0xffff);
+ }
+
+ status = phy_read(phydev, MII_STAT1000);
+ if (status >= 0) {
+ lp_advertising |= mii_stat1000_to_ethtool_lpa_t(status & 0xffff);
+ }
+
+ ethtool_convert_legacy_u32_to_link_mode(link_ksettings->link_modes.supported,
+ supported);
+ ethtool_convert_legacy_u32_to_link_mode(link_ksettings->link_modes.advertising,
+ advertising);
+ ethtool_convert_legacy_u32_to_link_mode(link_ksettings->link_modes.lp_advertising,
+ lp_advertising);
+
+ link_ksettings->base.autoneg = AUTONEG_ENABLE;
+ link_ksettings->base.speed = SPEED_1000;
+ link_ksettings->base.duplex = DUPLEX_FULL;
+ link_ksettings->base.port = PORT_TP;
+ link_ksettings->base.phy_address = MLXBF_GIGE_DEFAULT_PHY_ADDR;
+ link_ksettings->base.transceiver = XCVR_INTERNAL;
+ link_ksettings->base.mdio_support = ETH_MDIO_SUPPORTS_C22;
+ link_ksettings->base.eth_tp_mdix = ETH_TP_MDI_INVALID;
+ link_ksettings->base.eth_tp_mdix_ctrl = ETH_TP_MDI_INVALID;
+
+ return 0;
+}
+
static const struct ethtool_ops mlxbf_gige_ethtool_ops = {
.get_drvinfo = mlxbf_gige_get_drvinfo,
.get_link = ethtool_op_get_link,
@@ -493,7 +537,7 @@ static const struct ethtool_ops mlxbf_gige_ethtool_ops = {
.get_ethtool_stats = mlxbf_gige_get_ethtool_stats,
.nway_reset = phy_ethtool_nway_reset,
.get_pauseparam = mlxbf_gige_get_pauseparam,
- .get_link_ksettings = phy_ethtool_get_link_ksettings,
+ .get_link_ksettings = mlxbf_gige_get_link_ksettings,
};
static void mlxbf_gige_handle_link_change(struct net_device *netdev)
--
2.30.1
More information about the kernel-team
mailing list