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

Burakov, Anatoly
2026-02-10T14:11:30Z

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@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@intel.com>

--
Thanks,
Anatoly