• Lennart Sorensen's avatar
    drivers: net: cpsw: Support ALLMULTI and fix IFF_PROMISC in switch mode · 1e5c4bc4
    Lennart Sorensen authored
    The cpsw driver did not support the IFF_ALLMULTI flag which makes dynamic
    multicast routing not work.  Related to this, when enabling IFF_PROMISC
    in switch mode, all registered multicast addresses are flushed, resulting
    in only broadcast and unicast traffic being received.
    
    A new cpsw_ale_set_allmulti function now scans through the ALE entry
    table and adds/removes the host port from the unregistered multicast
    port mask of each vlan entry depending on the state of IFF_ALLMULTI.
    In promiscious mode, cpsw_ale_set_allmulti is used to force reception
    of all multicast traffic in addition to the unicast and broadcast traffic.
    
    With this change dynamic multicast and promiscious mode both work in
    switch mode.
    Signed-off-by: default avatarLen Sorensen <lsorense@csclub.uwaterloo.ca>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1e5c4bc4
cpsw_ale.c 18.2 KB