aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/0629-amd-xgbe-Sometimes-driver-report-incorrect-link-stat.patch
blob: 49859226c5eb9f788948d2a712293be74210e6a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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