From: Adel Belkhiri <adel.belkh...@polymtl.ca> Split the tracepoints rte_ethdev_trace_rx_burst and rte_eth_trace_call_rx_callbacks into two separate ones for empty and non-empty calls to avoid saturating quickly the trace buffer.
Signed-off-by: Adel Belkhiri <adel.belkh...@polymtl.ca> --- .mailmap | 1 + doc/guides/rel_notes/release_24_11.rst | 3 ++- lib/ethdev/ethdev_private.c | 8 ++++++-- lib/ethdev/ethdev_trace_points.c | 14 ++++++++++---- lib/ethdev/rte_ethdev.h | 5 ++++- lib/ethdev/rte_ethdev_trace_fp.h | 23 +++++++++++++++++++++-- lib/ethdev/version.map | 7 ++++++- 7 files changed, 50 insertions(+), 11 deletions(-) diff --git a/.mailmap b/.mailmap index 4a508bafad..e86241dced 100644 --- a/.mailmap +++ b/.mailmap @@ -16,6 +16,7 @@ Abraham Tovar <abrahamx.to...@intel.com> Adam Bynes <adamby...@outlook.com> Adam Dybkowski <adamx.dybkow...@intel.com> Adam Ludkiewicz <adam.ludkiew...@intel.com> +Adel Belkhiri <adel.belkh...@polymtl.ca> Adham Masarwah <ad...@nvidia.com> <ad...@mellanox.com> Adrian Moreno <amore...@redhat.com> Adrian Pielech <adrian.piel...@intel.com> diff --git a/doc/guides/rel_notes/release_24_11.rst b/doc/guides/rel_notes/release_24_11.rst index 0ff70d9057..10e45fc294 100644 --- a/doc/guides/rel_notes/release_24_11.rst +++ b/doc/guides/rel_notes/release_24_11.rst @@ -67,7 +67,8 @@ Removed Items This section is a comment. Do not overwrite or remove it. Also, make sure to start the actual text at the margin. ======================================================= - +* ethdev: Removed the __rte_ethdev_trace_rx_burst symbol, as the corresponding + tracepoint was split into two separate ones for empty and non-empty calls. API Changes ----------- diff --git a/lib/ethdev/ethdev_private.c b/lib/ethdev/ethdev_private.c index 626524558a..eed8c78747 100644 --- a/lib/ethdev/ethdev_private.c +++ b/lib/ethdev/ethdev_private.c @@ -298,8 +298,12 @@ rte_eth_call_rx_callbacks(uint16_t port_id, uint16_t queue_id, cb = cb->next; } - rte_eth_trace_call_rx_callbacks(port_id, queue_id, (void **)rx_pkts, - nb_rx, nb_pkts); + if (unlikely(nb_rx)) + rte_eth_trace_call_rx_callbacks_nonempty(port_id, queue_id, (void **)rx_pkts, + nb_rx, nb_pkts); + else + rte_eth_trace_call_rx_callbacks_empty(port_id, queue_id, (void **)rx_pkts, + nb_pkts); return nb_rx; } diff --git a/lib/ethdev/ethdev_trace_points.c b/lib/ethdev/ethdev_trace_points.c index 99e04f5893..6ecbee289b 100644 --- a/lib/ethdev/ethdev_trace_points.c +++ b/lib/ethdev/ethdev_trace_points.c @@ -25,14 +25,20 @@ RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_stop, RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_close, lib.ethdev.close) -RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst, - lib.ethdev.rx.burst) +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst_empty, + lib.ethdev.rx.burst.empty) + +RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst_nonempty, + lib.ethdev.rx.burst.nonempty) RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_burst, lib.ethdev.tx.burst) -RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_rx_callbacks, - lib.ethdev.call_rx_callbacks) +RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_rx_callbacks_empty, + lib.ethdev.call_rx_callbacks.empty) + +RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_rx_callbacks_nonempty, + lib.ethdev.call_rx_callbacks.nonempty) RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_tx_callbacks, lib.ethdev.call_tx_callbacks) diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index 548fada1c7..eef254c463 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -6132,7 +6132,10 @@ rte_eth_rx_burst(uint16_t port_id, uint16_t queue_id, } #endif - rte_ethdev_trace_rx_burst(port_id, queue_id, (void **)rx_pkts, nb_rx); + if (unlikely(nb_rx)) + rte_ethdev_trace_rx_burst_nonempty(port_id, queue_id, (void **)rx_pkts, nb_rx); + else + rte_ethdev_trace_rx_burst_empty(port_id, queue_id, (void **)rx_pkts); return nb_rx; } diff --git a/lib/ethdev/rte_ethdev_trace_fp.h b/lib/ethdev/rte_ethdev_trace_fp.h index 40b6e4756b..d23865996a 100644 --- a/lib/ethdev/rte_ethdev_trace_fp.h +++ b/lib/ethdev/rte_ethdev_trace_fp.h @@ -18,7 +18,16 @@ extern "C" { #include <rte_trace_point.h> RTE_TRACE_POINT_FP( - rte_ethdev_trace_rx_burst, + rte_ethdev_trace_rx_burst_empty, + RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, + void **pkt_tbl), + rte_trace_point_emit_u16(port_id); + rte_trace_point_emit_u16(queue_id); + rte_trace_point_emit_ptr(pkt_tbl); +) + +RTE_TRACE_POINT_FP( + rte_ethdev_trace_rx_burst_nonempty, RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, void **pkt_tbl, uint16_t nb_rx), rte_trace_point_emit_u16(port_id); @@ -38,7 +47,17 @@ RTE_TRACE_POINT_FP( ) RTE_TRACE_POINT_FP( - rte_eth_trace_call_rx_callbacks, + rte_eth_trace_call_rx_callbacks_empty, + RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, + void **rx_pkts, uint16_t nb_pkts), + rte_trace_point_emit_u16(port_id); + rte_trace_point_emit_u16(queue_id); + rte_trace_point_emit_ptr(rx_pkts); + rte_trace_point_emit_u16(nb_pkts); +) + +RTE_TRACE_POINT_FP( + rte_eth_trace_call_rx_callbacks_nonempty, RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, void **rx_pkts, uint16_t nb_rx, uint16_t nb_pkts), rte_trace_point_emit_u16(port_id); diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map index 1669055ca5..f6aca95069 100644 --- a/lib/ethdev/version.map +++ b/lib/ethdev/version.map @@ -207,7 +207,6 @@ EXPERIMENTAL { rte_flow_dev_dump; # added in 20.05 - __rte_ethdev_trace_rx_burst; __rte_ethdev_trace_tx_burst; rte_flow_get_aged_flows; @@ -325,6 +324,12 @@ EXPERIMENTAL { rte_flow_template_table_resizable; rte_flow_template_table_resize; rte_flow_template_table_resize_complete; + + # added in 24.11 + __rte_ethdev_trace_rx_burst_empty; + __rte_ethdev_trace_rx_burst_nonempty; + __rte_eth_trace_call_rx_callbacks_empty; + __rte_eth_trace_call_rx_callbacks_nonempty; }; INTERNAL { -- 2.34.1