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]>