RE: [PATCH] net/bonding: clamp Rx free threshold for small rings

Morten Brørup
2026-02-24T12:48:31Z

> From: Bruce Richardson [mailto:bruce.richardson@intel.com]
> Sent: Tuesday, 24 February 2026 13.14
>
> The bonding driver creates a minimal-sized Rx ring as part of the
> setup,
> using the driver default parameters as it does so. However, for some
> cases the default values need adjustment for absolute minimal sized
> rings which can cause failures - for example, having an free threshold
> of 32 is too large for a ring of size 64.
>
> Unfortunately, the drivers themselves cannot properly handle this by
> adjusting their defaults because:
> a) the defaults are returned from info_get which gets called before the
> desired ring-size is known
> b) the replacement of the NULL rxconf value, which indicates use of
> defaults, happens at the ethdev level, so the driver is unaware of the
> source of the requested parameters - whether they are explicitly set by
> the user or substituted by ethdev layer.
>
> Therefore, we modify the bonding PMD to clamp the free thresh value to
> ring_size / 4 which should work in all cases.

I have complained about the inability to rely on drivers' capability reporting in edge cases before.
Here's another reason for complaining about it.
It's not easy pleasing everyone. ;-)

From an application perspective, this is black magic, and should be documented.
E.g. like:
https://elixir.bootlin.com/dpdk/v25.11/source/lib/ethdev/rte_ethdev.h#L6322

Anyway, this patch is better than being broken, so:
Acked-by: Morten Brørup <mb@smartsharesystems.com>