This patch set adds initial support for the Spectrum-2 ASIC. The first two patches add Spectrum-2 specific KVD linear (KVDL) manager. Unlike the Spectrum ASIC, there is no linear memory and instead the type of the entry (e.g., nexthop) and its index are hashed and the entry is placed in the computed address in the hash-based KVD memory.
The third patch adds Spectrum-2 stubs in the multicast routing code. Support for multicast routing will be added later on. Patches 4-15 add ACL support. The Spectrum-2 ASIC includes an algorithmic TCAM (A-TCAM) and a regular circuit TCAM (C-TCAM) for rules that can't be inserted into the A-TCAM. This set does not make use of the A-TCAM and only places rules in the C-TCAM. This provides equivalent scale and performance to the Spectrum ASIC. A follow-up patch set will introduce A-TCAM support. The last patch extends the main driver file to work with both ASICs. Ido Schimmel (6): mlxsw: reg: Add Policy-Engine Region Configuration Register mlxsw: reg: Add Policy-Engine Region eRP Register mlxsw: reg: Add Policy-Engine General Configuration Register mlxsw: spectrum_acl: Prepare for Spectrum-2 block encoding mlxsw: spectrum_acl: Add support for Spectrum-2 block encoding mlxsw: spectrum_acl: Add region association callback Jiri Pirko (10): mlxsw: reg: Add Infrastructure Entry Delete Register mlxsw: spectrum: Add KVDL manager implementation for Spectrum-2 mlxsw: spectrum_mr_tcam: Add Spectrum-2 stubs mlxsw: spectrum: Add Spectrum-2 variant of flex actions ops mlxsw: spectrum: Introduce flex key blocks for Spectrum-2 mlxsw: reg: Add support for activity information from PEFA register mlxsw: acl: Introduce activity get operation for action block/set mlxsw: reg: Add Policy-Engine Region Association Register mlxsw: spectrum_acl: Add initial Spectrum-2 ACL implementation mlxsw: spectrum: Extend to support Spectrum-2 ASIC drivers/net/ethernet/mellanox/mlxsw/Makefile | 8 +- .../mellanox/mlxsw/core_acl_flex_actions.c | 15 + .../mellanox/mlxsw/core_acl_flex_actions.h | 4 + .../ethernet/mellanox/mlxsw/core_acl_flex_keys.c | 70 ++++- .../ethernet/mellanox/mlxsw/core_acl_flex_keys.h | 3 +- drivers/net/ethernet/mellanox/mlxsw/pci.h | 1 + drivers/net/ethernet/mellanox/mlxsw/reg.h | 285 ++++++++++++++++++- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 170 +++++++++--- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 13 + .../ethernet/mellanox/mlxsw/spectrum1_acl_tcam.c | 8 + .../ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c | 222 +++++++++++++++ .../net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c | 302 +++++++++++++++++++++ .../ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c | 82 ++++++ .../ethernet/mellanox/mlxsw/spectrum_acl_atcam.c | 95 +++++++ .../mellanox/mlxsw/spectrum_acl_flex_actions.c | 55 +++- .../mellanox/mlxsw/spectrum_acl_flex_keys.c | 210 +++++++++++--- .../ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 5 + .../ethernet/mellanox/mlxsw/spectrum_acl_tcam.h | 5 + 18 files changed, 1467 insertions(+), 86 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum2_acl_tcam.c create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum2_kvdl.c create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum2_mr_tcam.c create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c -- 2.14.4