12345678910111213141516171819202122232425262728293031323334353637 |
- From 7028471edb646bfc532fec0973e50e784cdcb7c6 Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- Date: Sat, 23 Jul 2022 16:29:30 +0200
- Subject: [PATCH 2/5] net: ethernet: stmicro: stmmac: first disable all queues
- and disconnect in release
- Disable all queues and disconnect before tx_disable in stmmac_release to
- prevent a corner case where packet may be still queued at the same time
- tx_disable is called resulting in kernel panic if some packet still has
- to be processed.
- Signed-off-by: Christian Marangi <[email protected]>
- Signed-off-by: Jakub Kicinski <[email protected]>
- ---
- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
- --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
- +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
- @@ -3835,8 +3835,6 @@ static int stmmac_release(struct net_dev
- struct stmmac_priv *priv = netdev_priv(dev);
- u32 chan;
-
- - netif_tx_disable(dev);
- -
- if (device_may_wakeup(priv->device))
- phylink_speed_down(priv->phylink, false);
- /* Stop and disconnect the PHY */
- @@ -3848,6 +3846,8 @@ static int stmmac_release(struct net_dev
- for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
- hrtimer_cancel(&priv->tx_queue[chan].txtimer);
-
- + netif_tx_disable(dev);
- +
- /* Free the IRQ lines */
- stmmac_free_irq(dev, REQ_IRQ_ERR_ALL, 0);
-
|