]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: mv88e6xxx: Improve multichip isolation of standalone ports
authorTobias Waldekranz <tobias@waldekranz.com>
Thu, 3 Feb 2022 10:16:56 +0000 (11:16 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Feb 2022 14:05:56 +0000 (14:05 +0000)
commit834854a187ceaf34d282f2f1d8fb4bf8051e5c1f
tree5e6c6d439fc19d613b0326580a5e4b37e261d61c
parent9a54bfb93a3118783159e45effa8e7211490e1bf
net: dsa: mv88e6xxx: Improve multichip isolation of standalone ports

Given that standalone ports are now configured to bypass the ATU and
forward all frames towards the upstream port, extend the ATU bypass to
multichip systems.

Load VID 0 (standalone) into the VTU with the policy bit set. Since
VID 4095 (bridged) is already loaded, we now know that all VIDs in use
are always available in all VTUs. Therefore, we can safely enable
802.1Q on DSA ports.

Setting the DSA ports' VTU policy to TRAP means that all incoming
frames on VID 0 will be classified as MGMT - as a result, the ATU is
bypassed on all subsequent switches.

With this isolation in place, we are able to support configurations
that are simultaneously very quirky and very useful. Quirky because it
involves looping cables between local switchports like in this
example:

   CPU
    |     .------.
.---0---. | .----0----.
|  sw0  | | |   sw1   |
'-1-2-3-' | '-1-2-3-4-'
  $ @ '---'   $ @ % %

We have three physically looped pairs ($, @, and %).

This is very useful because it allows us to run the kernel's
kselftests for the bridge on mv88e6xxx hardware.

Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx/chip.c
include/net/dsa.h