• Tristram Ha's avatar
    net: dsa: microchip: fix unicast frame leak · 962ad710
    Tristram Ha authored
    Port partitioning is done by enabling UNICAST_VLAN_BOUNDARY and changing
    the default port membership of 0x7f to other values such that there is
    no communication between ports.  In KSZ9477 the member for port 1 is
    0x41; port 2, 0x42; port 3, 0x44; port 4, 0x48; port 5, 0x50; and port 7,
    0x60.  Port 6 is the host port.
    
    Setting a zero value can be used to stop port from receiving.
    
    However, when UNICAST_VLAN_BOUNDARY is disabled and the unicast addresses
    are already learned in the dynamic MAC table, setting zero still allows
    devices connected to those ports to communicate.  This does not apply to
    multicast and broadcast addresses though.  To prevent these leaks and
    make the function of port membership consistent UNICAST_VLAN_BOUNDARY
    should never be disabled.
    
    Note that UNICAST_VLAN_BOUNDARY is enabled by default in KSZ9477.
    
    Fixes: b987e98e
    
     ("dsa: add DSA switch driver for Microchip KSZ9477")
    Signed-off-by: default avatarTristram Ha <Tristram.Ha@microchip.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    962ad710
ksz9477.c 32.1 KB