Commit 430bfe05 authored by Stefan Roese's avatar Stefan Roese Committed by David S. Miller
Browse files

net: ethernet: mtk_eth_soc: Fix DIM support for MT7628/88



When updating to latest mainline for some testing on the GARDENA smart
gateway based on the MT7628, I noticed that ethernet does not work any
more. Commit e9229ffd ("net: ethernet: mtk_eth_soc: implement
dynamic interrupt moderation") introduced this problem, as it missed the
RX_DIM & TX_DIM configuration for this SoC variant. This patch fixes
this by calling mtk_dim_rx() & mtk_dim_tx() in this case as well.

Signed-off-by: default avatarStefan Roese <sr@denx.de>
Fixes: e9229ffd ("net: ethernet: mtk_eth_soc: implement dynamic interrupt moderation")
Cc: Felix Fietkau <nbd@nbd.name>
Cc: John Crispin <john@phrozen.org>
Cc: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
Cc: Reto Schneider <code@reto-schneider.ch>
Cc: Reto Schneider <reto.schneider@husqvarnagroup.com>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5cb4a593
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -2423,6 +2423,7 @@ static void mtk_dim_rx(struct work_struct *work)
	val |= cur << MTK_PDMA_DELAY_RX_PINT_SHIFT;

	mtk_w32(eth, val, MTK_PDMA_DELAY_INT);
	if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
		mtk_w32(eth, val, MTK_QDMA_DELAY_INT);

	spin_unlock_bh(&eth->dim_lock);
@@ -2452,6 +2453,7 @@ static void mtk_dim_tx(struct work_struct *work)
	val |= cur << MTK_PDMA_DELAY_TX_PINT_SHIFT;

	mtk_w32(eth, val, MTK_PDMA_DELAY_INT);
	if (MTK_HAS_CAPS(eth->soc->caps, MTK_QDMA))
		mtk_w32(eth, val, MTK_QDMA_DELAY_INT);

	spin_unlock_bh(&eth->dim_lock);
@@ -2480,6 +2482,10 @@ static int mtk_hw_init(struct mtk_eth *eth)
			goto err_disable_pm;
		}

		/* set interrupt delays based on current Net DIM sample */
		mtk_dim_rx(&eth->rx_dim.work);
		mtk_dim_tx(&eth->tx_dim.work);

		/* disable delay and normal interrupt */
		mtk_tx_irq_disable(eth, ~0);
		mtk_rx_irq_disable(eth, ~0);