• Vladimir Oltean's avatar
    net: dsa: sja1105: Limit use of incl_srcpt to bridge+vlan mode · 42824463
    Vladimir Oltean authored
    The incl_srcpt setting makes the switch mangle the destination MACs of
    multicast frames trapped to the CPU - a primitive tagging mechanism that
    works even when we cannot use the 802.1Q software features.
    
    The downside is that the two multicast MAC addresses that the switch
    traps for L2 PTP (01-80-C2-00-00-0E and 01-1B-19-00-00-00) quickly turn
    into a lot more, as the switch encodes the source port and switch id
    into bytes 3 and 4 of the MAC. The resulting range of MAC addresses
    would need to be installed manually into the DSA master port's multicast
    MAC filter, and even then, most devices might not have a large enough
    MAC filtering table.
    
    As a result, only limit use of incl_srcpt to when it's strictly
    necessary: when under a VLAN filtering bridge.  This fixes PTP in
    non-bridged mode (standalone ports). Otherwise, PTP frames, as well as
    metadata follow-up frames holding RX timestamps won't be received
    because they will be blocked by the master port's MAC filter.
    Linuxptp doesn't help, because it only requests the addition of the
    unmodified PTP MACs to the multicast filter.
    This issue is not seen in bridged mode because the master port is put in
    promiscuous mode when the slave ports are enslaved to a bridge.
    Therefore, there is no downside to having the incl_srcpt mechanism
    active there.
    Signed-off-by: default avatarVladimir Oltean <olteanv@gmail.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    42824463
sja1105_main.c 52.6 KB