0034-NET-multi-phy-support.patch 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. From 0b6eb1e68290243d439ee330ea8d0b239a5aec69 Mon Sep 17 00:00:00 2001
  2. From: John Crispin <[email protected]>
  3. Date: Sun, 27 Jul 2014 09:38:50 +0100
  4. Subject: [PATCH 34/53] NET: multi phy support
  5. Signed-off-by: John Crispin <[email protected]>
  6. ---
  7. drivers/net/phy/phy.c | 9 ++++++---
  8. include/linux/phy.h | 1 +
  9. 2 files changed, 7 insertions(+), 3 deletions(-)
  10. --- a/drivers/net/phy/phy.c
  11. +++ b/drivers/net/phy/phy.c
  12. @@ -980,7 +980,10 @@ void phy_state_machine(struct work_struc
  13. /* If the link is down, give up on negotiation for now */
  14. if (!phydev->link) {
  15. phydev->state = PHY_NOLINK;
  16. - phy_link_down(phydev, true);
  17. + if (!phydev->no_auto_carrier_off)
  18. + phy_link_down(phydev, true);
  19. + else
  20. + phy_link_down(phydev, false);
  21. break;
  22. }
  23. @@ -1067,7 +1070,10 @@ void phy_state_machine(struct work_struc
  24. phy_link_up(phydev);
  25. } else {
  26. phydev->state = PHY_NOLINK;
  27. - phy_link_down(phydev, true);
  28. + if (!phydev->no_auto_carrier_off)
  29. + phy_link_down(phydev, true);
  30. + else
  31. + phy_link_down(phydev, false);
  32. }
  33. if (phy_interrupt_is_valid(phydev))
  34. @@ -1077,7 +1083,10 @@ void phy_state_machine(struct work_struc
  35. case PHY_HALTED:
  36. if (phydev->link) {
  37. phydev->link = 0;
  38. - phy_link_down(phydev, true);
  39. + if (!phydev->no_auto_carrier_off)
  40. + phy_link_down(phydev, true);
  41. + else
  42. + phy_link_down(phydev, false);
  43. do_suspend = true;
  44. }
  45. break;
  46. --- a/include/linux/phy.h
  47. +++ b/include/linux/phy.h
  48. @@ -412,6 +412,7 @@ struct phy_device {
  49. bool suspended;
  50. bool sysfs_links;
  51. bool loopback_enabled;
  52. + bool no_auto_carrier_off;
  53. enum phy_state state;