From: Simon Horman <horms@kernel.org>
To: wei.fang@nxp.com
Cc: Simon Horman <horms@kernel.org>,
frank.li@nxp.com, devicetree@vger.kernel.org,
andrew+netdev@lunn.ch, conor+dt@kernel.org,
vladimir.oltean@nxp.com, linux-arm-kernel@lists.infradead.org,
kuba@kernel.org, claudiu.manoil@nxp.com, andrew@lunn.ch,
krzk+dt@kernel.org, linux@armlinux.org.uk, edumazet@google.com,
linux-kernel@vger.kernel.org, pabeni@redhat.com,
f.fainelli@gmail.com, imx@lists.linux.dev, chleroy@kernel.org,
netdev@vger.kernel.org, robh@kernel.org,
linuxppc-dev@lists.ozlabs.org, xiaoning.wang@nxp.com,
davem@davemloft.net
Subject: Re: [PATCH v2 net-next 08/14] net: enetc: add multiple command BD rings support
Date: Tue, 24 Mar 2026 16:58:04 +0000 [thread overview]
Message-ID: <20260324165804.245011-1-horms@kernel.org> (raw)
In-Reply-To: <20260323060752.1157031-9-wei.fang@nxp.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
net: enetc: add multiple command BD rings support
This patch adds support for multiple command BD rings to the NTMP driver.
The switch has two command BD rings, and netc_select_cbdr() is added to
select an appropriate ring when the current one is busy.
> diff --git a/drivers/net/ethernet/freescale/enetc/ntmp.c b/drivers/net/ethernet/freescale/enetc/ntmp.c
> --- a/drivers/net/ethernet/freescale/enetc/ntmp.c
> +++ b/drivers/net/ethernet/freescale/enetc/ntmp.c
> @@ -117,6 +117,25 @@ static void ntmp_clean_cbdr(struct netc_cbdr *cbdr)
> cbdr->next_to_clean = i;
> }
>
> +static struct netc_cbdr *netc_select_cbdr(struct ntmp_user *user)
> +{
> + int cpu, i;
> +
> + for (i = 0; i < user->cbdr_num; i++) {
> + if (spin_is_locked(&user->ring[i].ring_lock))
> + continue;
> +
> + return &user->ring[i];
> + }
Frank Li raised a concern about the use of spin_is_locked() here. Is this
lockless check reliable across all architectures? spin_is_locked() behavior
varies across configurations - it can return false negatives on UP builds and
may not provide the ordering guarantees needed for lockless checks.
Would spin_trylock() be more appropriate here? Or if this racy check is
intentional and acceptable, should it be documented why the potential race is
safe in this context?
> +
> + /* If all the command BDRs are busy now, we select
> + * one of them, but need to wait for a while to use.
> + */
> + cpu = raw_smp_processor_id();
> +
> + return &user->ring[cpu % user->cbdr_num];
> +}
> +
> static int netc_xmit_ntmp_cmd(struct ntmp_user *user, union netc_cbd *cbd)
> {
> union netc_cbd *cur_cbd;
> @@ -125,10 +144,10 @@ static int netc_xmit_ntmp_cmd(struct ntmp_user *user, union netc_cbd *cbd)
> u16 status;
> u32 val;
>
> - /* Currently only i.MX95 ENETC is supported, and it only has one
> - * command BD ring
> - */
> - cbdr = &user->ring[0];
> + if (user->cbdr_num == 1)
> + cbdr = &user->ring[0];
> + else
> + cbdr = netc_select_cbdr(user);
This isn't a bug, but Frank Li suggested that the special case for
cbdr_num == 1 might be redundant. Since netc_select_cbdr() would handle the
single ring case correctly (the loop would find the only ring on the first
iteration), would it be simpler to just unconditionally call:
cbdr = netc_select_cbdr(user);
>
> spin_lock_bh(&cbdr->ring_lock);
>
next prev parent reply other threads:[~2026-03-24 16:58 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-23 6:07 [PATCH v2 net-next 00/14] Add preliminary NETC switch support for i.MX94 Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 01/14] dt-bindings: net: dsa: update the description of 'dsa,member' property Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 02/14] dt-bindings: net: dsa: add NETC switch Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 03/14] net: enetc: add pre-boot initialization for i.MX94 switch Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 04/14] net: enetc: add basic operations to the FDB table Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 05/14] net: enetc: add support for the "Add" operation to VLAN filter table Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 06/14] net: enetc: add support for the "Update" operation to buffer pool table Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 07/14] net: enetc: add support for "Add" and "Delete" operations to IPFT Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 08/14] net: enetc: add multiple command BD rings support Wei Fang
2026-03-24 16:58 ` Simon Horman [this message]
2026-03-25 1:56 ` Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 09/14] net: dsa: add NETC switch tag support Wei Fang
2026-03-24 16:54 ` Simon Horman
2026-03-25 1:54 ` Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 10/14] net: dsa: netc: introduce NXP NETC switch driver for i.MX94 Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 11/14] net: dsa: netc: add phylink MAC operations Wei Fang
2026-03-23 9:30 ` Russell King (Oracle)
2026-03-23 10:32 ` Wei Fang
2026-03-24 8:13 ` Paolo Abeni
2026-03-23 6:07 ` [PATCH v2 net-next 12/14] net: dsa: netc: add more basic functions support Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 13/14] net: dsa: netc: initialize buffer bool table and implement flow-control Wei Fang
2026-03-23 9:20 ` Russell King (Oracle)
2026-03-23 10:20 ` Wei Fang
2026-03-24 16:42 ` Simon Horman
2026-03-25 1:53 ` Wei Fang
2026-03-23 6:07 ` [PATCH v2 net-next 14/14] net: dsa: netc: add support for the standardized counters Wei Fang
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=20260324165804.245011-1-horms@kernel.org \
--to=horms@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=chleroy@kernel.org \
--cc=claudiu.manoil@nxp.com \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=frank.li@nxp.com \
--cc=imx@lists.linux.dev \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=vladimir.oltean@nxp.com \
--cc=wei.fang@nxp.com \
--cc=xiaoning.wang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox