> From: Bruce Richardson [mailto:[email protected]] > 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 <[email protected]>

