• Nir Dotan's avatar
    mlxsw: core_acl_flex_actions: Return error for conflicting actions · 3757b255
    Nir Dotan authored
    Spectrum switch ACL action set is built in groups of three actions
    which may point to additional actions. A group holds a single record
    which can be set as goto record for pointing at a following group
    or can be set to mark the termination of the lookup. This is perfectly
    adequate for handling a series of actions to be executed on a packet.
    While the SW model allows configuration of conflicting actions
    where it is clear that some actions will never execute, the mlxsw
    driver must block such configurations as it creates a conflict
    over the single terminate/goto record value.
    
    For a conflicting actions configuration such as:
    
     # tc filter add dev swp49 parent ffff: \
       protocol ip pref 10 \
       flower skip_sw dst_ip 192.168.101.1 \
       action goto chain 100 \
       action mirred egress mirror dev swp4
    
    Where it is clear that the last action will never execute, the
    mlxsw driver was issuing a warning instead of returning an error.
    Therefore replace that warning with an error for this specific
    case.
    
    Fixes: 4cda7d8d ("mlxsw: core: Introduce flexible actions support")
    Signed-off-by: default avatarNir Dotan <nird@mellanox.com>
    Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3757b255
core_acl_flex_actions.c 32.9 KB