[Intel-wired-lan] [PATCH iwl-net] idpf: adjust TxQ ring count minimum
Salin, Samuel
samuel.salin at intel.com
Mon Jul 27 18:04:13 UTC 2026
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf Of
> Joshua Hay
> Sent: Tuesday, June 30, 2026 4:56 PM
> To: intel-wired-lan at lists.osuosl.org
> Cc: netdev at vger.kernel.org
> Subject: [Intel-wired-lan] [PATCH iwl-net] idpf: adjust TxQ ring count
> minimum
>
> Set the TxQ ring count minimum to 128 descriptors. Any lower than this, and
> the queue will stall and trigger Tx timeouts in flow based scheduling mode.
> This is because next_to_clean might never be updated.
>
> 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 last
> 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 trigger the RE
> bit.
>
> 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 the stop
> logic. The queue permanently stalls because there is no chance for a descriptor
> completion to update next_to_clean since it is dependent on a packet being
> sent.
>
> Fixes: 5f417d551324 ("idpf: replace flow scheduling buffer ring with buffer
> pool")
> Signed-off-by: Joshua Hay <joshua.a.hay at intel.com>
> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov at intel.com>
> ---
> 2.39.2
Tested-by: Samuel Salin <Samuel.salin at intel.com>
More information about the Intel-wired-lan
mailing list