From f06a9803b44b5a1f9cd626a6ba66b976ca17df6c Mon Sep 17 00:00:00 2001 From: Sudheesh Mavila Date: Tue, 12 Mar 2019 22:33:11 +0530 Subject: [PATCH 0629/2940] amd-xgbe Sometimes driver report incorrect link status and results in timeout error in driver EMBSWDEV-6825 Signed-off-by: Sudheesh Mavila --- drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) mode change 100644 => 100755 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c old mode 100644 new mode 100755 index 5f01b36a6f8a..9cddcc8433e1 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -2563,8 +2563,18 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) */ reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); reg = XMDIO_READ(pdata, MDIO_MMD_PCS, MDIO_STAT1); - if (reg & MDIO_STAT1_LSTATUS) - return 1; + if(phy_data->sfp_speed == XGBE_SFP_SPEED_10000) { + if ((reg & MDIO_STAT1_LSTATUS) && !(reg & MDIO_STAT1_FAULT)) { + return 1; + } else { + *an_restart = 1; + pdata->phy_if.phy_reset(pdata); + return 0; + } + } else { + if (reg & MDIO_STAT1_LSTATUS) + return 1; + } /* No link, attempt a receiver reset cycle */ if (phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) { -- 2.17.1