[PATCH V3 1/4 net] net: dsa: b53: deal with Northstar devices using CPU port 5 or 7

Jonas Gorski jonas.gorski at gmail.com
Tue Aug 18 04:46:01 PDT 2026


Hi,

On Wed, Aug 12, 2026 at 3:28 PM Rafał Miłecki <zajec5 at gmail.com> wrote:
>
> From: Rafał Miłecki <rafal at milecki.pl>
>
> Northstar devices have 3 CPU ports. Ports 5 and 7 may be used but have
> their limitations. Warn user when CPU port 8 isn't used and add EAP
> setup workaround to avoid non-functional standalone ports.
>
> Fixes: 4227ea91e265 ("net: dsa: b53: prevent standalone from trying to forward to other ports")
> Cc: Semih Baskan <strst.gs at gmail.com>
> Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
> Tested-by: Semih Baskan <strst.gs at gmail.com>
> ---
> This fixes a regression so it's a net.git material
>
> V2: Print warning on switch setup instead of on actual EAP mode change
> V3: Proper subject prefix & shorter comments (long one comes with 2/2)
>
>  drivers/net/dsa/b53/b53_common.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
> index 3f5b9592794d..5fd8362d0430 100644
> --- a/drivers/net/dsa/b53/b53_common.c
> +++ b/drivers/net/dsa/b53/b53_common.c
> @@ -332,6 +332,14 @@ static void b53_set_eap_mode(struct b53_device *dev, int port, int mode)
>  {
>         u64 eap_conf;
>
> +       /*
> +        * On Northstar setting EAP_MODE_SIMPLIFIED with CPU port 5/7 breaks

This isn't just northstar, this is any dual IMP capable switch

> +        * standalone ports, see:
> +        * https://lore.kernel.org/netdev/ce4d9b7b-aaf6-4796-94fb-8c3d6a1dcd4d@gmail.com/
> +        */
> +       if (is5301x(dev) && !dsa_is_cpu_port(dev->ds, B53_CPU_PORT))
> +               return;

This should be moved below the 5325/5365 check and just
!dsa_is_cpu_port(dev->ds, B53_CPU_PORT))

> +
>         if (is5325(dev) || is5365(dev) || dev->chip_id == BCM5389_DEVICE_ID)
>                 return;
>
> @@ -1281,6 +1289,10 @@ static int b53_setup(struct dsa_switch *ds)
>         u16 pvid;
>         int ret;
>
> +       /* Discourage users from using port 5 or 7 due to limited features */
> +       if (is5301x(dev) && !dsa_is_cpu_port(dev->ds, B53_CPU_PORT))

This should be

if (!is5325(dev) && !is5365(dev) && !dsa_is_cpu_port(dev->ds, B53_CPU_PORT))

dual IMP mode is also supported by external switches (e.g. bcm53115
and bcm53125), and if for some reason someone would try to use port 5
only on these you will have the same issues.

> +               dev_warn(dev->dev, "switch to CPU port 8 to use all switch features\n");

I think this warning is too mild; it should be something like

"Using port 5 or 7 as CPU port is not a valid configuration and will
prevent the switch from working properly..\n"

Best regards,
Jonas



More information about the linux-arm-kernel mailing list