• Ariel Levkovich's avatar
    net/mlx5e: Fix mapping of ct_label zero · d24f847e
    Ariel Levkovich authored
    ct_label 0 is a default label each flow has and therefore
    there can be rules that match on ct_label=0 without a prior
    rule that set the ct_label to this value.
    
    The ct_label value is not used directly in the HW rules and
    instead it is mapped to some id within a defined range and this
    id is used to set and match the metadata register which carries
    the ct_label.
    
    If we have a rule that matches on ct_label=0, the hw rule will
    perform matching on a value that is != 0 because of the mapping
    from label to id. Since the metadata register default value is
    0 and it was never set before to anything else by an action that
    sets the ct_label, there will always be a mismatch between that
    register and the value in the rule.
    
    To support such rule, a forced mapping of ct_label 0 to id=0
    is done so that it will match the metadata register default
    value of 0.
    
    Fixes: 54b154ec ("net/mlx5e: CT: Map 128 bits labels to 32 bit map ID")
    Signed-off-by: default avatarAriel Levkovich <lariel@nvidia.com>
    Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
    d24f847e
tc_ct.c 58.1 KB