From: Ido Schimmel <ido...@mellanox.com>

Petr says:

In Spectrum ASICs, the shared buffer is an area of memory where packets are
kept until they can be transmitted. There are two resources associated with
shared buffer size: cap_total_buffer_size and cap_guaranteed_shared_buffer.
So far, mlxsw has been using the former as a limit when validating shared
buffer pool size configuration. However, the total size also includes
headrooms and reserved space, which really cannot be used for shared buffer
pools. Patch #1 mends this and has mlxsw use the guaranteed size.

To configure default pool sizes, mlxsw has historically hard-coded one or
two smallish pools, and one "main" pool that took most of the shared buffer
(that would be pool 0 on ingress and pool 4 on egress). During the
development of Spectrum-2, it became clear that the shared buffer size
keeps shrinking as bugs are identified and worked around. In order to
prevent having to tweak the size of pools 0 and 4 to catch up with updates
to values reported by the FW, patch #2 changes the way these pools are set.
Instead of hard-coding a fixed value, the main pool now takes whatever is
left from the guaranteed size after the smaller pool(s) are taken into
account.

Petr Machata (2):
  mlxsw: spectrum: Use guaranteed buffer size as pool size limit
  mlxsw: spectrum_buffers: Calculate the size of the main pool

 .../net/ethernet/mellanox/mlxsw/resources.h   |  4 +-
 .../mellanox/mlxsw/spectrum_buffers.c         | 53 +++++++++++++------
 .../ethernet/mellanox/mlxsw/spectrum_qdisc.c  |  3 +-
 3 files changed, 42 insertions(+), 18 deletions(-)

-- 
2.21.0

Reply via email to