From: Jakub Kicinski <kuba@kernel.org>
To: lukasz.majewski@mailbox.org
Cc: Jakub Kicinski <kuba@kernel.org>,
devicetree@vger.kernel.org, horms@kernel.org, krzk+dt@kernel.org,
s.hauer@pengutronix.de, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel@pengutronix.de,
richardcochran@gmail.com, shawnguo@kernel.org,
edumazet@google.com, linux-arm-kernel@lists.infradead.org,
andrew+netdev@lunn.ch, pabeni@redhat.com, wahrenst@gmx.net,
davem@davemloft.net, festevam@gmail.com, conor+dt@kernel.org,
imx@lists.linux.dev, andrew@lunn.ch, robh@kernel.org
Subject: Re: [net-next,v21,7/7] net: mtip: Extend the L2 switch driver for imx287 with bridge operations
Date: Fri, 30 Jan 2026 17:54:40 -0800 [thread overview]
Message-ID: <20260131015440.972531-1-kuba@kernel.org> (raw)
In-Reply-To: <20260129110154.1699976-8-lukasz.majewski@mailbox.org>
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: mtip: Extend the L2 switch driver for imx287 with bridge operations
This patch adds bridge operations support to the MTIP L2 switch driver,
enabling hardware offloading for packet switching when a bridge is
created on the switch interfaces.
> diff --git a/drivers/net/ethernet/freescale/mtipsw/mtipl2sw_br.c b/drivers/net/ethernet/freescale/mtipsw/mtipl2sw_br.c
> --- /dev/null
> +++ b/drivers/net/ethernet/freescale/mtipsw/mtipl2sw_br.c
[ ... ]
> +static int mtip_ndev_port_link(struct net_device *ndev,
> + struct net_device *br_ndev,
> + struct netlink_ext_ack *extack)
> +{
> + struct mtip_ndev_priv *priv = netdev_priv(ndev), *other_priv;
> + struct switch_enet_private *fep = priv->fep;
> + struct net_device *other_ndev;
> + int err;
> +
> + /* Check if one port of MTIP switch is already bridged */
> + if (fep->br_members && !fep->br_offload) {
> + /* Get the second bridge ndev */
> + other_ndev = fep->ndev[fep->br_members - 1];
> + other_priv = netdev_priv(other_ndev);
> + if (other_priv->master_dev != br_ndev) {
> + NL_SET_ERR_MSG_MOD(extack,
> + "L2 offloading only possible for the same bridge!");
> + return -EOPNOTSUPP;
> + }
> +
> + fep->br_offload = 1;
> + mtip_switch_dis_port_separation(fep);
> + mtip_clear_atable(fep);
> + }
> +
> + if (!priv->master_dev)
> + priv->master_dev = br_ndev;
> +
> + fep->br_members |= BIT(priv->portnum - 1);
> +
> + err = switchdev_bridge_port_offload(ndev, ndev, NULL, NULL, NULL,
> + false, extack);
> + if (err) {
> + dev_err(&ndev->dev, "can't offload bridge port %s [err: %d]\n",
> + ndev->name, err);
> +
> + fep->br_members &= ~BIT(priv->portnum - 1);
> + priv->master_dev = NULL;
> +
> + return err;
> + }
When switchdev_bridge_port_offload() fails, should the error path also
revert the state changes made earlier? Specifically, when the second port
joins the same bridge and passes the bridge check, the code sets
fep->br_offload = 1 and calls mtip_switch_dis_port_separation(). However,
the error handling only clears br_members and master_dev.
If switchdev_bridge_port_offload() fails at this point, fep->br_offload
remains set to 1 and port separation stays disabled, even though only
one port is actually bridged. This could leave the hardware in an
inconsistent state.
Looking at the TI cpsw driver for comparison, it modifies br_members
after switchdev_bridge_port_offload() succeeds, avoiding this ordering
issue.
prev parent reply other threads:[~2026-01-31 1:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-29 11:01 [net-next v21 0/7] net: mtip: Add support for MTIP imx287 L2 switch driver Lukasz Majewski
2026-01-29 11:01 ` [net-next v21 1/7] dt-bindings: net: Add MTIP L2 switch description Lukasz Majewski
2026-01-29 11:01 ` [net-next v21 2/7] net: mtip: The L2 switch driver for imx287 Lukasz Majewski
2026-01-31 1:54 ` [net-next,v21,2/7] " Jakub Kicinski
2026-01-29 11:01 ` [net-next v21 3/7] net: mtip: Add buffers management functions to the L2 switch driver Lukasz Majewski
2026-01-31 1:54 ` [net-next,v21,3/7] " Jakub Kicinski
2026-01-29 11:01 ` [net-next v21 4/7] net: mtip: Add net_device_ops " Lukasz Majewski
2026-01-29 11:01 ` [net-next v21 5/7] net: mtip: Add mtip_switch_{rx|tx} " Lukasz Majewski
2026-01-29 11:01 ` [net-next v21 6/7] net: mtip: Extend the L2 switch driver with management operations Lukasz Majewski
2026-01-31 1:54 ` [net-next,v21,6/7] " Jakub Kicinski
2026-01-29 11:01 ` [net-next v21 7/7] net: mtip: Extend the L2 switch driver for imx287 with bridge operations Lukasz Majewski
2026-01-31 1:54 ` Jakub Kicinski [this message]
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=20260131015440.972531-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=festevam@gmail.com \
--cc=horms@kernel.org \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukasz.majewski@mailbox.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=richardcochran@gmail.com \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=wahrenst@gmx.net \
/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