From: Ido Schimmel <ido...@mellanox.com> This patch set adds support for tc police action in mlxsw.
Patches #1-#2 add defines for policer bandwidth limits and resource identifiers (e.g., maximum number of policers). Patch #3 adds a common policer core in mlxsw. Currently it is only used by the policy engine, but future patch sets will use it for trap policers and storm control policers. The common core allows us to share common logic between all policer types and abstract certain details from the various users in mlxsw. Patch #4 exposes the maximum number of supported policers and their current usage to user space via devlink-resource. This provides better visibility and also used for selftests purposes. Patches #5-#7 gradually add support for tc police action in the policy engine by calling into previously mentioned policer core. Patch #8 adds a generic selftest for tc-police that can be used with veth pairs or physical loopbacks. Patches #9-#11 add mlxsw-specific selftests. Ido Schimmel (11): mlxsw: reg: Add policer bandwidth limits mlxsw: resources: Add resource identifier for global policers mlxsw: spectrum_policer: Add policer core mlxsw: spectrum_policer: Add devlink resource support mlxsw: core_acl_flex_actions: Work around hardware limitation mlxsw: core_acl_flex_actions: Add police action mlxsw: spectrum_acl: Offload FLOW_ACTION_POLICE selftests: forwarding: Add tc-police tests selftests: mlxsw: tc_restrictions: Test tc-police restrictions selftests: mlxsw: Add scale test for tc-police selftests: mlxsw: Test policers' occupancy drivers/net/ethernet/mellanox/mlxsw/Makefile | 2 +- .../mellanox/mlxsw/core_acl_flex_actions.c | 304 +++++++++++- .../mellanox/mlxsw/core_acl_flex_actions.h | 8 + drivers/net/ethernet/mellanox/mlxsw/reg.h | 9 + .../net/ethernet/mellanox/mlxsw/resources.h | 2 + .../net/ethernet/mellanox/mlxsw/spectrum.c | 20 + .../net/ethernet/mellanox/mlxsw/spectrum.h | 46 +- .../ethernet/mellanox/mlxsw/spectrum_acl.c | 33 +- .../mlxsw/spectrum_acl_flex_actions.c | 27 + .../ethernet/mellanox/mlxsw/spectrum_flower.c | 30 +- .../mellanox/mlxsw/spectrum_policer.c | 468 ++++++++++++++++++ .../net/mlxsw/spectrum-2/resource_scale.sh | 2 +- .../net/mlxsw/spectrum-2/tc_police_scale.sh | 16 + .../net/mlxsw/spectrum/resource_scale.sh | 2 +- .../net/mlxsw/spectrum/tc_police_scale.sh | 16 + .../drivers/net/mlxsw/tc_police_occ.sh | 108 ++++ .../drivers/net/mlxsw/tc_police_scale.sh | 92 ++++ .../drivers/net/mlxsw/tc_restrictions.sh | 76 +++ .../selftests/net/forwarding/devlink_lib.sh | 5 + .../selftests/net/forwarding/tc_police.sh | 333 +++++++++++++ 20 files changed, 1575 insertions(+), 24 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_policer.c create mode 100644 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_police_scale.sh create mode 100644 tools/testing/selftests/drivers/net/mlxsw/spectrum/tc_police_scale.sh create mode 100755 tools/testing/selftests/drivers/net/mlxsw/tc_police_occ.sh create mode 100644 tools/testing/selftests/drivers/net/mlxsw/tc_police_scale.sh create mode 100755 tools/testing/selftests/net/forwarding/tc_police.sh -- 2.26.2