Re: [PATCH net 1/2] bridge: Check relevant per-VLAN options in VLAN range grouping

From: Nikolay Aleksandrov

Date: Sun Feb 22 2026 - 11:37:27 EST


On Sun, Feb 22, 2026 at 10:53:37AM +0200, Danielle Ratson wrote:
> The br_vlan_opts_eq_range() function determines if consecutive VLANs can
> be grouped together in a range for compact netlink notifications. It
> currently checks state, tunnel info, and multicast router configuration,
> but misses two categories of per-VLAN options that affect the output:
> 1. User-visible priv_flags (neigh_suppress, mcast_enabled)
> 2. Port multicast context (mcast_max_groups, mcast_n_groups)
>
> When VLANs have different settings for these options, they are incorrectly
> grouped into ranges, causing netlink notifications to report only one
> VLAN's settings for the entire range.
>
> Fix by checking priv_flags equality, but only for flags that affect netlink
> output (BR_VLFLAG_NEIGH_SUPPRESS_ENABLED and BR_VLFLAG_MCAST_ENABLED),
> and comparing multicast context (mcast_max_groups and mcast_n_groups).
>
> Example showing the bugs before the fix:
>
> $ bridge vlan set vid 10 dev dummy1 neigh_suppress on
> $ bridge vlan set vid 11 dev dummy1 neigh_suppress off
> $ bridge -d vlan show dev dummy1
> port vlan-id
> dummy1 10-11
> ... neigh_suppress on
>
> $ bridge vlan set vid 10 dev dummy1 mcast_max_groups 100
> $ bridge vlan set vid 11 dev dummy1 mcast_max_groups 200
> $ bridge -d vlan show dev dummy1
> port vlan-id
> dummy1 10-11
> ... mcast_max_groups 100
>
> After the fix, VLANs 10 and 11 are shown as separate entries with their
> correct individual settings.
>
> Fixes: a1aee20d5db2 ("net: bridge: Add netlink knobs for number / maximum MDB entries")
> Fixes: 83f6d600796c ("bridge: vlan: Allow setting VLAN neighbor suppression state")
> Signed-off-by: Danielle Ratson <danieller@xxxxxxxxxx>
> Reviewed-by: Ido Schimmel <idosch@xxxxxxxxxx>
> ---
> net/bridge/br_private.h | 10 ++++++++++
> net/bridge/br_vlan_options.c | 26 +++++++++++++++++++++++---
> 2 files changed, 33 insertions(+), 3 deletions(-)
>

Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>