+++ /dev/null
-From foo@baz Thu Mar 22 14:26:48 CET 2018
-From: Richard Leitner <richard.leitner@skidata.com>
-Date: Mon, 11 Dec 2017 13:17:00 +0100
-Subject: net: fec: add phy_reset_after_clk_enable() support
-
-From: Richard Leitner <richard.leitner@skidata.com>
-
-
-[ 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 <richard.leitner@skidata.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- 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();
-
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
+++ /dev/null
-From foo@baz Thu Mar 22 14:03:39 CET 2018
-From: Richard Leitner <richard.leitner@skidata.com>
-Date: Mon, 11 Dec 2017 13:17:00 +0100
-Subject: net: fec: add phy_reset_after_clk_enable() support
-
-From: Richard Leitner <richard.leitner@skidata.com>
-
-
-[ 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 <richard.leitner@skidata.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- 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();
-
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