From bba34acaf9577f4fbca1c847e76c1b872185528d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 3 Aug 2017 15:10:55 -0700 Subject: [PATCH] 3.18-stable patches added patches: net-phy-do-not-perform-software-reset-for-generic-phy.patch --- ...rform-software-reset-for-generic-phy.patch | 55 +++++++++++++++++++ queue-3.18/series | 1 + 2 files changed, 56 insertions(+) create mode 100644 queue-3.18/net-phy-do-not-perform-software-reset-for-generic-phy.patch diff --git a/queue-3.18/net-phy-do-not-perform-software-reset-for-generic-phy.patch b/queue-3.18/net-phy-do-not-perform-software-reset-for-generic-phy.patch new file mode 100644 index 00000000000..0f124179048 --- /dev/null +++ b/queue-3.18/net-phy-do-not-perform-software-reset-for-generic-phy.patch @@ -0,0 +1,55 @@ +From 0878fff1f42c18e448ab5b8b4f6a3eb32365b5b6 Mon Sep 17 00:00:00 2001 +From: Florian Fainelli +Date: Sun, 5 Mar 2017 12:34:49 -0800 +Subject: net: phy: Do not perform software reset for Generic PHY + +From: Florian Fainelli + +commit 0878fff1f42c18e448ab5b8b4f6a3eb32365b5b6 upstream. + +The Generic PHY driver is a catch-all PHY driver and it should preserve +whatever prior initialization has been done by boot loader or firmware +agents. For specific PHY device configuration it is expected that a +specialized PHY driver would take over that role. + +Resetting the generic PHY was a bad idea that has lead to several +complaints and downstream workarounds e.g: in OpenWrt/LEDE so restore +the behavior prior to 87aa9f9c61ad ("net: phy: consolidate PHY +reset in phy_init_hw()"). + +Reported-by: Felix Fietkau +Fixes: 87aa9f9c61ad ("net: phy: consolidate PHY reset in phy_init_hw()") +Signed-off-by: Florian Fainelli +Signed-off-by: David S. Miller +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/phy/phy_device.c | 2 +- + include/linux/phy.h | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/phy/phy_device.c ++++ b/drivers/net/phy/phy_device.c +@@ -1341,7 +1341,7 @@ static struct phy_driver genphy_driver[] + .phy_id = 0xffffffff, + .phy_id_mask = 0xffffffff, + .name = "Generic PHY", +- .soft_reset = genphy_soft_reset, ++ .soft_reset = genphy_no_soft_reset, + .config_init = genphy_config_init, + .features = PHY_GBIT_FEATURES | SUPPORTED_MII | + SUPPORTED_AUI | SUPPORTED_FIBRE | +--- a/include/linux/phy.h ++++ b/include/linux/phy.h +@@ -737,6 +737,10 @@ int genphy_read_status(struct phy_device + int genphy_suspend(struct phy_device *phydev); + int genphy_resume(struct phy_device *phydev); + int genphy_soft_reset(struct phy_device *phydev); ++static inline int genphy_no_soft_reset(struct phy_device *phydev) ++{ ++ return 0; ++} + void phy_driver_unregister(struct phy_driver *drv); + void phy_drivers_unregister(struct phy_driver *drv, int n); + int phy_driver_register(struct phy_driver *new_driver); diff --git a/queue-3.18/series b/queue-3.18/series index bf170fa6135..70bef1cdebd 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -12,3 +12,4 @@ staging-comedi-comedi_fops-avoid-orphaned-proc-entry.patch bluetooth-bnep-bnep_add_connection-should-verify-that-it-s-dealing-with-l2cap-socket.patch bluetooth-fix-potential-null-dereference.patch bluetooth-cmtp-cmtp_add_connection-should-verify-that-it-s-dealing-with-l2cap-socket.patch +net-phy-do-not-perform-software-reset-for-generic-phy.patch -- 2.47.3