[net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index

Frank Wunderlich posted 3 patches 3 months, 3 weeks ago
There is a newer version of this series
[net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
Posted by Frank Wunderlich 3 months, 3 weeks ago
From: Frank Wunderlich <frank-w@public-files.de>

Use consts instead of fixed integers for accessing IRQ array.

Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
---
v4:
- calculate max from last (rx) irq index and use it for array size too
---
 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 ++++++++++-----------
 drivers/net/ethernet/mediatek/mtk_eth_soc.h |  7 ++++++-
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 81ae8a6fe838..3ecb399dcf81 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -3341,14 +3341,14 @@ static int mtk_get_irqs(struct platform_device *pdev, struct mtk_eth *eth)
 {
 	int i;
 
-	eth->irq[1] = platform_get_irq_byname(pdev, "tx");
-	eth->irq[2] = platform_get_irq_byname(pdev, "rx");
-	if (eth->irq[1] >= 0 && eth->irq[2] >= 0)
+	eth->irq[MTK_ETH_IRQ_TX] = platform_get_irq_byname(pdev, "tx");
+	eth->irq[MTK_ETH_IRQ_RX] = platform_get_irq_byname(pdev, "rx");
+	if (eth->irq[MTK_ETH_IRQ_TX] >= 0 && eth->irq[MTK_ETH_IRQ_RX] >= 0)
 		return 0;
 
-	for (i = 0; i < 3; i++) {
+	for (i = 0; i < MTK_ETH_IRQ_MAX; i++) {
 		if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0)
-			eth->irq[i] = eth->irq[0];
+			eth->irq[i] = eth->irq[MTK_ETH_IRQ_SHARED];
 		else
 			eth->irq[i] = platform_get_irq(pdev, i);
 
@@ -3414,7 +3414,7 @@ static void mtk_poll_controller(struct net_device *dev)
 
 	mtk_tx_irq_disable(eth, MTK_TX_DONE_INT);
 	mtk_rx_irq_disable(eth, eth->soc->rx.irq_done_mask);
-	mtk_handle_irq_rx(eth->irq[2], dev);
+	mtk_handle_irq_rx(eth->irq[MTK_ETH_IRQ_RX], dev);
 	mtk_tx_irq_enable(eth, MTK_TX_DONE_INT);
 	mtk_rx_irq_enable(eth, eth->soc->rx.irq_done_mask);
 }
@@ -4900,7 +4900,7 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
 	eth->netdev[id]->features |= eth->soc->hw_features;
 	eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops;
 
-	eth->netdev[id]->irq = eth->irq[0];
+	eth->netdev[id]->irq = eth->irq[MTK_ETH_IRQ_SHARED];
 	eth->netdev[id]->dev.of_node = np;
 
 	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628))
@@ -5177,17 +5177,17 @@ static int mtk_probe(struct platform_device *pdev)
 	}
 
 	if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
