711-v6.8-01-net-phy-at803x-generalize-cdt-fault-length-function.patch 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From 22eb276098da820d9440fad22901f9b74ed4d659 Mon Sep 17 00:00:00 2001
  2. From: Christian Marangi <[email protected]>
  3. Date: Thu, 4 Jan 2024 22:30:38 +0100
  4. Subject: [PATCH 1/4] net: phy: at803x: generalize cdt fault length function
  5. Generalize cable test fault length function since they all base on the
  6. same magic values (already reverse engineered to understand the meaning
  7. of it) to have consistenct values on every PHY.
  8. Signed-off-by: Christian Marangi <[email protected]>
  9. Reviewed-by: Simon Horman <[email protected]>
  10. Signed-off-by: David S. Miller <[email protected]>
  11. ---
  12. drivers/net/phy/at803x.c | 13 ++++++-------
  13. 1 file changed, 6 insertions(+), 7 deletions(-)
  14. --- a/drivers/net/phy/at803x.c
  15. +++ b/drivers/net/phy/at803x.c
  16. @@ -1192,10 +1192,8 @@ static bool at803x_cdt_fault_length_vali
  17. return false;
  18. }
  19. -static int at803x_cdt_fault_length(u16 status)
  20. +static int at803x_cdt_fault_length(int dt)
  21. {
  22. - int dt;
  23. -
  24. /* According to the datasheet the distance to the fault is
  25. * DELTA_TIME * 0.824 meters.
  26. *
  27. @@ -1211,8 +1209,6 @@ static int at803x_cdt_fault_length(u16 s
  28. * With a VF of 0.69 we get the factor 0.824 mentioned in the
  29. * datasheet.
  30. */
  31. - dt = FIELD_GET(AT803X_CDT_STATUS_DELTA_TIME_MASK, status);
  32. -
  33. return (dt * 824) / 10;
  34. }
  35. @@ -1265,9 +1261,11 @@ static int at803x_cable_test_one_pair(st
  36. ethnl_cable_test_result(phydev, ethtool_pair[pair],
  37. at803x_cable_test_result_trans(val));
  38. - if (at803x_cdt_fault_length_valid(val))
  39. + if (at803x_cdt_fault_length_valid(val)) {
  40. + val = FIELD_GET(AT803X_CDT_STATUS_DELTA_TIME_MASK, val);
  41. ethnl_cable_test_fault_length(phydev, ethtool_pair[pair],
  42. at803x_cdt_fault_length(val));
  43. + }
  44. return 1;
  45. }
  46. @@ -1992,7 +1990,8 @@ static int qca808x_cdt_fault_length(stru
  47. if (val < 0)
  48. return val;
  49. - return (FIELD_GET(QCA808X_CDT_DIAG_LENGTH, val) * 824) / 10;
  50. + val = FIELD_GET(QCA808X_CDT_DIAG_LENGTH, val);
  51. + return at803x_cdt_fault_length(val);
  52. }
  53. static int qca808x_cable_test_start(struct phy_device *phydev)