Re: [Intel-wired-lan] [PATCH iwl-net] idpf: adjust TxQ ring count minimum

"Salin, Samuel" <[email protected]> Mon, 27 Jul 2026 18:04:13 +0000
Newsgroups org.osuosl.intel-wired-lan,org.kernel.vger.netdev
Message-ID <SJ1PR11MB62974AEF11ABA313D9D26EB19BCC2@SJ1PR11MB6297.namprd11.prod.outlook.com>
> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of
> Joshua Hay
> Sent: Tuesday, June 30, 2026 4:56 PM
> To: [email protected]
> Cc: [email protected]
> Subject: [Intel-wired-lan] [PATCH iwl-net] idpf: adjust TxQ ring count
> minimum
>=20
> Set the TxQ ring count minimum to 128 descriptors. Any lower than this, a=
nd
> the queue will stall and trigger Tx timeouts in flow based scheduling mod=
e.
> This is because next_to_clean might never be updated.
>=20
> In flow based scheduling mode, next_to_clean is only updated after a
> descriptor completion is processed, i.e. after the RE bit is set in the l=
ast
> descriptor of a Tx packet. This will never happen with a ring size of 64 =
and an
> IDPF_TX_SPLITQ_RE_MIN_GAP of 64. No matter what the value of last_re is
> initialized/set to, the calculated gap will be at most 63 and never trigg=
er the RE
> bit.
>=20
> Even a ring size of 96 does not solve this. Because of how infrequent
> next_to_clean is updated and how small the ring is, IDPF_DESC_UNUSED will
> be much smaller on average. This increases the chance the queue will be
> stopped because a multi-descriptor packet, e.g. a large LSO packet, does =
not
> see enough resources on the ring. In this case, the queue will trigger th=
e stop
> logic. The queue permanently stalls because there is no chance for a desc=
riptor
> completion to update next_to_clean since it is dependent on a packet bein=
g
> sent.
>=20
> Fixes: 5f417d551324 ("idpf: replace flow scheduling buffer ring with buff=
er
> pool")
> Signed-off-by: Joshua Hay <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> ---
 > 2.39.2

Tested-by: Samuel Salin <[email protected]>