mbox series

[net,mlxsw,v3,0/4] mlxsw: Fix ACL actions error condition handling

Message ID 20180801082455.19751-1-nird@mellanox.com (mailing list archive)
Headers show
Series mlxsw: Fix ACL actions error condition handling | expand

Message

Nir Dotan Aug. 1, 2018, 8:24 a.m. UTC
Two issues were lately noticed within mlxsw ACL actions error condition
handling. The first patch deals with conflicting actions 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 redirect dev swp4

The second action will never execute, however SW model allows this configuration,
while the mlxsw driver cannot allow for it as it implements actions in sets of up
to three actions per set with a single termination marking. Conflicting actions
create a contradiction over this single marking and thus cannot be configured.
The fix replaces a misplaced warning with an error code to be returned.

Patches 2-4 fix a condition of duplicate destruction of resources.
Some actions require allocation of specific resource prior to setting the action
itself. On error condition this resource was destroyed twice, leading to a crash
when using mirror action, and to a redundant destruction in other cases, since
for error condition rule destruction also takes care of resource destruction.
In order to fix this state a symmetry in behavior is added and resource
destruction also takes care of removing the resource from rule's resource list.

v2:
* Rephrase parts of the cover letter
* Split patch #2 to three patches #2-#4
* See individual patches for changes

v3:
* Repharse parts of the cover letter
* Rephrase commit texts for patches

Nir Dotan (4):
  mlxsw: core_acl_flex_actions: Return error for conflicting actions
  mlxsw: core_acl_flex_actions: Remove redundant resource destruction
  mlxsw: core_acl_flex_actions: Remove redundant counter destruction
  mlxsw: core_acl_flex_actions: Remove redundant mirror resource
    destruction

 .../mellanox/mlxsw/core_acl_flex_actions.c         | 51 ++++++++++++----------
 1 file changed, 29 insertions(+), 22 deletions(-)