704-drivers-net-phy-eee-support-for-rtl838x.patch 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. From 2b88563ee5aafd9571d965b7f2093a0f58d98a31 Mon Sep 17 00:00:00 2001
  2. From: John Crispin <[email protected]>
  3. Date: Thu, 26 Nov 2020 12:02:21 +0100
  4. Subject: net: phy: EEE support for rtl838x
  5. * rename the target to realtek
  6. * add refactored DSA driver
  7. * add latest gpio driver
  8. * lots of arch cleanups
  9. * new irq driver
  10. * additional boards
  11. Submitted-by: Bert Vermeulen <[email protected]>
  12. Submitted-by: Birger Koblitz <[email protected]>
  13. Submitted-by: Sander Vanheule <[email protected]>
  14. Submitted-by: Bjørn Mork <[email protected]>
  15. Submitted-by: John Crispin <[email protected]>
  16. ---
  17. drivers/net/phy/phylink. | 14 +++++++++++--
  18. 1 file changed, 12 insertions(+), 2 deletions(-)
  19. --- a/drivers/net/phy/phylink.c
  20. +++ b/drivers/net/phy/phylink.c
  21. @@ -1994,6 +1994,11 @@ int phylink_ethtool_ksettings_set(struct
  22. * the presence of a PHY, this should not be changed as that
  23. * should be determined from the media side advertisement.
  24. */
  25. + if (pl->phydev->drv->get_port && pl->phydev->drv->set_port) {
  26. + if(pl->phydev->drv->get_port(pl->phydev) != kset->base.port) {
  27. + pl->phydev->drv->set_port(pl->phydev, kset->base.port);
  28. + }
  29. + }
  30. return phy_ethtool_ksettings_set(pl->phydev, kset);
  31. }
  32. @@ -2297,8 +2302,11 @@ int phylink_ethtool_get_eee(struct phyli
  33. ASSERT_RTNL();
  34. - if (pl->phydev)
  35. + if (pl->phydev) {
  36. + if (pl->phydev->drv->get_eee)
  37. + return pl->phydev->drv->get_eee(pl->phydev, eee);
  38. ret = phy_ethtool_get_eee(pl->phydev, eee);
  39. + }
  40. return ret;
  41. }
  42. @@ -2315,8 +2323,11 @@ int phylink_ethtool_set_eee(struct phyli
  43. ASSERT_RTNL();
  44. - if (pl->phydev)
  45. + if (pl->phydev) {
  46. + if (pl->phydev->drv->set_eee)
  47. + return pl->phydev->drv->set_eee(pl->phydev, eee);
  48. ret = phy_ethtool_set_eee(pl->phydev, eee);
  49. + }
  50. return ret;
  51. }