From: Paolo Abeni <pabeni@redhat.com>
To: Jonas Gorski <jonas.gorski@gmail.com>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Andrew Lunn <andrew@lunn.ch>, Vladimir Oltean <olteanv@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net] net: dsa: b53: fix untagged traffic sent via cpu tagged with VID 0
Date: Thu, 5 Jun 2025 10:54:39 +0200 [thread overview]
Message-ID: <efeeaa50-cf61-4b4f-a2f0-bf15a1dfbaf3@redhat.com> (raw)
In-Reply-To: <20250602194914.1011890-1-jonas.gorski@gmail.com>
On 6/2/25 9:49 PM, Jonas Gorski wrote:
> When Linux sends out untagged traffic from a port, it will enter the CPU
> port without any VLAN tag, even if the port is a member of a vlan
> filtering bridge with a PVID egress untagged VLAN.
>
> This makes the CPU port's PVID take effect, and the PVID's VLAN
> table entry controls if the packet will be tagged on egress.
>
> Since commit 45e9d59d3950 ("net: dsa: b53: do not allow to configure
> VLAN 0") we remove bridged ports from VLAN 0 when joining or leaving a
> VLAN aware bridge. But we also clear the untagged bit, causing untagged
> traffic from the controller to become tagged with VID 0 (and priority
> 0).
>
> Fix this by not touching the untagged map of VLAN 0. Additionally,
> always keep the CPU port as a member, as the untag map is only effective
> as long as there is at least one member, and we would remove it when
> bridging all ports and leaving no standalone ports.
>
> Since Linux (and the switch) treats VLAN 0 tagged traffic like untagged,
> the actual impact of this is rather low, but this also prevented earlier
> detection of the issue.
>
> Fixes: 45e9d59d3950 ("net: dsa: b53: do not allow to configure VLAN 0")
> Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
> ---
> My favourite kind of fix, just deleting code :-)
>
> drivers/net/dsa/b53/b53_common.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
> index 132683ed3abe..6eac09a267d0 100644
> --- a/drivers/net/dsa/b53/b53_common.c
> +++ b/drivers/net/dsa/b53/b53_common.c
> @@ -2051,9 +2051,6 @@ int b53_br_join(struct dsa_switch *ds, int port, struct dsa_bridge bridge,
>
> b53_get_vlan_entry(dev, pvid, vl);
> vl->members &= ~BIT(port);
> - if (vl->members == BIT(cpu_port))
> - vl->members &= ~BIT(cpu_port);
> - vl->untag = vl->members;
> b53_set_vlan_entry(dev, pvid, vl);
> }
>
> @@ -2132,8 +2129,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, struct dsa_bridge bridge)
> }
>
> b53_get_vlan_entry(dev, pvid, vl);
> - vl->members |= BIT(port) | BIT(cpu_port);
> - vl->untag |= BIT(port) | BIT(cpu_port);
> + vl->members |= BIT(port);
> b53_set_vlan_entry(dev, pvid, vl);
> }
> }
Makes sense to, but it could use an explicit ack from Florian...
/P
next prev parent reply other threads:[~2025-06-05 8:54 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-02 19:49 [PATCH net] net: dsa: b53: fix untagged traffic sent via cpu tagged with VID 0 Jonas Gorski
2025-06-05 8:54 ` Paolo Abeni [this message]
2025-06-05 18:02 ` Florian Fainelli
2025-06-05 20:20 ` Vladimir Oltean
2025-06-05 20:33 ` Vladimir Oltean
2025-06-06 1:30 ` patchwork-bot+netdevbpf
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=efeeaa50-cf61-4b4f-a2f0-bf15a1dfbaf3@redhat.com \
--to=pabeni@redhat.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=jonas.gorski@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.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.