• Vivien Didelot's avatar
    net: dsa: mv88e6xxx: share the same default FDB · 207afda1
    Vivien Didelot authored
    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: 2db9ce1f ("net: dsa: mv88e6xxx: assign default FDB to ports")
    Fixes: 466dfa07 ("net: dsa: mv88e6xxx: assign dynamic FDB to bridges")
    Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    207afda1
mv88e6xxx.c 72.6 KB