> From: Thomas Monjalon [mailto:[email protected]]
> Sent: Wednesday, 1 October 2025 01.25
> 
> From: Shani Peretz <[email protected]>
> 
> Mark the Rx/Tx steps in mbufs for debugging.
> It has no performance impact if mbuf history is disabled (by default).
> 
> Signed-off-by: Shani Peretz <[email protected]>
> ---
>  lib/ethdev/rte_ethdev.h | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h
> index d23c143eed..8a9683c5e9 100644
> --- a/lib/ethdev/rte_ethdev.h
> +++ b/lib/ethdev/rte_ethdev.h
> @@ -6336,6 +6336,8 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t
> queue_id,
> 
>       nb_rx = p->rx_pkt_burst(qd, rx_pkts, nb_pkts);
> 
> +     rte_mbuf_history_mark_bulk(rx_pkts, nb_rx,
> RTE_MBUF_HISTORY_OP_RX);
> +
>  #ifdef RTE_ETHDEV_RXTX_CALLBACKS
>       {
>               void *cb;
> @@ -6688,8 +6690,19 @@ rte_eth_tx_burst(uint16_t port_id, uint16_t
> queue_id,
>       }
>  #endif
> 
> +#if RTE_MBUF_HISTORY_DEBUG
> +     uint16_t requested_pkts = nb_pkts;
> +     rte_mbuf_history_mark_bulk(tx_pkts, nb_pkts,
> RTE_MBUF_HISTORY_OP_TX);
> +#endif

I think the compiler is clever enough to optimize away this if 
rte_mbuf_history_mark_bulk() does nothing. So you can omit the "#if 
RTE_MBUF_HISTORY_DEBUG". Also below.

> +
>       nb_pkts = p->tx_pkt_burst(qd, tx_pkts, nb_pkts);
> 
> +#if RTE_MBUF_HISTORY_DEBUG
> +     if (requested_pkts > nb_pkts)
> +             rte_mbuf_history_mark_bulk(tx_pkts + nb_pkts,
> +                             requested_pkts - nb_pkts,
> RTE_MBUF_HISTORY_OP_BUSY_TX);
> +#endif
> +
>       rte_ethdev_trace_tx_burst(port_id, queue_id, (void **)tx_pkts,
> nb_pkts);
>       return nb_pkts;
>  }
> @@ -6785,6 +6798,8 @@ rte_eth_tx_prepare(uint16_t port_id, uint16_t
> queue_id,
>       }
>  #endif
> 
> +     rte_mbuf_history_mark_bulk(tx_pkts, nb_pkts,
> RTE_MBUF_HISTORY_OP_PREP_TX);
> +
>       return p->tx_pkt_prepare(qd, tx_pkts, nb_pkts);
>  }
> 
> --
> 2.51.0

Reply via email to