mbox series

[net-next,0/7] VLAN improvements for Ocelot switch

Message ID 20201031102916.667619-1-vladimir.oltean@nxp.com (mailing list archive)
Headers show
Series VLAN improvements for Ocelot switch | expand

Message

Vladimir Oltean Oct. 31, 2020, 10:29 a.m. UTC
The main reason why I started this work is that deleting the bridge mdb
entries fails when the bridge is deleted, as described here:
https://lore.kernel.org/netdev/20201015173355.564934-1-vladimir.oltean@nxp.com/

In short, that happens because the bridge mdb entries are added with a
vid of 1, but deletion is attempted with a vid of 0. So the deletion
code fails to find the mdb entries.

The solution is to make ocelot use a pvid of 0 when it is under a bridge
with vlan_filtering 0. When vlan_filtering is 1, the pvid of the bridge
is what is programmed into the hardware.

The patch series also uncovers more bugs and does some more cleanup, but
the above is the main idea behind it.

Vladimir Oltean (7):
  net: mscc: ocelot: use the pvid of zero when bridged with
    vlan_filtering=0
  net: mscc: ocelot: don't reset the pvid to 0 when deleting it
  net: mscc: ocelot: transform the pvid and native vlan values into a
    structure
  net: mscc: ocelot: add a "valid" boolean to struct ocelot_vlan
  net: mscc: ocelot: move the logic to drop 802.1p traffic to the pvid
    deletion
  net: mscc: ocelot: deny changing the native VLAN from the prepare
    phase
  net: dsa: felix: improve the workaround for multiple native VLANs on
    NPI port

 drivers/net/dsa/ocelot/felix.c         |  27 ++++-
 drivers/net/ethernet/mscc/ocelot.c     | 147 +++++++++++++------------
 drivers/net/ethernet/mscc/ocelot_net.c |  38 +++++--
 include/soc/mscc/ocelot.h              |  17 ++-
 4 files changed, 138 insertions(+), 91 deletions(-)

Comments

Jakub Kicinski Nov. 3, 2020, 1:10 a.m. UTC | #1
On Sat, 31 Oct 2020 12:29:09 +0200 Vladimir Oltean wrote:
> The main reason why I started this work is that deleting the bridge mdb
> entries fails when the bridge is deleted, as described here:
> https://lore.kernel.org/netdev/20201015173355.564934-1-vladimir.oltean@nxp.com/
> 
> In short, that happens because the bridge mdb entries are added with a
> vid of 1, but deletion is attempted with a vid of 0. So the deletion
> code fails to find the mdb entries.
> 
> The solution is to make ocelot use a pvid of 0 when it is under a bridge
> with vlan_filtering 0. When vlan_filtering is 1, the pvid of the bridge
> is what is programmed into the hardware.
> 
> The patch series also uncovers more bugs and does some more cleanup, but
> the above is the main idea behind it.

Applied, thanks!