• Ido Schimmel's avatar
    mlxsw: spectrum_flower: Disable learning and security lookup when redirecting · 0433670e
    Ido Schimmel authored
    It is possible to add a filter that redirects traffic from the ingress
    of a bridge port that is locked (i.e., performs security / SMAC lookup)
    and has learning enabled. For example:
    
     # ip link add name br0 type bridge
     # ip link set dev swp1 master br0
     # bridge link set dev swp1 learning on locked on mab on
     # tc qdisc add dev swp1 clsact
     # tc filter add dev swp1 ingress pref 1 proto ip flower skip_sw src_ip 192.0.2.1 action mirred egress redirect dev swp2
    
    In the kernel's Rx path, this filter is evaluated before the Rx handler
    of the bridge, which means that redirected traffic should not be
    affected by bridge port configuration such as learning.
    
    However, the hardware data path is a bit different and the redirect
    action (FORWARDING_ACTION in hardware) merely attaches a pointer to the
    packet, which is later used by the L2 lookup stage to understand how to
    forward the packet. Between both stages - ingress ACL and L2 lookup -
    learning and security lookup are performed, which means that redirected
    traffic is affected by bridge port configuration, unlike in the kernel's
    data path.
    
    The learning discrepancy was handled in commit 577fa14d ("mlxsw:
    spectrum: Do not process learned records with a dummy FID") by simply
    ignoring learning notifications generated by the redirected traffic. A
    similar solution is not possible for the security / SMAC lookup since
    - unlike learning - the CPU is not involved and packets that failed the
    lookup are dropped by the device.
    
    Instead, solve this by prepending the ignore action to the redirect
    action and use it to instruct the device to disable both learning and
    the security / SMAC lookup for redirected traffic.
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0433670e
spectrum.h 51.3 KB