> -----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
> 
> 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 <[email protected]>
> Reviewed-by: Aleksandr Loktionov <[email protected]>
> ---
 > 2.39.2

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

Reply via email to