From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: jan.petrous@oss.nxp.com
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
Chester Lin <chester62515@gmail.com>,
Matthias Brugger <mbrugger@suse.com>,
Ghennadi Procopciuc <ghennadi.procopciuc@oss.nxp.com>,
NXP S32 Linux Team <s32@nxp.com>, Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Frank Li <Frank.Li@nxp.com>,
netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, imx@lists.linux.dev,
devicetree@vger.kernel.org, vladimir.oltean@nxp.com,
boon.khai.ng@altera.com
Subject: Re: [PATCH v7 2/5] net: stmmac: platform: read channels irq
Date: Thu, 26 Feb 2026 19:10:22 +0000 [thread overview]
Message-ID: <aaCankErMJZ2XM_s@shell.armlinux.org.uk> (raw)
In-Reply-To: <20260226-dwmac_multi_irq-v7-2-f8fe3b945bb4@oss.nxp.com>
On Thu, Feb 26, 2026 at 09:54:07AM +0100, Jan Petrous via B4 Relay wrote:
> From: "Jan Petrous (OSS)" <jan.petrous@oss.nxp.com>
>
> Read IRQ resources for all rx/tx channels, to allow Multi-IRQ mode
> for platform glue drivers.
>
> Reviewed-by: Matthias Brugger <mbrugger@suse.com>
> Signed-off-by: Jan Petrous (OSS) <jan.petrous@oss.nxp.com>
> ---
> .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 46 +++++++++++++++++++++-
> 1 file changed, 45 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> index 5c9fd91a1db9..93bd915ab6eb 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
> @@ -697,9 +697,40 @@ struct clk *stmmac_pltfr_find_clk(struct plat_stmmacenet_data *plat_dat,
> }
> EXPORT_SYMBOL_GPL(stmmac_pltfr_find_clk);
>
> +static int stmmac_pltfr_get_queue_irqs(struct platform_device *pdev,
> + struct stmmac_resources *stmmac_res,
> + bool tx)
> +{
> + int *irqs = tx ? &stmmac_res->tx_irq[0] : &stmmac_res->rx_irq[0];
> + char name[16];
> + int i;
> +
> + /* RX channels irq */
> + STMMAC_FOREACH_MTL_QUEUE(i, MTL_MAX_RX_QUEUES) {
You've missed that there are two separate definitions for tx and rx
queues - while they are currently the same number, code shouldn't
make that assumption.
> + scnprintf(name, sizeof(name), "%cx-queue-%d",
> + tx ? 't' : 'r', i);
I'm not happy with this method of combining the two loops.
Maybe instead:
static int stmmac_pltfr_get_irq_array(struct platform_device *pdev,
const char *fmt, int *irqs,
size_t num)
{
char name[16];
size_t i;
for (i = 0; i < num; i++) {
if (snprintf(name, sizeof(name), fmt, i) >= sizeof(name))
return -EINVAL;
irqs[i] = platform_get_irq_byname_optional(pdev, name);
if (irqs[i] == -EPROBE_DEFER) {
return irqs[i];
} else if (irqs[i] <= 0) {
dev_dbg(&pdev->dev, "IRQ %s not found\n", name);
irqs[i] = 0;
break;
}
}
return 0;
}
which has the advantage that it becomes a generic helper for getting an
any array of IRQs.
> int stmmac_get_platform_resources(struct platform_device *pdev,
> struct stmmac_resources *stmmac_res)
> {
> + int ret;
> +
> memset(stmmac_res, 0, sizeof(*stmmac_res));
>
> /* Get IRQ information early to have an ability to ask for deferred
> @@ -735,7 +766,20 @@ int stmmac_get_platform_resources(struct platform_device *pdev,
>
> stmmac_res->addr = devm_platform_ioremap_resource(pdev, 0);
>
> - return PTR_ERR_OR_ZERO(stmmac_res->addr);
> + if (IS_ERR(stmmac_res->addr))
> + return PTR_ERR(stmmac_res->addr);
> +
> + /* TX channels irq */
> + ret = stmmac_pltfr_get_queue_irqs(pdev, stmmac_res, true);
> + if (ret)
> + return ret;
> +
> + /* RX channels irq */
> + ret = stmmac_pltfr_get_queue_irqs(pdev, stmmac_res, false);
> + if (ret)
> + return ret;
These then become:
ret = stmmac_pltfr_get_irq_array(pdev, "tx-queue-%d",
stmmac_res->tx_irq,
MTL_MAX_TX_QUEUES);
if (ret)
return ret;
ret = stmmac_pltfr_get_irq_array(pdev, "rx-queue-%d",
stmmac_res->rx_irq,
MTL_MAX_RX_QUEUES);
if (ret)
return ret;
This has the advantage that one can grep for rx-queue to find it,
and we also use the correct limit for each queue type.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2026-02-26 19:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 8:54 [PATCH v7 0/5] Support multi-channel IRQs in stmmac platform drivers Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
2026-02-26 8:54 ` [PATCH v7 1/5] net: stmmac: Use helper macro for loop over queue-based arrays Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
2026-02-26 8:54 ` [PATCH v7 2/5] net: stmmac: platform: read channels irq Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
2026-02-26 19:10 ` Russell King (Oracle) [this message]
2026-02-27 12:27 ` Jan Petrous
2026-02-26 8:54 ` [PATCH v7 3/5] arm64: dts: s32: set Ethernet channel irqs Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
2026-02-26 8:54 ` [PATCH v7 4/5] dt-bindings: net: nxp,s32-dwmac: Declare per-queue interrupts Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
2026-02-26 8:54 ` [PATCH v7 5/5] stmmac: s32: enable support for Multi-IRQ mode Jan Petrous (OSS)
2026-02-26 8:54 ` Jan Petrous via B4 Relay
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aaCankErMJZ2XM_s@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Frank.Li@nxp.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew+netdev@lunn.ch \
--cc=boon.khai.ng@altera.com \
--cc=chester62515@gmail.com \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=festevam@gmail.com \
--cc=ghennadi.procopciuc@oss.nxp.com \
--cc=imx@lists.linux.dev \
--cc=jan.petrous@oss.nxp.com \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=mbrugger@suse.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=s32@nxp.com \
--cc=shawnguo@kernel.org \
--cc=vladimir.oltean@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.