• Ivan Khoronzhuk's avatar
    net: ethernet: ti: cpsw: use for mcast entries only host port · 5b3a5a14
    Ivan Khoronzhuk authored
    In dual-emac mode the cpsw driver sends directed packets, that means
    that packets go to the directed port, but an ALE lookup is performed
    to determine untagged egress only. It means that on tx side no need
    to add port bit for ALE mcast entry mask, and basically ALE entry
    for port identification is needed only on rx side.
    
    So, add only host port in dual_emac mode as used directed
    transmission, and no need in one more port. For single port boards
    and switch mode all ports used, as usual, so no changes for them.
    Also it simplifies farther changes.
    
    In other words, mcast entries for dual-emac should behave exactly
    like unicast. It also can help avoid leaking packets between ports
    with same vlan on h/w level if ports could became members of same vid.
    
    So now, for instance, if mcast address 33:33:00:00:00:01 is added then
    entries in ALE table:
    
    vid = 1, addr = 33:33:00:00:00:01, port_mask = 0x1
    vid = 2, addr = 33:33:00:00:00:01, port_mask = 0x1
    
    Instead of:
    vid = 1, addr = 33:33:00:00:00:01, port_mask = 0x3
    vid = 2, addr = 33:33:00:00:00:01, port_mask = 0x5
    
    With the same considerations, set only host port for unregistered
    mcast for dual-emac mode in case of IFF_ALLMULTI is set, exactly like
    it's done in cpsw_ale_set_allmulti().
    Signed-off-by: default avatarIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
    Reviewed-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5b3a5a14
cpsw.c 96.8 KB