• Vladimir Oltean's avatar
    net: dsa: sja1105: Add support for traffic through standalone ports · 227d07a0
    Vladimir Oltean authored
    In order to support this, we are creating a make-shift switch tag out of
    a VLAN trunk configured on the CPU port. Termination of normal traffic
    on switch ports only works when not under a vlan_filtering bridge.
    Termination of management (PTP, BPDU) traffic works under all
    circumstances because it uses a different tagging mechanism
    (incl_srcpt). We are making use of the generic CONFIG_NET_DSA_TAG_8021Q
    code and leveraging it from our own CONFIG_NET_DSA_TAG_SJA1105.
    
    There are two types of traffic: regular and link-local.
    
    The link-local traffic received on the CPU port is trapped from the
    switch's regular forwarding decisions because it matched one of the two
    DMAC filters for management traffic.
    
    On transmission, the switch requires special massaging for these
    link-local frames. Due to a weird implementation of the switching IP, by
    default it drops link-local frames that originate on the CPU port.
    It needs to be told where to forward them to, through an SPI command
    ("management route") that is valid for only a single frame.
    So when we're sending link-local traffic, we are using the
    dsa_defer_xmit mechanism.
    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>
    227d07a0
sja1105_main.c 45 KB