• Vladimir Oltean's avatar
    net: dsa: sja1105: add bridge TX data plane offload based on tag_8021q · b6ad86e6
    Vladimir Oltean authored
    The main desire for having this feature in sja1105 is to support network
    stack termination for traffic coming from a VLAN-aware bridge.
    
    For sja1105, offloading the bridge data plane means sending packets
    as-is, with the proper VLAN tag, to the chip. The chip will look up its
    FDB and forward them to the correct destination port.
    
    But we support bridge data plane offload even for VLAN-unaware bridges,
    and the implementation there is different. In fact, VLAN-unaware
    bridging is governed by tag_8021q, so it makes sense to have the
    .bridge_fwd_offload_add() implementation fully within tag_8021q.
    The key difference is that we only support 1 VLAN-aware bridge, but we
    support multiple VLAN-unaware bridges. So we need to make sure that the
    forwarding domain is not crossed by packets injected from the stack.
    
    For this, we introduce the concept of a tag_8021q TX VLAN for bridge
    forwarding offload. As opposed to the regular TX VLANs which contain
    only 2 ports (the user port and the CPU port), a bridge data plane TX
    VLAN is "multicast" (or "imprecise"): it contains all the ports that are
    part of a certain bridge, and the hardware will select where the packet
    goes within this "imprecise" forwarding domain.
    
    Each VLAN-unaware bridge has its own "imprecise" TX VLAN, so we make use
    of the unique "bridge_num" provided by DSA for the data plane offload.
    We use the same 3 bits from the tag_8021q VLAN ID format to encode this
    bridge number.
    
    Note that these 3 bit positions have been used before for sub-VLANs in
    best-effort VLAN filtering mode. The difference is that for best-effort,
    the sub-VLANs were only valid on RX (and it was documented that the
    sub-VLAN field needed to be transmitted as zero). Whereas for the bridge
    data plane offload, these 3 bits are only valid on TX.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b6ad86e6
sja1105_main.c 88.4 KB