Message ID | cover.1696330098.git.petrm@nvidia.com (mailing list archive) |
---|---|
Headers | show |
Series | mlxsw: Control the order of blocks in ACL region | expand |
On Tue, Oct 03, 2023 at 01:25:25PM +0200, Petr Machata wrote: > Amit Cohen writes: > > For 12 key blocks in the A-TCAM, rules are split into two records, which > constitute two lookups. The two records are linked using a > "large entry key ID". > > Due to a Spectrum-4 hardware issue, KVD entries that correspond to key > blocks 0 to 5 of 12 key blocks will be placed in the same KVD pipe if they > only differ in their "large entry key ID", as it is ignored. This results > in a reduced scale, we can insert less than 20k filters and get an error: > > $ tc -b flower.batch > RTNETLINK answers: Input/output error > We have an error talking to the kernel > > To reduce the probability of this issue, we can place key blocks with > high entropy in blocks 0 to 5. The idea is to place blocks that are often > changed in blocks 0 to 5, for example, key blocks that match on IPv4 > addresses or the LSBs of IPv6 addresses. Such placement will reduce the > probability of these blocks to be same. > > Mark several blocks with 'high_entropy' flag and place them in blocks 0 > to 5. Note that the list of the blocks is just a suggestion, I will verify > it with architects. > > Currently, there is a one loop that chooses which blocks should be used > for a given list of elements and fills the blocks - when a block is > chosen, it fills it in the region. To be able to control the order of > the blocks, separate between searching blocks and filling them. Several > pre-changes are required. > > Patch set overview: > Patch #1 marks several blocks with 'high_entropy' flag. > Patches #2-#4 prepare the code for filling blocks at the end of the search. > Patch #5 changes the loop to just choose the blocks and fill the blocks at > the end. > > Amit Cohen (5): > mlxsw: Mark high entropy key blocks > mlxsw: core_acl_flex_keys: Add a bitmap to save which blocks are > chosen > mlxsw: core_acl_flex_keys: Save chosen elements per block > mlxsw: core_acl_flex_keys: Save chosen elements in all blocks per > search > mlxsw: core_acl_flex_keys: Fill blocks with high entropy first > > .../mellanox/mlxsw/core_acl_flex_keys.c | 64 +++++++++++++++++-- > .../mellanox/mlxsw/core_acl_flex_keys.h | 9 +++ > .../mellanox/mlxsw/spectrum_acl_flex_keys.c | 12 ++-- > 3 files changed, 72 insertions(+), 13 deletions(-) For series, Reviewed-by: Simon Horman <horms@kernel.org>
Hello: This series was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Tue, 3 Oct 2023 13:25:25 +0200 you wrote: > Amit Cohen writes: > > For 12 key blocks in the A-TCAM, rules are split into two records, which > constitute two lookups. The two records are linked using a > "large entry key ID". > > Due to a Spectrum-4 hardware issue, KVD entries that correspond to key > blocks 0 to 5 of 12 key blocks will be placed in the same KVD pipe if they > only differ in their "large entry key ID", as it is ignored. This results > in a reduced scale, we can insert less than 20k filters and get an error: > > [...] Here is the summary with links: - [net-next,1/5] mlxsw: Mark high entropy key blocks https://git.kernel.org/netdev/net-next/c/cad6431b8675 - [net-next,2/5] mlxsw: core_acl_flex_keys: Add a bitmap to save which blocks are chosen https://git.kernel.org/netdev/net-next/c/0a67b7a0ec36 - [net-next,3/5] mlxsw: core_acl_flex_keys: Save chosen elements per block https://git.kernel.org/netdev/net-next/c/545535fd30dc - [net-next,4/5] mlxsw: core_acl_flex_keys: Save chosen elements in all blocks per search https://git.kernel.org/netdev/net-next/c/900f4285bbc2 - [net-next,5/5] mlxsw: core_acl_flex_keys: Fill blocks with high entropy first https://git.kernel.org/netdev/net-next/c/c01e24936d16 You are awesome, thank you!