netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] patch for stmmac
@ 2020-12-02  8:59 Joakim Zhang
  2020-12-02  8:59 ` [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

A patch set for stmmac, fix some driver issues.

Fugang Duan (4):
  net: stmmac: dwmac4_lib: increase the timeout for dma reset
  net: stmmac: start phylink instance before stmmac_hw_setup()
  net: ethernet: stmmac: free tx skb buffer in stmmac_resume()
  net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled

 .../net/ethernet/stmicro/stmmac/dwmac4_lib.c  |  2 +-
 .../net/ethernet/stmicro/stmmac/stmmac_main.c | 43 ++++++++++++++-----
 2 files changed, 33 insertions(+), 12 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled
  2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
@ 2020-12-02  8:59 ` Joakim Zhang
  2020-12-02  9:12   ` Joakim Zhang
  2020-12-02  8:59 ` [PATCH 1/4] net: stmmac: dwmac4_lib: increase the timeout for dma reset Joakim Zhang
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

From: Fugang Duan <fugang.duan@nxp.com>

There have chance to re-enable the eee_ctrl_timer and fire the timer
in napi callback after delete the timer in .stmmac_release(), which
introduces to access eee registers in the timer function after clocks
are disabled then causes system hang.

It is safe to delete the timer after napi disabled and disable lpi mode.

Tested-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Reviewed-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index cc1f17b170f0..7e655fa34589 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2933,9 +2933,6 @@ static int stmmac_release(struct net_device *dev)
 	struct platform_device *pdev = to_platform_device(priv->device);
 	u32 chan;
 
-	if (priv->eee_enabled)
-		del_timer_sync(&priv->eee_ctrl_timer);
-
 	if (device_may_wakeup(priv->device))
 		phylink_speed_down(priv->phylink, false);
 	/* Stop and disconnect the PHY */
@@ -2954,6 +2951,11 @@ static int stmmac_release(struct net_device *dev)
 	if (priv->lpi_irq > 0)
 		free_irq(priv->lpi_irq, dev);
 
+	if (priv->eee_enabled) {
+		priv->tx_path_in_lpi_mode = false;
+		del_timer_sync(&priv->eee_ctrl_timer);
+	}
+
 	/* Stop TX/RX DMA and clear the descriptors */
 	stmmac_stop_all_dma(priv);
 
@@ -5224,6 +5226,11 @@ int stmmac_suspend(struct device *dev)
 	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
 		del_timer_sync(&priv->tx_queue[chan].txtimer);
 
