mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
8a9273d51e
Copy backport, hack, pending patch and config from 6.1 to 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
63 lines
2.0 KiB
Diff
63 lines
2.0 KiB
Diff
From 22eb276098da820d9440fad22901f9b74ed4d659 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Thu, 4 Jan 2024 22:30:38 +0100
|
|
Subject: [PATCH 1/4] net: phy: at803x: generalize cdt fault length function
|
|
|
|
Generalize cable test fault length function since they all base on the
|
|
same magic values (already reverse engineered to understand the meaning
|
|
of it) to have consistenct values on every PHY.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Reviewed-by: Simon Horman <horms@kernel.org>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/phy/at803x.c | 13 ++++++-------
|
|
1 file changed, 6 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/net/phy/at803x.c
|
|
+++ b/drivers/net/phy/at803x.c
|
|
@@ -1192,10 +1192,8 @@ static bool at803x_cdt_fault_length_vali
|
|
return false;
|
|
}
|
|
|
|
-static int at803x_cdt_fault_length(u16 status)
|
|
+static int at803x_cdt_fault_length(int dt)
|
|
{
|
|
- int dt;
|
|
-
|
|
/* According to the datasheet the distance to the fault is
|
|
* DELTA_TIME * 0.824 meters.
|
|
*
|
|
@@ -1211,8 +1209,6 @@ static int at803x_cdt_fault_length(u16 s
|
|
* With a VF of 0.69 we get the factor 0.824 mentioned in the
|
|
* datasheet.
|
|
*/
|
|
- dt = FIELD_GET(AT803X_CDT_STATUS_DELTA_TIME_MASK, status);
|
|
-
|
|
return (dt * 824) / 10;
|
|
}
|
|
|
|
@@ -1265,9 +1261,11 @@ static int at803x_cable_test_one_pair(st
|
|
ethnl_cable_test_result(phydev, ethtool_pair[pair],
|
|
at803x_cable_test_result_trans(val));
|
|
|
|
- if (at803x_cdt_fault_length_valid(val))
|
|
+ if (at803x_cdt_fault_length_valid(val)) {
|
|
+ val = FIELD_GET(AT803X_CDT_STATUS_DELTA_TIME_MASK, val);
|
|
ethnl_cable_test_fault_length(phydev, ethtool_pair[pair],
|
|
at803x_cdt_fault_length(val));
|
|
+ }
|
|
|
|
return 1;
|
|
}
|
|
@@ -1992,7 +1990,8 @@ static int qca808x_cdt_fault_length(stru
|
|
if (val < 0)
|
|
return val;
|
|
|
|
- return (FIELD_GET(QCA808X_CDT_DIAG_LENGTH, val) * 824) / 10;
|
|
+ val = FIELD_GET(QCA808X_CDT_DIAG_LENGTH, val);
|
|
+ return at803x_cdt_fault_length(val);
|
|
}
|
|
|
|
static int qca808x_cable_test_start(struct phy_device *phydev)
|