> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of
> Loktionov, Aleksandr
> Sent: Tuesday, April 7, 2026 11:37 PM
> To: Hay, Joshua A <[email protected]>; [email protected]
> Cc: [email protected]
> Subject: Re: [Intel-wired-lan] [PATCH iwl-net 2/2] idpf: fix skb datapath 
> queue
> based scheduling crashes and timeouts
> 
> 
> 
> > -----Original Message-----
> > From: Intel-wired-lan <[email protected]> On Behalf
> > Of Joshua Hay
> > Sent: Tuesday, April 7, 2026 1:33 AM
> > To: [email protected]
> > Cc: [email protected]
> > Subject: [Intel-wired-lan] [PATCH iwl-net 2/2] idpf: fix skb datapath
> > queue based scheduling crashes and timeouts
> >
> > The splitq Tx resource checks were assuming that the queues were using
> > flow based scheduling and checking the refillqs for free buffers.
> > However, the Tx refillqs are not allocated when using queue based
> > scheduling resulting in a NULL ptr dereference. Adjust the Tx resource
> > checks to only check available descriptor resources when using queue
> > based scheduling. Because queue based scheduling does not have any
> > notion of descriptor only completions, there cannot be any packets in
> > flight, meaning there is no need to check for pending completions.
> >
> > The driver also only supported 8 byte completion descriptors in the
> > skb datapath previously. However, currently the FW only supports 4
> > byte completion descriptors when using queue based scheduling. This
> > meant we were skipping over completions, resulting in Tx timeouts.
> > Add support to process both 4 and 8 byte completion descriptors,
> > depending on the scheduling mode. Cache the next_to_clean completion
> > descriptor in the completion queue struct, and fetch this descriptor
> > before the start of each cleaning loop. Access the next descriptor in
> > the loop by calculating the index based on raw byte count.
> >
> > Fixes: 0c3f135e840d ("idpf: stop Tx if there are insufficient buffer
> > resources")
> > Fixes: 1c325aac10a8 ("idpf: configure resources for TX queues")
> > Signed-off-by: Joshua Hay <[email protected]>
> > Reviewed-by: Madhu Chittim <[email protected]>
> > ---
> >  drivers/net/ethernet/intel/idpf/idpf_txrx.c | 49 +++++++++++++-------
> > -  drivers/net/ethernet/intel/idpf/idpf_txrx.h |  6 ++-
> >  2 files changed, 36 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
> > b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
> > index f6b3b15364ff..4fc0bb14c5b1 100644
> > --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
> > +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
> > @@ -270,11 +270,9 @@ static int idpf_tx_desc_alloc(const struct
> > idpf_vport *vport,  static int idpf_compl_desc_alloc(const struct
> > idpf_vport *vport,
> >                              struct idpf_compl_queue *complq)  {
> 
> ...
> 
> >
> >  /**
> >   * struct idpf_sw_queue
> > --
> > 2.39.2
> 
> 
> Reviewed-by: Aleksandr Loktionov <[email protected]>

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

Reply via email to