[PATCH v4 24/35] net/intel: use separate array for desc status tracking

Burakov, Anatoly anatoly.burakov at intel.com
Tue Feb 10 15:11:16 CET 2026


On 2/9/2026 5:45 PM, Bruce Richardson wrote:
> Rather than writing a last_id for each individual descriptor, we can
> write one only for places where the "report status" (RS) bit is set,
> i.e. the descriptors which will be written back when done. The method
> used for marking what descriptors are free is also changed in the
> process, even if the last descriptor with the "done" bits set is past
> the expected point, we only track up to the expected point, and leave
> the rest to be counted as freed next time. This means that we always
> have the RS/DD bits set at fixed intervals, and we always track free
> slots in units of the same tx_free_thresh intervals.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---


>   	if (!is_splitq) {
>   		txq->ci_tx_ring = mz->addr;
>   		idpf_qc_single_tx_queue_reset(txq);
> @@ -628,6 +642,9 @@ cpfl_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
>   	return 0;
>   
>   err_complq_setup:
> +	rte_free(txq->rs_last_id);
> +err_rs_last_id_alloc:
> +	rte_free(txq->sw_ring);

This looks like this free wasn't there before and it should've been. 
Separate it out as a bugfix to stable?

<snip>

>   		txq->ci_tx_ring = mz->addr;
>   		idpf_qc_single_tx_queue_reset(txq);
> @@ -502,6 +512,9 @@ idpf_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
>   	return 0;
>   
>   err_complq_setup:
> +	rte_free(txq->rs_last_id);
> +err_rs_last_id_alloc:
> +	rte_free(txq->sw_ring);

Same, bugfix to stable?

>   err_sw_ring_alloc:
>   	idpf_dma_zone_release(mz);
>   err_mz_reserve:

Otherwise LGTM

Acked-by: Anatoly Burakov <anatoly.burakov at intel.com>

-- 
Thanks,
Anatoly


More information about the dev mailing list