diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch new file mode 100644 index 00000000..49859226 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch @@ -0,0 +1,42 @@ +From f06a9803b44b5a1f9cd626a6ba66b976ca17df6c Mon Sep 17 00:00:00 2001 +From: Sudheesh Mavila <sudheesh.mavila@amd.com> +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 <sudheesh.mavila@amd.com> +--- + 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 + |