The Spectrum-2 ASIC allows multiple rules to use the same mask provided
that the difference between their masks is small enough (up to 8
consecutive delta bits). A more detailed explanation is provided in
merge commit 756cd36626f7 ("Merge branch
'mlxsw-Introduce-algorithmic-TCAM-support'").

These delta bits are part of the rule's key and therefore rules that
only differ in their delta bits can be inserted with the same A-TCAM
mask. In case two rules share the same key and only differ in their
priority, then the second will spill to the C-TCAM.

Current code does not take the delta bits into account when checking for
duplicate rules, which leads to unnecessary spillage to the C-TCAM.
This may result in reduced scale and performance.

Patch #1 includes the delta bits in the rule's key to avoid the above
mentioned problem.

Patch #2 adds a tracepoint when a rule is inserted into the C-TCAM.

Patches #3-#5 add test cases to make sure unnecessary spillage into the
C-TCAM does not occur.

Jiri Pirko (5):
  mlxsw: spectrum_acl: Include delta bits into hashtable key
  mlxsw: spectrum_acl: Add C-TCAM spill tracepoint
  selftests: spectrum-2: Extend and move trace helpers
  selftests: spectrum-2: Fix multiple_masks_test
  selftests: spectrum-2: Add delta two masks one key test

 .../mellanox/mlxsw/spectrum_acl_atcam.c       |  24 +--
 .../mlxsw/spectrum_acl_bloom_filter.c         |   2 +-
 .../mellanox/mlxsw/spectrum_acl_tcam.h        |  10 +-
 include/trace/events/mlxsw.h                  |  38 +++++
 .../drivers/net/mlxsw/spectrum-2/tc_flower.sh | 143 ++++++++++++++----
 5 files changed, 174 insertions(+), 43 deletions(-)
 create mode 100644 include/trace/events/mlxsw.h

-- 
2.20.1

Reply via email to