• Chris Mi's avatar
    net/mlx5e: Parse mirroring action for offloaded TC eswitch flows · 592d3651
    Chris Mi authored
    Currently, we only support the mirred redirect TC sub-action. In order
    to support flow based vport mirroring, add support to parse the mirred
    mirror sub-action.
    
    For mirroring, user-space will typically set the action order such that
    the mirror port (mirror VF) sees packets as the original port (VF under
    mirroring) sent them or as it will receive them.
    
    In the general case, it means that packets are potentially sent to the
    mirror port before or after some actions were applied on them. To
    properly do that, we should follow on the exact action order as set for
    the flow and make sure this will also be the case when we program the HW
    offload.
    
    We introduce a counter for the output ports (attr->out_count), which we
    increase when parsing each mirred redirect/mirror sub-action and when
    dealing with encap.
    
    We introduce a counter (attr->mirror_count) telling us if split is
    needed. If no split is needed and mirroring is just multicasting to
    vport, the mirror count is zero, all the actions of the TC flow should
    apply on that single HW flow.
    
    If split is needed, the mirror count tells where to do the split, all
    non-mirred tc actions should apply only after the split.
    
    The mirror count is set while parsing the following actions encap/decap,
    header re-write, vlan push/pop.
    Signed-off-by: default avatarChris Mi <chrism@mellanox.com>
    Reviewed-by: default avatarPaul Blakey <paulb@mellanox.com>
    Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    592d3651
eswitch_offloads.c 33.8 KB