Jiri says: During region rehash, a new region is created with a more optimized set of masks (ERPs). When transitioning to the new region, all the rules from the old region are copied one-by-one to the new region. This transition can be time consuming and currently done under RTNL lock.
In order to remove RTNL lock dependency during region rehash, introduce multiple smaller locks guarding dedicated structures or parts of them. That is the vast majority of this patchset. Only patch #1 is simple cleanup and patches 12-15 are improving or introducing new selftests. Jiri Pirko (15): mlxsw: spectrum_acl: Remove unused ops field from group structure mlxsw: spectrum_acl: Split TCAM group structure into two mlxsw: spectrum_acl: Introduce a mutex to guard region list updates mlxsw: spectrum_acl: Refactor vregion association code mlxsw: spectrum_acl: Introduce vregion mutex mlxsw: spectrum_acl: Introduce mutex to guard Bloom Filter updates mlxsw: spectrum_acl: Introduce a mutex to guard objagg instance manipulation mlxsw: spectrum_acl: Enable vregion rehash per-profile mlxsw: spectrum_acl: Don't take rtnl lock during vregion_rehash_intrvl_set() mlxsw: spectrum_acl: Remove RTNL lock assertions from ERP code mlxsw: spectrum_acl: Don't take mutex in mlxsw_sp_acl_tcam_vregion_rehash_work() selftests: mlxsw: spectrum-2: Add IPv6 variant of simple delta rehash test mlxsw: spectrum_acl: Add vregion migration end tracepoint selftests: mlxsw: spectrum-2: Check migrate end trace selftests: mlxsw: spectrum-2: Add massive delta rehash test .../mlxsw/spectrum_acl_bloom_filter.c | 34 +- .../mellanox/mlxsw/spectrum_acl_erp.c | 31 +- .../mellanox/mlxsw/spectrum_acl_tcam.c | 446 +++++++++++------- .../mellanox/mlxsw/spectrum_acl_tcam.h | 3 + include/trace/events/mlxsw.h | 20 + .../drivers/net/mlxsw/spectrum-2/tc_flower.sh | 245 ++++++++++ 6 files changed, 592 insertions(+), 187 deletions(-) -- 2.20.1