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