Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eed63569 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller
Browse files

net: bcmgenet: Avoid sleeping in bcmgenet_timeout



bcmgenet_timeout() executes in atomic context, yet we will invoke
napi_disable() which does sleep. Looking back at the changes, disabling
TX napi and re-enabling it is completely useless, since we reclaim all
TX buffers and re-enable interrupts, and wake up the TX queues.

Fixes: 13ea6578 ("net: bcmgenet: improve TX timeout")
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c953e239
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -2820,8 +2820,6 @@ static void bcmgenet_timeout(struct net_device *dev)

	netif_dbg(priv, tx_err, dev, "bcmgenet_timeout\n");

	bcmgenet_disable_tx_napi(priv);

	for (q = 0; q < priv->hw_params->tx_queues; q++)
		bcmgenet_dump_tx_queue(&priv->tx_rings[q]);
	bcmgenet_dump_tx_queue(&priv->tx_rings[DESC_INDEX]);
@@ -2837,8 +2835,6 @@ static void bcmgenet_timeout(struct net_device *dev)
	bcmgenet_intrl2_0_writel(priv, int0_enable, INTRL2_CPU_MASK_CLEAR);
	bcmgenet_intrl2_1_writel(priv, int1_enable, INTRL2_CPU_MASK_CLEAR);

	bcmgenet_enable_tx_napi(priv);

	dev->trans_start = jiffies;

	dev->stats.tx_errors++;