This patchset includes two improvements with regards to shared buffer configuration in mlxsw.
The first part of this patchset forbids the user from performing illegal shared buffer configuration that can result in unnecessary packet loss. In order to better communicate these configuration failures to the user, extack is propagated from devlink towards drivers. This is done in patches #1-#8. The second part of the patchset deals with the shared buffer configuration of the CPU port. When a packet is trapped by the device, it is sent across the PCI bus to the attached host CPU. From the device's perspective, it is as if the packet is transmitted through the CPU port. While testing traffic directed at the CPU it became apparent that for certain packet sizes and certain burst sizes, the current shared buffer configuration of the CPU port is inadequate and results in packet drops. The configuration is adjusted by patches #9-#14 that create two new pools - ingress & egress - which are dedicated for CPU traffic. Ido Schimmel (14): net: devlink: Add extack to shared buffer operations mlxsw: spectrum_buffers: Add extack messages for invalid configurations mlxsw: spectrum_buffers: Use defines for pool indices mlxsw: spectrum_buffers: Add ability to veto pool's configuration mlxsw: spectrum_buffers: Add ability to veto TC's configuration mlxsw: spectrum_buffers: Forbid configuration of multicast pool mlxsw: spectrum_buffers: Forbid changing threshold type of first egress pool mlxsw: spectrum_buffers: Forbid changing multicast TCs' attributes mlxsw: spectrum_buffers: Remove assumption about pool order mlxsw: spectrum_buffers: Add pools for CPU traffic mlxsw: spectrum_buffers: Use new CPU ingress pool for control packets mlxsw: spectrum_buffers: Split business logic from mlxsw_sp_port_sb_pms_init() mlxsw: spectrum_buffers: Allow skipping ingress port quota configuration mlxsw: spectrum_buffers: Adjust CPU port shared buffer egress quotas drivers/net/ethernet/mellanox/mlxsw/core.c | 16 +- drivers/net/ethernet/mellanox/mlxsw/core.h | 8 +- .../net/ethernet/mellanox/mlxsw/spectrum.h | 8 +- .../mellanox/mlxsw/spectrum_buffers.c | 388 ++++++++++++------ .../net/ethernet/netronome/nfp/nfp_devlink.c | 3 +- include/net/devlink.h | 8 +- net/core/devlink.c | 22 +- 7 files changed, 300 insertions(+), 153 deletions(-) -- 2.20.1