All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <florian.fainelli@broadcom.com>
To: Vladimir Oltean <olteanv@gmail.com>,
	Jonas Gorski <jonas.gorski@gmail.com>
Cc: Semih Baskan <strst.gs@gmail.com>,
	florian.fainelli@broadcom.com, andrew@lunn.ch,
	davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com, vladimir.oltean@nxp.com,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net] net: dsa: b53: be VLAN unaware when not filtering
Date: Wed, 12 Aug 2026 15:28:30 -0700	[thread overview]
Message-ID: <be04045f-6b56-4474-9d05-c40a2c845dcb@broadcom.com> (raw)
In-Reply-To: <20260812220627.r6gesugv2q3s6x2o@skbuf>

On 8/12/26 15:06, Vladimir Oltean wrote:
> On Wed, Aug 12, 2026 at 11:50:47PM +0300, Vladimir Oltean wrote:
>> 1. This looks implementable with some complexity isolated within the b53
>>     driver:
>>     - on any .port_fdb_add(), .port_fdb_del(), .port_mdb_add(), .port_mdb_del(),
>>       compare the VID of the entry with the dev->vlan_enabled state.
>>       - if VID != 0 and dev->vlan_enabled, or if VID == 0 and !dev->vlan_enabled,
>>         commit the operation directly to the ARL, as is currently done
>>       - if VID == 0 and !dev->vlan_enabled, or if VID != 0 and dev->vlan_enabled,
>>         operate on a software list, allocating, deleting or modifying a
>>         local representation of the ARL entry
>>     - on vlan_filtering toggles from 0 to 1 or from 1 to 0, acquire
>>       dev->arl_mutex and flush out all static and dynamic ARL entries
>>       across the entire switch, commit the static ones from the software
>>       list and clear the software list
>>     - dev->vlan_enabled will probably need to be merged with
>>       dev->vlan_filtering, since the vlan_enabled=1 vlan_filtering=0 case
>>       is broken
> 
> Actually this algorithm is too simplistic as I specified it. In this sequence:
> 
> ip link add br0 type bridge vlan_filtering 0 && ip link set swp0 master br0
> bridge fdb add swp0 00:01:02:03:04:05 master static
> ip link set br0 type bridge vlan_filtering 1
> ip link set br0 type bridge vlan_filtering 0 # the 00:01:02:03:04:05 address would be lost here
> 
> Furthermore, the ARL is limited in size (1024, 2048 or 4096 entries),
> and we could mistakenly end up queuing more than we can commit.
> 
> I'm not yet sure what are reasonable amendments that would keep the
> complexity in check. Currently the most obvious would be to do a one-time
> allocation of dev->num_arl_bins * dev->num_arl_buckets, to always keep
> all entries in software, and only the active ones in hardware. But I
> need to think about this some more, as I'm aware OpenWrt typically
> doesn't operate with huge memory budgets.
> 
> I'm not sure that avoiding local copies is possible, because the ARL
> entries don't come from a single source - we have bridge FDB, bridge
> MDB, ndo_dflt_fdb_add(), dev->uc, dev->mc, dev->dev_addr, sometimes
> replicated per VLAN, etc. They all only converge at driver level.
> 

Would not we just be better off with enforcing vlan_filtering=1 for any 
bridge that is created? Unlike Marvell switches, the Roboswitch has no 
notion of egress as tag unmodified unfortunately.
-- 
Florian


  reply	other threads:[~2026-08-12 22:28 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-05  7:26 [PATCH net] net: dsa: b53: be VLAN unaware when not filtering Semih Baskan
2026-08-05  7:44 ` Jonas Gorski
2026-08-05  9:50   ` Semih Baskan
2026-08-06 10:23   ` Vladimir Oltean
2026-08-06 11:08     ` Semih Baskan
2026-08-06 11:09     ` Jonas Gorski
2026-08-10 12:04       ` Vladimir Oltean
2026-08-11  8:06         ` Jonas Gorski
2026-08-11 16:13           ` Florian Fainelli
2026-08-12 20:50   ` Vladimir Oltean
2026-08-12 22:06     ` Vladimir Oltean
2026-08-12 22:28       ` Florian Fainelli [this message]
2026-08-13  7:08     ` Jonas Gorski
2026-08-13 10:39       ` Semih Baskan
2026-08-13 11:34       ` Semih Baskan

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=be04045f-6b56-4474-9d05-c40a2c845dcb@broadcom.com \
    --to=florian.fainelli@broadcom.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.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 \
    --cc=pabeni@redhat.com \
    --cc=strst.gs@gmail.com \
    --cc=vladimir.oltean@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 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.