mlxsw: Improve blocks selection for IPv6 multicast forwarding
Status from this message: This series was applied to netdev/net-next.git (main)
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest3 patches 0 repliesApplied 3/3
- v13 patches 1 replySuperseded
Changes in v2 from the cover letter
- Resending without changes.
Patches in v2 All 3 applied
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | mlxsw: Add 'ipv4_5' flex keydrivers/ drivers/ drivers/ +1 more | +10 | 0 replies | Applied |
| 2/3 | mlxsw: spectrum_acl_flex_keys: Add 'ipv4_5b' flex keydrivers/ | +3 | 0 replies | Applied |
| 3/3 | mlxsw: Edit IPv6 key blocks to use one less block for multicast forwardingdrivers/ drivers/ drivers/ +1 more | +22 | 0 replies | Applied |
Reviews trailers per patch
All 3 patches have a Reviewed-by or Acked-by.
| Patch | Ido Schimmel |
|---|---|
| 1/3 | R-b |
| 2/3 | R-b |
| 3/3 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH net-next v2 0/3] mlxsw: Improve blocks selection for IPv6 multicast forwarding
Amit Cohen writes:
The driver configures two ACL regions during initialization, these regions are used for IPv4 and IPv6 multicast forwarding. Entries residing in these two regions match on the {SIP, DIP, VRID} key elements.
Currently for IPv6 region, 9 key blocks are used. This can be improved by reducing the amount key blocks needed for the IPv6 region to 8. It is possible to use key blocks that mix subsets of the VRID element with subsets of the DIP element.
To make this happen, we have to take in account the algorithm that chooses which key blocks will be used. It is lazy and not the optimal one as it is a complex task. It searches the block that contains the most elements that are required, chooses it, removes the elements that appear in the chosen block and starts again searching the block that contains the most elements.
To optimize the nubmber of the blocks for IPv6 multicast forwarding, handle the following:
1. Add support for key blocks that mix subsets of the VRID element with subsets of the DIP element.
2. Prevent the algorithm from chosing another blocks for VRID. Currently, we have the block 'ipv4_4' which contains 2 sub-elements of VRID. With the existing algorithm, this block might be chosen, then 8 blocks must be chosen for SIP and DIP and we will get 9 blocks to match on {SIP, DIP, VRID}. Therefore, replace this block with a new block 'ipv4_5' that contains 1 element for VRID, this will not be chosen for IPv6 as VRID element will be broken to several sub-elements. In this way we can get 8 blocks for IPv6 multicast forwarding.
This improvement was tested and indeed 8 blocks are used instead of 9.
v2:
- Resending without changes.
Amit Cohen (3):
mlxsw: Add 'ipv4_5' flex key
mlxsw: spectrum_acl_flex_keys: Add 'ipv4_5b' flex key
mlxsw: Edit IPv6 key blocks to use one less block for multicast
forwarding
.../mellanox/mlxsw/core_acl_flex_keys.c | 6 ++++-- .../mellanox/mlxsw/core_acl_flex_keys.h | 6 ++++-- .../mellanox/mlxsw/spectrum2_mr_tcam.c | 20 +++++++++++-------- .../mellanox/mlxsw/spectrum_acl_flex_keys.c | 18 +++++++++-------- 4 files changed, 30 insertions(+), 20 deletions(-)
Signature · 1 line
2.41.0