> From: Bruce Richardson [mailto:[email protected]]
> Sent: Friday, 19 December 2025 18.26
> 
> The last_id value in each tx_sw_queue entry was no longer used in the
> datapath, remove it and its initialization. For the function releasing
> packets back, rather than relying on "last_id" to identify end of
> packet, instead check for the next pointer being NULL.
> 
> Signed-off-by: Bruce Richardson <[email protected]>
> ---

[...]

> @@ -2523,14 +2523,13 @@ i40e_tx_done_cleanup_full(struct ci_tx_queue
> *txq,
>                       pkt_cnt < free_cnt &&
>                       tx_id != tx_last; i++) {
>                       if (swr_ring[tx_id].mbuf != NULL) {
> -                             rte_pktmbuf_free_seg(swr_ring[tx_id].mbuf);
> -                             swr_ring[tx_id].mbuf = NULL;
> -
>                               /*
>                                * last segment in the packet,
>                                * increment packet count
>                                */
> -                             pkt_cnt += (swr_ring[tx_id].last_id == tx_id);
> +                             pkt_cnt += (swr_ring[tx_id].mbuf->next == NULL)
> ? 1 : 0;

Note to reviewers:
Dereferencing the mbuf (instead of checking last_id) does not add a potential 
cache miss, because rte_pktmbuf_free_seg() dereferences it anyway.

> +                             rte_pktmbuf_free_seg(swr_ring[tx_id].mbuf);
> +                             swr_ring[tx_id].mbuf = NULL;
>                       }
> 
>                       tx_id = swr_ring[tx_id].next_id;

Reply via email to