781-22-v6.14-net-phy-realtek-always-clear-NBase-T-lpa.patch 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. From d3eb58549842c60ed46f37da7f4da969e3d6ecd3 Mon Sep 17 00:00:00 2001
  2. From: Daniel Golle <[email protected]>
  3. Date: Wed, 15 Jan 2025 14:45:00 +0000
  4. Subject: [PATCH] net: phy: realtek: always clear NBase-T lpa
  5. Clear NBase-T link partner advertisement before calling
  6. rtlgen_read_status() to avoid phy_resolve_aneg_linkmode() wrongly
  7. setting speed and duplex.
  8. This fixes bogus 2.5G/5G/10G link partner advertisement and thus
  9. speed and duplex being set by phy_resolve_aneg_linkmode() due to stale
  10. NBase-T lpa.
  11. Fixes: 68d5cd09e891 ("net: phy: realtek: change order of calls in C22 read_status()")
  12. Signed-off-by: Daniel Golle <[email protected]>
  13. Reviewed-by: Michal Swiatkowski <[email protected]>
  14. Signed-off-by: David S. Miller <[email protected]>
  15. ---
  16. drivers/net/phy/realtek.c | 6 +++---
  17. 1 file changed, 3 insertions(+), 3 deletions(-)
  18. --- a/drivers/net/phy/realtek.c
  19. +++ b/drivers/net/phy/realtek.c
  20. @@ -952,15 +952,15 @@ static int rtl822x_read_status(struct ph
  21. {
  22. int lpadv, ret;
  23. + mii_10gbt_stat_mod_linkmode_lpa_t(phydev->lp_advertising, 0);
  24. +
  25. ret = rtlgen_read_status(phydev);
  26. if (ret < 0)
  27. return ret;
  28. if (phydev->autoneg == AUTONEG_DISABLE ||
  29. - !phydev->autoneg_complete) {
  30. - mii_10gbt_stat_mod_linkmode_lpa_t(phydev->lp_advertising, 0);
  31. + !phydev->autoneg_complete)
  32. return 0;
  33. - }
  34. lpadv = phy_read_paged(phydev, 0xa5d, 0x13);
  35. if (lpadv < 0)