-		err = devm_request_irq(eth->dev, eth->irq[0],
+		err = devm_request_irq(eth->dev, eth->irq[MTK_ETH_IRQ_SHARED],
 				       mtk_handle_irq, 0,
 				       dev_name(eth->dev), eth);
 	} else {
-		err = devm_request_irq(eth->dev, eth->irq[1],
+		err = devm_request_irq(eth->dev, eth->irq[MTK_ETH_IRQ_TX],
 				       mtk_handle_irq_tx, 0,
 				       dev_name(eth->dev), eth);
 		if (err)
 			goto err_free_dev;
 
-		err = devm_request_irq(eth->dev, eth->irq[2],
+		err = devm_request_irq(eth->dev, eth->irq[MTK_ETH_IRQ_RX],
 				       mtk_handle_irq_rx, 0,
 				       dev_name(eth->dev), eth);
 	}
@@ -5233,7 +5233,7 @@ static int mtk_probe(struct platform_device *pdev)
 		} else
 			netif_info(eth, probe, eth->netdev[i],
 				   "mediatek frame engine at 0x%08lx, irq %d\n",
-				   eth->netdev[i]->base_addr, eth->irq[0]);
+				   eth->netdev[i]->base_addr, eth->irq[MTK_ETH_IRQ_SHARED]);
 	}
 
 	/* we run 2 devices on the same DMA ring so we need a dummy device
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
index 6f72a8c8ae1e..96b724dca0e2 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
@@ -642,6 +642,11 @@
 
 #define MTK_MAC_FSM(x)		(0x1010C + ((x) * 0x100))
 
+#define MTK_ETH_IRQ_SHARED	0
+#define MTK_ETH_IRQ_TX		1
+#define MTK_ETH_IRQ_RX		2
+#define MTK_ETH_IRQ_MAX		(MTK_ETH_IRQ_RX + 1)
+
 struct mtk_rx_dma {
 	unsigned int rxd1;
 	unsigned int rxd2;
@@ -1292,7 +1297,7 @@ struct mtk_eth {
 	struct net_device		*dummy_dev;
 	struct net_device		*netdev[MTK_MAX_DEVS];
 	struct mtk_mac			*mac[MTK_MAX_DEVS];
-	int				irq[3];
+	int				irq[MTK_ETH_IRQ_MAX];
 	u32				msg_enable;
 	unsigned long			sysclk;
 	struct regmap			*ethsys;
-- 
2.43.0
Re: [net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
Posted by Simon Horman 3 months, 3 weeks ago
On Mon, Jun 16, 2025 at 10:07:35AM +0200, Frank Wunderlich wrote:
> From: Frank Wunderlich <frank-w@public-files.de>
> 
> Use consts instead of fixed integers for accessing IRQ array.
> 
> Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
> ---
> v4:
> - calculate max from last (rx) irq index and use it for array size too

Reviewed-by: Simon Horman <horms@kernel.org>
Aw: Re: [net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
Posted by Frank Wunderlich 3 months, 3 weeks ago
Hi,

> Gesendet: Mittwoch, 18. Juni 2025 um 10:36
> Von: "Simon Horman" <horms@kernel.org>
> Betreff: Re: [net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
>
> On Mon, Jun 16, 2025 at 10:07:35AM +0200, Frank Wunderlich wrote:
> > From: Frank Wunderlich <frank-w@public-files.de>
> > 
> > Use consts instead of fixed integers for accessing IRQ array.
> > 
> > Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
> > ---
> > v4:
> > - calculate max from last (rx) irq index and use it for array size too
> 
> Reviewed-by: Simon Horman <horms@kernel.org>

thanks for review and the RB

i thinking about changing the const names to this:

MTK_ETH_IRQ_SHARED	=> MTK_FE_IRQ_SHARED
MTK_ETH_IRQ_TX		=> MTK_FE_IRQ_TX
MTK_ETH_IRQ_RX		=> MTK_FE_IRQ_RX
MTK_ETH_IRQ_MAX		=> MTK_FE_IRQ_NUM

because of i currently working on RSS/LRO patches and here MTK_FE_IRQ_NUM is used as name 
with same meaning like my current MTK_ETH_IRQ_MAX (where max should be same as RX and NUM
is one more because it is a count).
Current IRQs also target the MTK frame-engine which is different to the PDMA RX engine
used for RSS/LRO later, so MTK_ETH_IRQ_RX and MTK_ETH_IRQ_MAX are maybe misleading when RSS/LRO 
support will come in.

can i change the consts like this and keep your RB?

regards Frank
Re: Re: [net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
Posted by Simon Horman 3 months, 3 weeks ago
On Wed, Jun 18, 2025 at 09:24:57AM +0000, Frank Wunderlich wrote:
> Hi,
> 
> > Gesendet: Mittwoch, 18. Juni 2025 um 10:36
> > Von: "Simon Horman" <horms@kernel.org>
> > Betreff: Re: [net-next v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index
> >
> > On Mon, Jun 16, 2025 at 10:07:35AM +0200, Frank Wunderlich wrote:
> > > From: Frank Wunderlich <frank-w@public-files.de>
> > > 
> > > Use consts instead of fixed integers for accessing IRQ array.
> > > 
> > > Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
> > > ---
> > > v4:
> > > - calculate max from last (rx) irq index and use it for array size too
> > 
> > Reviewed-by: Simon Horman <horms@kernel.org>
> 
> thanks for review and the RB
> 
> i thinking about changing the const names to this:
> 
> MTK_ETH_IRQ_SHARED	=> MTK_FE_IRQ_SHARED
> MTK_ETH_IRQ_TX		=> MTK_FE_IRQ_TX
> MTK_ETH_IRQ_RX		=> MTK_FE_IRQ_RX
> MTK_ETH_IRQ_MAX		=> MTK_FE_IRQ_NUM
> 
> because of i currently working on RSS/LRO patches and here MTK_FE_IRQ_NUM is used as name 
> with same meaning like my current MTK_ETH_IRQ_MAX (where max should be same as RX and NUM
> is one more because it is a count).
> Current IRQs also target the MTK frame-engine which is different to the PDMA RX engine
> used for RSS/LRO later, so MTK_ETH_IRQ_RX and MTK_ETH_IRQ_MAX are maybe misleading when RSS/LRO 
> support will come in.
> 
> can i change the consts like this and keep your RB?

Yes, no objections from my side.