net: dsa: mv88e6xxx: share the same default FDB
authorVivien Didelot <vivien.didelot@savoirfairelinux.com>
Thu, 14 Apr 2016 18:42:09 +0000 (14:42 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 Apr 2016 23:07:10 +0000 (19:07 -0400)
commit207afda1b5036009e611df2106e6d441be397bee
tree64300bcb19eb48add0e01d5402d85eb006d81bb3
parent996ecb8246676100af2a4dc1cfed747712a3c85f
net: dsa: mv88e6xxx: share the same default FDB

For hardware cross-chip bridging to work, user ports *and* DSA ports
need to share a common address database, in order to switch a frame to
the correct interconnected device.

This is currently working for VLAN filtering aware systems, since Linux
will implement a bridge group as a 802.1Q VLAN, which has its own FDB,
including DSA and CPU links as members.

However when the system doesn't support VLAN filtering, Linux only
relies on the port-based VLAN to implement a bridge group.

To fix hardware cross-chip bridging for such systems, set the same
default address database 0 for user and DSA ports, instead of giving
them all a different default database.

Note that the bridging code prevents frames to egress between unbridged
ports, and flushes FDB entries of a port when changing its STP state.

Also note that the FID 0 is special and means "all" for ATU operations,
but it's OK since it is used as a default forwarding address database.

Fixes: 2db9ce1fd9a3 ("net: dsa: mv88e6xxx: assign default FDB to ports")
Fixes: 466dfa077022 ("net: dsa: mv88e6xxx: assign dynamic FDB to bridges")
Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/mv88e6xxx.c