+	if (priv->eee_enabled) {
+		priv->tx_path_in_lpi_mode = false;
+		del_timer_sync(&priv->eee_ctrl_timer);
+	}
+
 	/* Stop TX/RX DMA */
 	stmmac_stop_all_dma(priv);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 1/4] net: stmmac: dwmac4_lib: increase the timeout for dma reset
  2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
  2020-12-02  8:59 ` [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
@ 2020-12-02  8:59 ` Joakim Zhang
  2020-12-02  8:59 ` [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup() Joakim Zhang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

From: Fugang Duan <fugang.duan@nxp.com>

Current timeout value is not enough for gmac5 dma reset
on imx8mp platform, increase the timeout range.

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
index 6e30d7eb4983..0b4ee2dbb691 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_lib.c
@@ -22,7 +22,7 @@ int dwmac4_dma_reset(void __iomem *ioaddr)
 
 	return readl_poll_timeout(ioaddr + DMA_BUS_MODE, value,
 				 !(value & DMA_BUS_MODE_SFT_RESET),
-				 10000, 100000);
+				 10000, 1000000);
 }
 
 void dwmac4_set_rx_tail_ptr(void __iomem *ioaddr, u32 tail_ptr, u32 chan)
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup()
  2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
  2020-12-02  8:59 ` [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
  2020-12-02  8:59 ` [PATCH 1/4] net: stmmac: dwmac4_lib: increase the timeout for dma reset Joakim Zhang
@ 2020-12-02  8:59 ` Joakim Zhang
  2020-12-03 18:31   ` Jakub Kicinski
  2020-12-02  8:59 ` [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume() Joakim Zhang
  2020-12-02  8:59 ` [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
  4 siblings, 1 reply; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

From: Fugang Duan <fugang.duan@nxp.com>

Start phylink instance and resume back the PHY to supply
RX clock to MAC before MAC layer initialization by calling
.stmmac_hw_setup(), since DMA reset depends on the RX clock,
otherwise DMA reset cost maximum timeout value then finally
timeout.

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 .../net/ethernet/stmicro/stmmac/stmmac_main.c    | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 8c1ac75901ce..107761ef456a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -5277,6 +5277,14 @@ int stmmac_resume(struct device *dev)
 			return ret;
 	}
 
+	if (!device_may_wakeup(priv->device) || !priv->plat->pmt) {
+		rtnl_lock();
+		phylink_start(priv->phylink);
+		/* We may have called phylink_speed_down before */
+		phylink_speed_up(priv->phylink);
+		rtnl_unlock();
+	}
+
 	rtnl_lock();
 	mutex_lock(&priv->lock);
 
@@ -5295,14 +5303,6 @@ int stmmac_resume(struct device *dev)
 	mutex_unlock(&priv->lock);
 	rtnl_unlock();
 
-	if (!device_may_wakeup(priv->device) || !priv->plat->pmt) {
-		rtnl_lock();
-		phylink_start(priv->phylink);
-		/* We may have called phylink_speed_down before */
-		phylink_speed_up(priv->phylink);
-		rtnl_unlock();
-	}
-
 	phylink_mac_change(priv->phylink, true);
 
 	netif_device_attach(ndev);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume()
  2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
                   ` (2 preceding siblings ...)
  2020-12-02  8:59 ` [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup() Joakim Zhang
@ 2020-12-02  8:59 ` Joakim Zhang
  2020-12-03 18:32   ` Jakub Kicinski
  2020-12-02  8:59 ` [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
  4 siblings, 1 reply; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

From: Fugang Duan <fugang.duan@nxp.com>

When do suspend/resume test, there have WARN_ON() log dump from
stmmac_xmit() funciton, the code logic:
	entry = tx_q->cur_tx;
	first_entry = entry;
	WARN_ON(tx_q->tx_skbuff[first_entry]);

In normal case, tx_q->tx_skbuff[txq->cur_tx] should be NULL because
the skb should be handled and freed in stmmac_tx_clean().

But stmmac_resume() reset queue parameters like below, skb buffers
may not be freed.
	tx_q->cur_tx = 0;
	tx_q->dirty_tx = 0;

So free tx skb buffer in stmmac_resume() to avoid warning and
memory leak.

log:
[   46.139824] ------------[ cut here ]------------
[   46.144453] WARNING: CPU: 0 PID: 0 at drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:3235 stmmac_xmit+0x7a0/0x9d0
[   46.154969] Modules linked in: crct10dif_ce vvcam(O) flexcan can_dev
[   46.161328] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G           O      5.4.24-2.1.0+g2ad925d15481 #1
[   46.170369] Hardware name: NXP i.MX8MPlus EVK board (DT)
[   46.175677] pstate: 80000005 (Nzcv daif -PAN -UAO)
[   46.180465] pc : stmmac_xmit+0x7a0/0x9d0
[   46.184387] lr : dev_hard_start_xmit+0x94/0x158
[   46.188913] sp : ffff800010003cc0
[   46.192224] x29: ffff800010003cc0 x28: ffff000177e2a100
[   46.197533] x27: ffff000176ef0840 x26: ffff000176ef0090
[   46.202842] x25: 0000000000000000 x24: 0000000000000000
[   46.208151] x23: 0000000000000003 x22: ffff8000119ddd30
[   46.213460] x21: ffff00017636f000 x20: ffff000176ef0cc0
[   46.218769] x19: 0000000000000003 x18: 0000000000000000
[   46.224078] x17: 0000000000000000 x16: 0000000000000000
[   46.229386] x15: 0000000000000079 x14: 0000000000000000
[   46.234695] x13: 0000000000000003 x12: 0000000000000003
[   46.240003] x11: 0000000000000010 x10: 0000000000000010
[   46.245312] x9 : ffff00017002b140 x8 : 0000000000000000
[   46.250621] x7 : ffff00017636f000 x6 : 0000000000000010
[   46.255930] x5 : 0000000000000001 x4 : ffff000176ef0000
[   46.261238] x3 : 0000000000000003 x2 : 00000000ffffffff
[   46.266547] x1 : ffff000177e2a000 x0 : 0000000000000000
[   46.271856] Call trace:
[   46.274302]  stmmac_xmit+0x7a0/0x9d0
[   46.277874]  dev_hard_start_xmit+0x94/0x158
[   46.282056]  sch_direct_xmit+0x11c/0x338
[   46.285976]  __qdisc_run+0x118/0x5f0
[   46.289549]  net_tx_action+0x110/0x198
[   46.293297]  __do_softirq+0x120/0x23c
[   46.296958]  irq_exit+0xb8/0xd8
[   46.300098]  __handle_domain_irq+0x64/0xb8
[   46.304191]  gic_handle_irq+0x5c/0x148
[   46.307936]  el1_irq+0xb8/0x180
[   46.311076]  cpuidle_enter_state+0x84/0x360
[   46.315256]  cpuidle_enter+0x34/0x48
[   46.318829]  call_cpuidle+0x18/0x38
[   46.322314]  do_idle+0x1e0/0x280
[   46.325539]  cpu_startup_entry+0x24/0x40
[   46.329460]  rest_init+0xd4/0xe0
[   46.332687]  arch_call_rest_init+0xc/0x14
[   46.336695]  start_kernel+0x420/0x44c
[   46.340353] ---[ end trace bc1ee695123cbacd ]---

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 107761ef456a..53c5d77eba57 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1557,6 +1557,19 @@ static void dma_free_tx_skbufs(struct stmmac_priv *priv, u32 queue)
 		stmmac_free_tx_buffer(priv, queue, i);
 }
 
+/**
+ * stmmac_free_tx_skbufs - free TX skb buffers
+ * @priv: private structure
+ */
+static void stmmac_free_tx_skbufs(struct stmmac_priv *priv)
+{
+	u32 tx_queue_cnt = priv->plat->tx_queues_to_use;
+	u32 queue;
+
+	for (queue = 0; queue < tx_queue_cnt; queue++)
+		dma_free_tx_skbufs(priv, queue);
+}
+
 /**
  * free_dma_rx_desc_resources - free RX dma desc resources
  * @priv: private structure
@@ -5290,6 +5303,7 @@ int stmmac_resume(struct device *dev)
 
 	stmmac_reset_queues_param(priv);
 
+	stmmac_free_tx_skbufs(priv);
 	stmmac_clear_descriptors(priv);
 
 	stmmac_hw_setup(ndev, false);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled
  2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
                   ` (3 preceding siblings ...)
  2020-12-02  8:59 ` [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume() Joakim Zhang
@ 2020-12-02  8:59 ` Joakim Zhang
  2020-12-03 18:33   ` Jakub Kicinski
  4 siblings, 1 reply; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  8:59 UTC (permalink / raw)
  To: peppe.cavallaro, alexandre.torgue, joabreu; +Cc: davem, kuba, netdev, linux-imx

From: Fugang Duan <fugang.duan@nxp.com>

There have chance to re-enable the eee_ctrl_timer and fire the timer
in napi callback after delete the timer in .stmmac_release(), which
introduces to access eee registers in the timer function after clocks
are disabled then causes system hang. Found this issue when do
suspend/resume and reboot stress test.

It is safe to delete the timer after napi disabled and disable lpi mode.

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 53c5d77eba57..03c6995d276a 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2938,9 +2938,6 @@ static int stmmac_release(struct net_device *dev)
 	struct stmmac_priv *priv = netdev_priv(dev);
 	u32 chan;
 
-	if (priv->eee_enabled)
-		del_timer_sync(&priv->eee_ctrl_timer);
-
 	if (device_may_wakeup(priv->device))
 		phylink_speed_down(priv->phylink, false);
 	/* Stop and disconnect the PHY */
@@ -2959,6 +2956,11 @@ static int stmmac_release(struct net_device *dev)
 	if (priv->lpi_irq > 0)
 		free_irq(priv->lpi_irq, dev);
 
+	if (priv->eee_enabled) {
+		priv->tx_path_in_lpi_mode = false;
+		del_timer_sync(&priv->eee_ctrl_timer);
+	}
+
 	/* Stop TX/RX DMA and clear the descriptors */
 	stmmac_stop_all_dma(priv);
 
@@ -5185,6 +5187,11 @@ int stmmac_suspend(struct device *dev)
 	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
 		hrtimer_cancel(&priv->tx_queue[chan].txtimer);
 
+	if (priv->eee_enabled) {
+		priv->tx_path_in_lpi_mode = false;
+		del_timer_sync(&priv->eee_ctrl_timer);
+	}
+
 	/* Stop TX/RX DMA */
 	stmmac_stop_all_dma(priv);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* RE: [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled
  2020-12-02  8:59 ` [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
@ 2020-12-02  9:12   ` Joakim Zhang
  0 siblings, 0 replies; 10+ messages in thread
From: Joakim Zhang @ 2020-12-02  9:12 UTC (permalink / raw)
  To: Joakim Zhang, peppe.cavallaro, alexandre.torgue, joabreu
  Cc: davem, kuba, netdev, dl-linux-imx


Hi,

Please ignore this patch due to wrongly send out. Sorry.

Best Regards,
Joakim Zhang

> -----Original Message-----
> From: Joakim Zhang <qiangqing.zhang@nxp.com>
> Sent: 2020年12月2日 17:00
> To: peppe.cavallaro@st.com; alexandre.torgue@st.com;
> joabreu@synopsys.com
> Cc: davem@davemloft.net; kuba@kernel.org; netdev@vger.kernel.org;
> dl-linux-imx <linux-imx@nxp.com>
> Subject: [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer
> after napi disabled
> 
> From: Fugang Duan <fugang.duan@nxp.com>
> 
> There have chance to re-enable the eee_ctrl_timer and fire the timer in napi
> callback after delete the timer in .stmmac_release(), which introduces to
> access eee registers in the timer function after clocks are disabled then causes
> system hang.
> 
> It is safe to delete the timer after napi disabled and disable lpi mode.
> 
> Tested-by: Joakim Zhang <qiangqing.zhang@nxp.com>
> Reviewed-by: Joakim Zhang <qiangqing.zhang@nxp.com>
> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
> ---
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index cc1f17b170f0..7e655fa34589 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -2933,9 +2933,6 @@ static int stmmac_release(struct net_device *dev)
>  	struct platform_device *pdev = to_platform_device(priv->device);
>  	u32 chan;
> 
> -	if (priv->eee_enabled)
> -		del_timer_sync(&priv->eee_ctrl_timer);
> -
>  	if (device_may_wakeup(priv->device))
>  		phylink_speed_down(priv->phylink, false);
>  	/* Stop and disconnect the PHY */
> @@ -2954,6 +2951,11 @@ static int stmmac_release(struct net_device *dev)
>  	if (priv->lpi_irq > 0)
>  		free_irq(priv->lpi_irq, dev);
> 
> +	if (priv->eee_enabled) {
> +		priv->tx_path_in_lpi_mode = false;
> +		del_timer_sync(&priv->eee_ctrl_timer);
> +	}
> +
>  	/* Stop TX/RX DMA and clear the descriptors */
>  	stmmac_stop_all_dma(priv);
> 
> @@ -5224,6 +5226,11 @@ int stmmac_suspend(struct device *dev)
>  	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
>  		del_timer_sync(&priv->tx_queue[chan].txtimer);
> 
> +	if (priv->eee_enabled) {
> +		priv->tx_path_in_lpi_mode = false;
> +		del_timer_sync(&priv->eee_ctrl_timer);
> +	}
> +
>  	/* Stop TX/RX DMA */
>  	stmmac_stop_all_dma(priv);
> 
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup()
  2020-12-02  8:59 ` [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup() Joakim Zhang
@ 2020-12-03 18:31   ` Jakub Kicinski
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Kicinski @ 2020-12-03 18:31 UTC (permalink / raw)
  To: Joakim Zhang
  Cc: peppe.cavallaro, alexandre.torgue, joabreu, davem, netdev, linux-imx

On Wed,  2 Dec 2020 16:59:47 +0800 Joakim Zhang wrote:
> From: Fugang Duan <fugang.duan@nxp.com>
> 
> Start phylink instance and resume back the PHY to supply
> RX clock to MAC before MAC layer initialization by calling
> .stmmac_hw_setup(), since DMA reset depends on the RX clock,
> otherwise DMA reset cost maximum timeout value then finally
> timeout.

We'll need a Fixes tag here.

> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
> Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume()
  2020-12-02  8:59 ` [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume() Joakim Zhang
@ 2020-12-03 18:32   ` Jakub Kicinski
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Kicinski @ 2020-12-03 18:32 UTC (permalink / raw)
  To: Joakim Zhang
  Cc: peppe.cavallaro, alexandre.torgue, joabreu, davem, netdev, linux-imx

On Wed,  2 Dec 2020 16:59:48 +0800 Joakim Zhang wrote:
> From: Fugang Duan <fugang.duan@nxp.com>
> 
> When do suspend/resume test, there have WARN_ON() log dump from
> stmmac_xmit() funciton, the code logic:
> 	entry = tx_q->cur_tx;
> 	first_entry = entry;
> 	WARN_ON(tx_q->tx_skbuff[first_entry]);
> 
> In normal case, tx_q->tx_skbuff[txq->cur_tx] should be NULL because
> the skb should be handled and freed in stmmac_tx_clean().
> 
> But stmmac_resume() reset queue parameters like below, skb buffers
> may not be freed.
> 	tx_q->cur_tx = 0;
> 	tx_q->dirty_tx = 0;
> 
> So free tx skb buffer in stmmac_resume() to avoid warning and
> memory leak.

Also needs Fixes

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled
  2020-12-02  8:59 ` [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
@ 2020-12-03 18:33   ` Jakub Kicinski
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Kicinski @ 2020-12-03 18:33 UTC (permalink / raw)
  To: Joakim Zhang
  Cc: peppe.cavallaro, alexandre.torgue, joabreu, davem, netdev, linux-imx

On Wed,  2 Dec 2020 16:59:49 +0800 Joakim Zhang wrote:
> From: Fugang Duan <fugang.duan@nxp.com>
> 
> There have chance to re-enable the eee_ctrl_timer and fire the timer
> in napi callback after delete the timer in .stmmac_release(), which
> introduces to access eee registers in the timer function after clocks
> are disabled then causes system hang. Found this issue when do
> suspend/resume and reboot stress test.
> 
> It is safe to delete the timer after napi disabled and disable lpi mode.

And here

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-12-03 18:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-02  8:59 [PATCH 0/4] patch for stmmac Joakim Zhang
2020-12-02  8:59 ` [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
2020-12-02  9:12   ` Joakim Zhang
2020-12-02  8:59 ` [PATCH 1/4] net: stmmac: dwmac4_lib: increase the timeout for dma reset Joakim Zhang
2020-12-02  8:59 ` [PATCH 2/4] net: stmmac: start phylink instance before stmmac_hw_setup() Joakim Zhang
2020-12-03 18:31   ` Jakub Kicinski
2020-12-02  8:59 ` [PATCH 3/4] net: ethernet: stmmac: free tx skb buffer in stmmac_resume() Joakim Zhang
2020-12-03 18:32   ` Jakub Kicinski
2020-12-02  8:59 ` [PATCH 4/4] net: ethernet: stmmac: delete the eee_ctrl_timer after napi disabled Joakim Zhang
2020-12-03 18:33   ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).