From: Greg Kroah-Hartman Date: Fri, 23 Mar 2018 16:39:51 +0000 (+0100) Subject: drop broken net-fec patch from 4.14 and 4.15 X-Git-Tag: v3.18.102~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66a187108ec83fb10b6cc559f5d45c7c21c15fea;p=thirdparty%2Fkernel%2Fstable-queue.git drop broken net-fec patch from 4.14 and 4.15 --- diff --git a/queue-4.14/net-fec-add-phy_reset_after_clk_enable-support.patch b/queue-4.14/net-fec-add-phy_reset_after_clk_enable-support.patch deleted file mode 100644 index 0404c6ed7e9..00000000000 --- a/queue-4.14/net-fec-add-phy_reset_after_clk_enable-support.patch +++ /dev/null @@ -1,87 +0,0 @@ -From foo@baz Thu Mar 22 14:26:48 CET 2018 -From: Richard Leitner -Date: Mon, 11 Dec 2017 13:17:00 +0100 -Subject: net: fec: add phy_reset_after_clk_enable() support - -From: Richard Leitner - - -[ Upstream commit 1b0a83ac04e383e3bed21332962b90710fcf2828 ] - -Some PHYs (for example the SMSC LAN8710/LAN8720) doesn't allow turning -the refclk on and off again during operation (according to their -datasheet). Nonetheless exactly this behaviour was introduced for power -saving reasons by commit e8fcfcd5684a ("net: fec: optimize the clock management to save power"). -Therefore add support for the phy_reset_after_clk_enable function from -phylib to mitigate this issue. - -Generally speaking this issue is only relevant if the ref clk for the -PHY is generated by the SoC and therefore the PHY is configured to -"REF_CLK In Mode". In our specific case (PCB) this problem does occur at -about every 10th to 50th POR of an LAN8710 connected to an i.MX6SOLO -SoC. The typical symptom of this problem is a "swinging" ethernet link. -Similar issues were reported by users of the NXP forum: - https://community.nxp.com/thread/389902 - https://community.nxp.com/message/309354 -With this patch applied the issue didn't occur for at least a few -hundret PORs of our board. - -Fixes: e8fcfcd5684a ("net: fec: optimize the clock management to save power") -Signed-off-by: Richard Leitner -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/freescale/fec_main.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - ---- a/drivers/net/ethernet/freescale/fec_main.c -+++ b/drivers/net/ethernet/freescale/fec_main.c -@@ -1872,6 +1872,8 @@ static int fec_enet_clk_enable(struct ne - ret = clk_prepare_enable(fep->clk_ref); - if (ret) - goto failed_clk_ref; -+ -+ phy_reset_after_clk_enable(ndev->phydev); - } else { - clk_disable_unprepare(fep->clk_ahb); - clk_disable_unprepare(fep->clk_enet_out); -@@ -2844,6 +2846,7 @@ fec_enet_open(struct net_device *ndev) - { - struct fec_enet_private *fep = netdev_priv(ndev); - int ret; -+ bool reset_again; - - ret = pm_runtime_get_sync(&fep->pdev->dev); - if (ret < 0) -@@ -2854,6 +2857,17 @@ fec_enet_open(struct net_device *ndev) - if (ret) - goto clk_enable; - -+ /* During the first fec_enet_open call the PHY isn't probed at this -+ * point. Therefore the phy_reset_after_clk_enable() call within -+ * fec_enet_clk_enable() fails. As we need this reset in order to be -+ * sure the PHY is working correctly we check if we need to reset again -+ * later when the PHY is probed -+ */ -+ if (ndev->phydev && ndev->phydev->drv) -+ reset_again = false; -+ else -+ reset_again = true; -+ - /* I should reset the ring buffers here, but I don't yet know - * a simple way to do that. - */ -@@ -2870,6 +2884,12 @@ fec_enet_open(struct net_device *ndev) - if (ret) - goto err_enet_mii_probe; - -+ /* Call phy_reset_after_clk_enable() again if it failed during -+ * phy_reset_after_clk_enable() before because the PHY wasn't probed. -+ */ -+ if (reset_again) -+ phy_reset_after_clk_enable(ndev->phydev); -+ - if (fep->quirks & FEC_QUIRK_ERR006687) - imx6q_cpuidle_fec_irqs_used(); - diff --git a/queue-4.14/series b/queue-4.14/series index 128ed93e596..ed6fb43250f 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -5,7 +5,6 @@ bluetooth-btqcomsmd-fix-skb-double-free-corruption.patch cpufreq-longhaul-revert-transition_delay_us-to-200-ms.patch media-c8sectpfe-fix-potential-null-pointer-dereference-in-c8sectpfe_timer_interrupt.patch drm-msm-fix-leak-in-failed-get_pages.patch -net-fec-add-phy_reset_after_clk_enable-support.patch rdma-iwpm-fix-uninitialized-error-code-in-iwpm_send_mapinfo.patch hv_netvsc-fix-the-receive-buffer-size-limit.patch hv_netvsc-fix-the-tx-rx-buffer-default-sizes.patch diff --git a/queue-4.15/net-fec-add-phy_reset_after_clk_enable-support.patch b/queue-4.15/net-fec-add-phy_reset_after_clk_enable-support.patch deleted file mode 100644 index 70d6535dc4f..00000000000 --- a/queue-4.15/net-fec-add-phy_reset_after_clk_enable-support.patch +++ /dev/null @@ -1,87 +0,0 @@ -From foo@baz Thu Mar 22 14:03:39 CET 2018 -From: Richard Leitner -Date: Mon, 11 Dec 2017 13:17:00 +0100 -Subject: net: fec: add phy_reset_after_clk_enable() support - -From: Richard Leitner - - -[ Upstream commit 1b0a83ac04e383e3bed21332962b90710fcf2828 ] - -Some PHYs (for example the SMSC LAN8710/LAN8720) doesn't allow turning -the refclk on and off again during operation (according to their -datasheet). Nonetheless exactly this behaviour was introduced for power -saving reasons by commit e8fcfcd5684a ("net: fec: optimize the clock management to save power"). -Therefore add support for the phy_reset_after_clk_enable function from -phylib to mitigate this issue. - -Generally speaking this issue is only relevant if the ref clk for the -PHY is generated by the SoC and therefore the PHY is configured to -"REF_CLK In Mode". In our specific case (PCB) this problem does occur at -about every 10th to 50th POR of an LAN8710 connected to an i.MX6SOLO -SoC. The typical symptom of this problem is a "swinging" ethernet link. -Similar issues were reported by users of the NXP forum: - https://community.nxp.com/thread/389902 - https://community.nxp.com/message/309354 -With this patch applied the issue didn't occur for at least a few -hundret PORs of our board. - -Fixes: e8fcfcd5684a ("net: fec: optimize the clock management to save power") -Signed-off-by: Richard Leitner -Signed-off-by: David S. Miller -Signed-off-by: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - drivers/net/ethernet/freescale/fec_main.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - ---- a/drivers/net/ethernet/freescale/fec_main.c -+++ b/drivers/net/ethernet/freescale/fec_main.c -@@ -1868,6 +1868,8 @@ static int fec_enet_clk_enable(struct ne - ret = clk_prepare_enable(fep->clk_ref); - if (ret) - goto failed_clk_ref; -+ -+ phy_reset_after_clk_enable(ndev->phydev); - } else { - clk_disable_unprepare(fep->clk_ahb); - clk_disable_unprepare(fep->clk_enet_out); -@@ -2840,6 +2842,7 @@ fec_enet_open(struct net_device *ndev) - { - struct fec_enet_private *fep = netdev_priv(ndev); - int ret; -+ bool reset_again; - - ret = pm_runtime_get_sync(&fep->pdev->dev); - if (ret < 0) -@@ -2850,6 +2853,17 @@ fec_enet_open(struct net_device *ndev) - if (ret) - goto clk_enable; - -+ /* During the first fec_enet_open call the PHY isn't probed at this -+ * point. Therefore the phy_reset_after_clk_enable() call within -+ * fec_enet_clk_enable() fails. As we need this reset in order to be -+ * sure the PHY is working correctly we check if we need to reset again -+ * later when the PHY is probed -+ */ -+ if (ndev->phydev && ndev->phydev->drv) -+ reset_again = false; -+ else -+ reset_again = true; -+ - /* I should reset the ring buffers here, but I don't yet know - * a simple way to do that. - */ -@@ -2866,6 +2880,12 @@ fec_enet_open(struct net_device *ndev) - if (ret) - goto err_enet_mii_probe; - -+ /* Call phy_reset_after_clk_enable() again if it failed during -+ * phy_reset_after_clk_enable() before because the PHY wasn't probed. -+ */ -+ if (reset_again) -+ phy_reset_after_clk_enable(ndev->phydev); -+ - if (fep->quirks & FEC_QUIRK_ERR006687) - imx6q_cpuidle_fec_irqs_used(); - diff --git a/queue-4.15/series b/queue-4.15/series index b1d99279056..ac043e6699f 100644 --- a/queue-4.15/series +++ b/queue-4.15/series @@ -6,7 +6,6 @@ bluetooth-btqcomsmd-fix-skb-double-free-corruption.patch cpufreq-longhaul-revert-transition_delay_us-to-200-ms.patch media-c8sectpfe-fix-potential-null-pointer-dereference-in-c8sectpfe_timer_interrupt.patch drm-msm-fix-leak-in-failed-get_pages.patch -net-fec-add-phy_reset_after_clk_enable-support.patch ib-ipoib-warn-when-one-port-fails-to-initialize.patch rdma-iwpm-fix-uninitialized-error-code-in-iwpm_send_mapinfo.patch hv_netvsc-fix-the-receive-buffer-size-limit.patch