All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ankur Dwivedi <adwivedi@marvell.com>
To: "dev@dpdk.org" <dev@dpdk.org>
Cc: "thomas@monjalon.net" <thomas@monjalon.net>,
	"mdr@ashroe.eu" <mdr@ashroe.eu>,
	"orika@nvidia.com" <orika@nvidia.com>,
	"ferruh.yigit@xilinx.com" <ferruh.yigit@xilinx.com>,
	"chas3@att.com" <chas3@att.com>,
	"humin29@huawei.com" <humin29@huawei.com>,
	"linville@tuxdriver.com" <linville@tuxdriver.com>,
	"ciara.loftus@intel.com" <ciara.loftus@intel.com>,
	"qi.z.zhang@intel.com" <qi.z.zhang@intel.com>,
	"mw@semihalf.com" <mw@semihalf.com>,
	"mk@semihalf.com" <mk@semihalf.com>,
	"shaibran@amazon.com" <shaibran@amazon.com>,
	"evgenys@amazon.com" <evgenys@amazon.com>,
	"igorch@amazon.com" <igorch@amazon.com>,
	"chandu@amd.com" <chandu@amd.com>,
	"Igor Russkikh" <irusskikh@marvell.com>,
	"shepard.siegel@atomicrules.com" <shepard.siegel@atomicrules.com>,
	"ed.czeck@atomicrules.com" <ed.czeck@atomicrules.com>,
	"john.miller@atomicrules.com" <john.miller@atomicrules.com>,
	"ajit.khaparde@broadcom.com" <ajit.khaparde@broadcom.com>,
	"somnath.kotur@broadcom.com" <somnath.kotur@broadcom.com>,
	"Jerin Jacob Kollanukkaran" <jerinj@marvell.com>,
	"Maciej Czekaj [C]" <mczekaj@marvell.com>,
	"Shijith Thotton" <sthotton@marvell.com>,
	"Srisivasubramanian Srinivasan" <srinivasan@marvell.com>,
	"Harman Kalra" <hkalra@marvell.com>,
	"rahul.lakkireddy@chelsio.com" <rahul.lakkireddy@chelsio.com>,
	"johndale@cisco.com" <johndale@cisco.com>,
	"hyonkim@cisco.com" <hyonkim@cisco.com>,
	"liudongdong3@huawei.com" <liudongdong3@huawei.com>,
	"yisen.zhuang@huawei.com" <yisen.zhuang@huawei.com>,
	"xuanziyang2@huawei.com" <xuanziyang2@huawei.com>,
	"cloud.wangxiaoyun@huawei.com" <cloud.wangxiaoyun@huawei.com>,
	"zhouguoyang@huawei.com" <zhouguoyang@huawei.com>,
	"simei.su@intel.com" <simei.su@intel.com>,
	"wenjun1.wu@intel.com" <wenjun1.wu@intel.com>,
	"qiming.yang@intel.com" <qiming.yang@intel.com>,
	"Yuying.Zhang@intel.com" <Yuying.Zhang@intel.com>,
	"beilei.xing@intel.com" <beilei.xing@intel.com>,
	"xiao.w.wang@intel.com" <xiao.w.wang@intel.com>,
	"jingjing.wu@intel.com" <jingjing.wu@intel.com>,
	"junfeng.guo@intel.com" <junfeng.guo@intel.com>,
	"rosen.xu@intel.com" <rosen.xu@intel.com>,
	"Nithin Kumar Dabilpuram" <ndabilpuram@marvell.com>,
	"Kiran Kumar Kokkilagadda" <kirankumark@marvell.com>,
	"Sunil Kumar Kori" <skori@marvell.com>,
	"Satha Koteswara Rao Kottidi" <skoteshwar@marvell.com>,
	"Liron Himi" <lironh@marvell.com>,
	"zr@semihalf.com" <zr@semihalf.com>,
	"Radha Chintakuntla" <radhac@marvell.com>,
	"Veerasenareddy Burru" <vburru@marvell.com>,
	"Sathesh B Edara" <sedara@marvell.com>,
	"matan@nvidia.com" <matan@nvidia.com>,
	"viacheslavo@nvidia.com" <viacheslavo@nvidia.com>,
	"sthemmin@microsoft.com" <sthemmin@microsoft.com>,
	"longli@microsoft.com" <longli@microsoft.com>,
	"spinler@cesnet.cz" <spinler@cesnet.cz>,
	"chaoyong.he@corigine.com" <chaoyong.he@corigine.com>,
	"niklas.soderlund@corigine.com" <niklas.soderlund@corigine.com>,
	"hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>,
	"sachin.saxena@oss.nxp.com" <sachin.saxena@oss.nxp.com>,
	"g.singh@nxp.com" <g.singh@nxp.com>,
	"apeksha.gupta@nxp.com" <apeksha.gupta@nxp.com>,
	"sachin.saxena@nxp.com" <sachin.saxena@nxp.com>,
	"aboyer@pensando.io" <aboyer@pensando.io>,
	"Rasesh Mody" <rmody@marvell.com>,
	"Shahed Shaikh" <shshaikh@marvell.com>,
	"Devendra Singh Rawat" <dsinghrawat@marvell.com>,
	"andrew.rybchenko@oktetlabs.ru" <andrew.rybchenko@oktetlabs.ru>,
	"jiawenwu@trustnetic.com" <jiawenwu@trustnetic.com>,
	"jianwang@trustnetic.com" <jianwang@trustnetic.com>,
	"jbehrens@vmware.com" <jbehrens@vmware.com>,
	"maxime.coquelin@redhat.com" <maxime.coquelin@redhat.com>,
	"chenbo.xia@intel.com" <chenbo.xia@intel.com>,
	"steven.webster@windriver.com" <steven.webster@windriver.com>,
	"matt.peters@windriver.com" <matt.peters@windriver.com>,
	"bruce.richardson@intel.com" <bruce.richardson@intel.com>,
	"mtetsuyah@gmail.com" <mtetsuyah@gmail.com>,
	"grive@u256.net" <grive@u256.net>,
	"jasvinder.singh@intel.com" <jasvinder.singh@intel.com>,
	"cristian.dumitrescu@intel.com" <cristian.dumitrescu@intel.com>,
	"jgrajcia@cisco.com" <jgrajcia@cisco.com>,
	"Morten Brørup" <mb@smartsharesystems.com>
Subject: RE: [PATCH v3 1/4] ethdev: add trace points
Date: Mon, 10 Oct 2022 06:39:38 +0000	[thread overview]
Message-ID: <CO3PR18MB5005C99661F27B96069C3B3CDD209@CO3PR18MB5005.namprd18.prod.outlook.com> (raw)
In-Reply-To: <CO3PR18MB5005D3D5DAEE3DAE129783CADD5F9@CO3PR18MB5005.namprd18.prod.outlook.com>

Hi All,

>-----Original Message-----
>From: Ankur Dwivedi
>Sent: Friday, October 7, 2022 9:54 PM
>To: dev@dpdk.org; Morten Brørup <mb@smartsharesystems.com>
>Cc: thomas@monjalon.net; mdr@ashroe.eu; orika@nvidia.com;
>ferruh.yigit@xilinx.com; chas3@att.com; humin29@huawei.com;
>linville@tuxdriver.com; ciara.loftus@intel.com; qi.z.zhang@intel.com;
>mw@semihalf.com; mk@semihalf.com; shaibran@amazon.com;
>evgenys@amazon.com; igorch@amazon.com; chandu@amd.com; Igor Russkikh
><irusskikh@marvell.com>; shepard.siegel@atomicrules.com;
>ed.czeck@atomicrules.com; john.miller@atomicrules.com;
>ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com; Jerin Jacob
>Kollanukkaran <jerinj@marvell.com>; Maciej Czekaj [C]
><mczekaj@marvell.com>; Shijith Thotton <sthotton@marvell.com>;
>Srisivasubramanian Srinivasan <srinivasan@marvell.com>; Harman Kalra
><hkalra@marvell.com>; rahul.lakkireddy@chelsio.com; johndale@cisco.com;
>hyonkim@cisco.com; liudongdong3@huawei.com; yisen.zhuang@huawei.com;
>xuanziyang2@huawei.com; cloud.wangxiaoyun@huawei.com;
>zhouguoyang@huawei.com; simei.su@intel.com; wenjun1.wu@intel.com;
>qiming.yang@intel.com; Yuying.Zhang@intel.com; beilei.xing@intel.com;
>xiao.w.wang@intel.com; jingjing.wu@intel.com; junfeng.guo@intel.com;
>rosen.xu@intel.com; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>;
>Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Sunil Kumar Kori
><skori@marvell.com>; Satha Koteswara Rao Kottidi
><skoteshwar@marvell.com>; Liron Himi <lironh@marvell.com>;
>zr@semihalf.com; Radha Chintakuntla <radhac@marvell.com>;
>Veerasenareddy Burru <vburru@marvell.com>; Sathesh B Edara
><sedara@marvell.com>; matan@nvidia.com; viacheslavo@nvidia.com;
>sthemmin@microsoft.com; longli@microsoft.com; spinler@cesnet.cz;
>chaoyong.he@corigine.com; niklas.soderlund@corigine.com;
>hemant.agrawal@nxp.com; sachin.saxena@oss.nxp.com; g.singh@nxp.com;
>apeksha.gupta@nxp.com; sachin.saxena@nxp.com; aboyer@pensando.io;
>Rasesh Mody <rmody@marvell.com>; Shahed Shaikh
><shshaikh@marvell.com>; Devendra Singh Rawat
><dsinghrawat@marvell.com>; andrew.rybchenko@oktetlabs.ru;
>jiawenwu@trustnetic.com; jianwang@trustnetic.com; jbehrens@vmware.com;
>maxime.coquelin@redhat.com; chenbo.xia@intel.com;
>steven.webster@windriver.com; matt.peters@windriver.com;
>bruce.richardson@intel.com; mtetsuyah@gmail.com; grive@u256.net;
>jasvinder.singh@intel.com; cristian.dumitrescu@intel.com; jgrajcia@cisco.com
>Subject: RE: [PATCH v3 1/4] ethdev: add trace points
>
>Hi Morten,
>
>>-----Original Message-----
>>From: Ankur Dwivedi <adwivedi@marvell.com>
>>Sent: Thursday, October 6, 2022 8:49 PM
>>To: dev@dpdk.org
>>Cc: thomas@monjalon.net; mdr@ashroe.eu; orika@nvidia.com;
>>ferruh.yigit@xilinx.com; chas3@att.com; humin29@huawei.com;
>>linville@tuxdriver.com; ciara.loftus@intel.com; qi.z.zhang@intel.com;
>>mw@semihalf.com; mk@semihalf.com; shaibran@amazon.com;
>>evgenys@amazon.com; igorch@amazon.com; chandu@amd.com; Igor
>>Russkikh <irusskikh@marvell.com>; shepard.siegel@atomicrules.com;
>>ed.czeck@atomicrules.com; john.miller@atomicrules.com;
>>ajit.khaparde@broadcom.com; somnath.kotur@broadcom.com; Jerin Jacob
>>Kollanukkaran <jerinj@marvell.com>; Maciej Czekaj [C]
>><mczekaj@marvell.com>; Shijith Thotton <sthotton@marvell.com>;
>>Srisivasubramanian Srinivasan <srinivasan@marvell.com>; Harman Kalra
>><hkalra@marvell.com>; rahul.lakkireddy@chelsio.com; johndale@cisco.com;
>>hyonkim@cisco.com; liudongdong3@huawei.com;
>>yisen.zhuang@huawei.com; xuanziyang2@huawei.com;
>>cloud.wangxiaoyun@huawei.com; zhouguoyang@huawei.com;
>>simei.su@intel.com; wenjun1.wu@intel.com; qiming.yang@intel.com;
>>Yuying.Zhang@intel.com; beilei.xing@intel.com; xiao.w.wang@intel.com;
>>jingjing.wu@intel.com; junfeng.guo@intel.com; rosen.xu@intel.com; Nithin
>>Kumar Dabilpuram <ndabilpuram@marvell.com>; Kiran Kumar Kokkilagadda
>><kirankumark@marvell.com>; Sunil Kumar Kori <skori@marvell.com>; Satha
>>Koteswara Rao Kottidi <skoteshwar@marvell.com>; Liron Himi
>><lironh@marvell.com>; zr@semihalf.com; Radha Chintakuntla
>><radhac@marvell.com>; Veerasenareddy Burru <vburru@marvell.com>;
>>Sathesh B Edara <sedara@marvell.com>; matan@nvidia.com;
>>viacheslavo@nvidia.com; sthemmin@microsoft.com; longli@microsoft.com;
>>spinler@cesnet.cz; chaoyong.he@corigine.com;
>>niklas.soderlund@corigine.com; hemant.agrawal@nxp.com;
>>sachin.saxena@oss.nxp.com; g.singh@nxp.com; apeksha.gupta@nxp.com;
>>sachin.saxena@nxp.com; aboyer@pensando.io; Rasesh Mody
>><rmody@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; Devendra
>>Singh Rawat <dsinghrawat@marvell.com>; andrew.rybchenko@oktetlabs.ru;
>>jiawenwu@trustnetic.com; jianwang@trustnetic.com;
>>jbehrens@vmware.com; maxime.coquelin@redhat.com;
>>chenbo.xia@intel.com; steven.webster@windriver.com;
>>matt.peters@windriver.com; bruce.richardson@intel.com;
>>mtetsuyah@gmail.com; grive@u256.net; jasvinder.singh@intel.com;
>>cristian.dumitrescu@intel.com; jgrajcia@cisco.com; Ankur Dwivedi
>><adwivedi@marvell.com>
>>Subject: [PATCH v3 1/4] ethdev: add trace points
>>
>>Add trace points for ethdev functions.
>>
>>Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
>>---
>Yes the functions you mentioned in previous comment are called in while loop
>in worker core. So I think they are fastpath.
>rte_eth_stats_get() is called in fastpath. Similar to rte_eth_macaddr_get(), I
>think functions like
>rte_eth_pro miscuous_get(), rte_eth_allmulticast_get() can also be called in
>fastpath.
>I am not sure which other functions can be fastpath. Is there a guideline/theme
>which can be used to determine this?
[Ankur] I will make the trace call in following functions as fast path trace, considering they are used in while loop in worker core or as rx/tx callback in examples applications.
rte_eth_tx_buffer_drop_callback
rte_eth_tx_buffer_count_callback
rte_eth_tx_done_cleanup
rte_eth_macaddr_get
rte_eth_timesync_read_rx_timestamp
rte_eth_timesync_read_tx_timestamp
rte_eth_timesync_adjust_time
rte_eth_timesync_read_time
rte_eth_timesync_write_time
rte_eth_stats_get
rte_flow_get_restore_info
rte_eth_read_clock

Please let me know your comments on the patch series.
>
>> lib/ethdev/ethdev_private.c      |    3 +
>> lib/ethdev/ethdev_trace_points.c |  435 +++++++++++
>> lib/ethdev/rte_ethdev.c          |  152 ++++
>> lib/ethdev/rte_ethdev_trace.h    | 1194 ++++++++++++++++++++++++++++++
>> lib/ethdev/rte_ethdev_trace_fp.h |   19 +
>> lib/ethdev/version.map           |  144 ++++
>> 6 files changed, 1947 insertions(+)
>>
>>diff --git a/lib/ethdev/ethdev_private.c b/lib/ethdev/ethdev_private.c
>>index 48090c879a..08e7f49fd8 100644
>>--- a/lib/ethdev/ethdev_private.c
>>+++ b/lib/ethdev/ethdev_private.c
>>@@ -5,6 +5,7 @@
>> #include <rte_debug.h>
>>
>> #include "rte_ethdev.h"
>>+#include "rte_ethdev_trace.h"
>> #include "ethdev_driver.h"
>> #include "ethdev_private.h"
>>
>>@@ -297,6 +298,7 @@ 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, nb_rx, nb_pkts);
>> 	return nb_rx;
>> }
>>
>>@@ -312,6 +314,7 @@ rte_eth_call_tx_callbacks(uint16_t port_id, uint16_t
>>queue_id,
>> 		cb = cb->next;
>> 	}
>>
>>+	rte_eth_trace_call_tx_callbacks(port_id, queue_id, nb_pkts);
>> 	return nb_pkts;
>> }
>>
>>diff --git a/lib/ethdev/ethdev_trace_points.c
>>b/lib/ethdev/ethdev_trace_points.c
>>index 2919409a15..2c06b47b7f 100644
>>--- a/lib/ethdev/ethdev_trace_points.c
>>+++ b/lib/ethdev/ethdev_trace_points.c
>>@@ -29,3 +29,438 @@
>>RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst,
>>
>> RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_burst,
>> 	lib.ethdev.tx.burst)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_add_first_rx_callback,
>>+	lib.ethdev.add_first_rx_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_add_rx_callback,
>>+	lib.ethdev.add_rx_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_add_tx_callback,
>>+	lib.ethdev.add_tx_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_disable,
>>+	lib.ethdev.allmulticast_disable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_enable,
>>+	lib.ethdev.allmulticast_enable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_get,
>>+	lib.ethdev.allmulticast_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_rx_callbacks,
>>+	lib.ethdev.call_rx_callbacks)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_tx_callbacks,
>>+	lib.ethdev.call_tx_callbacks)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_mtu,
>>+	lib.ethdev.set_mtu)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_adjust_nb_rx_tx_desc,
>>+	lib.ethdev.adjust_nb_rx_tx_desc)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_callback_register,
>>+	lib.ethdev.callback_register)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_callback_unregister,
>>+	lib.ethdev.callback_unregister)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_default_mac_addr_set,
>>+	lib.ethdev.default_mac_addr_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_flow_ctrl_get,
>>+	lib.ethdev.flow_ctrl_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_flow_ctrl_set,
>>+	lib.ethdev.flow_ctrl_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_fw_version_get,
>>+	lib.ethdev.fw_version_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_dcb_info,
>>+	lib.ethdev.get_dcb_info)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_eeprom,
>>+	lib.ethdev.get_eeprom)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_eeprom_length,
>>+	lib.ethdev.get_eeprom_length)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_mtu,
>>+	lib.ethdev.get_mtu)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_count_avail,
>>+	lib.ethdev.count_avail)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_count_total,
>>+	lib.ethdev.count_total)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_name_by_port,
>>+	lib.ethdev.get_name_by_port)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_port_by_name,
>>+	lib.ethdev.get_port_by_name)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_reg_info,
>>+	lib.ethdev.get_reg_info)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_sec_ctx,
>>+	lib.ethdev.get_sec_ctx)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_supported_ptypes,
>>+	lib.ethdev.get_supported_ptypes)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_vlan_offload,
>>+	lib.ethdev.get_vlan_offload)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_info_get,
>>+	lib.ethdev.info_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_is_removed,
>>+	lib.ethdev.is_removed)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_is_valid_port,
>>+	lib.ethdev.is_valid_port)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_mac_addr_add,
>>+	lib.ethdev.mac_addr_add)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_mac_addr_remove,
>>+	lib.ethdev.mac_addr_remove)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_pool_ops_supported,
>>+	lib.ethdev.pool_ops_supported)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_priority_flow_ctrl_set,
>>+	lib.ethdev.priority_flow_ctrl_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_reset,
>>+	lib.ethdev.reset)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rss_hash_conf_get,
>>+	lib.ethdev.rss_hash_conf_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rss_hash_update,
>>+	lib.ethdev.rss_hash_update)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rss_reta_query,
>>+	lib.ethdev.rss_reta_query)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rss_reta_update,
>>+	lib.ethdev.rss_reta_update)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_intr_ctl,
>>+	lib.ethdev.rx_intr_ctl)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_intr_ctl_q,
>>+	lib.ethdev.rx_intr_ctl_q)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_intr_ctl_q_get_fd,
>>+	lib.ethdev.rx_intr_ctl_q_get_fd)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_intr_disable,
>>+	lib.ethdev.rx_intr_disable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_intr_enable,
>>+	lib.ethdev.rx_intr_enable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_offload_name,
>>+	lib.ethdev.rx_offload_name)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_queue_start,
>>+	lib.ethdev.rx_queue_start)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_queue_stop,
>>+	lib.ethdev.rx_queue_stop)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_eeprom,
>>+	lib.ethdev.set_eeprom)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_link_down,
>>+	lib.ethdev.set_link_down)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_link_up,
>>+	lib.ethdev.set_link_up)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_mc_addr_list,
>>+	lib.ethdev.set_mc_addr_list)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_ptypes,
>>+	lib.ethdev.set_ptypes)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_rx_queue_stats_mappi
>>ng,
>>+	lib.ethdev.set_rx_queue_stats_mapping)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_tx_queue_stats_mappi
>n
>>g,
>>+	lib.ethdev.set_tx_queue_stats_mapping)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_vlan_ether_type,
>>+	lib.ethdev.set_vlan_ether_type)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_vlan_offload,
>>+	lib.ethdev.set_vlan_offload)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_vlan_pvid,
>>+	lib.ethdev.set_vlan_pvid)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_vlan_strip_on_queue,
>>+	lib.ethdev.set_vlan_strip_on_queue)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_socket_id,
>>+	lib.ethdev.socket_id)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_offload_name,
>>+	lib.ethdev.tx_offload_name)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_queue_start,
>>+	lib.ethdev.tx_queue_start)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_queue_stop,
>>+	lib.ethdev.tx_queue_stop)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_uc_all_hash_table_set,
>>+	lib.ethdev.uc_all_hash_table_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_uc_hash_table_set,
>>+	lib.ethdev.uc_hash_table_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_udp_tunnel_port_add,
>>+	lib.ethdev.udp_tunnel_port_add)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_udp_tunnel_port_delete,
>>+	lib.ethdev.udp_tunnel_port_delete)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_vlan_filter,
>>+	lib.ethdev.vlan_filter)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next,
>>+	lib.ethdev.find_next)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_of,
>>+	lib.ethdev.find_next_of)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_owned_by,
>>+	lib.ethdev.find_next_owned_by)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_sibling,
>>+	lib.ethdev.find_next_sibling)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_cleanup,
>>+	lib.ethdev.iterator_cleanup)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_init,
>>+	lib.ethdev.iterator_init)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_next,
>>+	lib.ethdev.iterator_next)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_led_off,
>>+	lib.ethdev.led_off)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_led_on,
>>+	lib.ethdev.led_on)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_get,
>>+	lib.ethdev.link_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_get_nowait,
>>+	lib.ethdev.link_get_nowait)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_macaddr_get,
>>+	lib.ethdev.macaddr_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_disable,
>>+	lib.ethdev.promiscuous_disable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_enable,
>>+	lib.ethdev.promiscuous_enable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_get,
>>+	lib.ethdev.promiscuous_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_remove_rx_callback,
>>+	lib.ethdev.remove_rx_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_remove_tx_callback,
>>+	lib.ethdev.remove_tx_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_burst_mode_get,
>>+	lib.ethdev.rx_burst_mode_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_queue_info_get,
>>+	lib.ethdev.rx_queue_info_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_queue_setup,
>>+	lib.ethdev.rx_queue_setup)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_set_queue_rate_limit,
>>+	lib.ethdev.set_queue_rate_limit)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_speed_bitflag,
>>+	lib.ethdev.speed_bitflag)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_stats_get,
>>+	lib.ethdev.stats_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_stats_reset,
>>+	lib.ethdev.stats_reset)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_adjust_time,
>>+	lib.ethdev.timesync_adjust_time)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_disable,
>>+	lib.ethdev.timesync_disable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_enable,
>>+	lib.ethdev.timesync_enable)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_read_rx_timestamp,
>>+	lib.ethdev.timesync_read_rx_timestamp)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_read_time,
>>+	lib.ethdev.timesync_read_time)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_read_tx_timestamp,
>>+	lib.ethdev.timesync_read_tx_timestamp)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_timesync_write_time,
>>+	lib.ethdev.timesync_write_time)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_count_callback,
>>+	lib.ethdev.tx_buffer_count_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_drop_callback,
>>+	lib.ethdev.tx_buffer_drop_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_init,
>>+	lib.ethdev.tx_buffer_init)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_set_err_callback,
>>+	lib.ethdev.tx_buffer_set_err_callback)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_burst_mode_get,
>>+	lib.ethdev.tx_burst_mode_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_done_cleanup,
>>+	lib.ethdev.tx_done_cleanup)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_queue_info_get,
>>+	lib.ethdev.tx_queue_info_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get,
>>+	lib.ethdev.xstats_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_by_id,
>>+	lib.ethdev.xstats_get_by_id)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_id_by_name,
>>+	lib.ethdev.xstats_get_id_by_name)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_names,
>>+	lib.ethdev.xstats_get_names)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_names_by_id,
>>+	lib.ethdev.xstats_get_names_by_id)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_reset,
>>+	lib.ethdev.xstats_reset)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_delete,
>>+	lib.ethdev.owner_delete)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_get,
>>+	lib.ethdev.owner_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_new,
>>+	lib.ethdev.owner_new)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_set,
>>+	lib.ethdev.owner_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_unset,
>>+	lib.ethdev.owner_unset)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_module_eeprom,
>>+	lib.ethdev.get_module_eeprom)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_module_info,
>>+	lib.ethdev.get_module_info)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_read_clock,
>>+	lib.ethdev.read_clock)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_hairpin_capability_get,
>>+	lib.ethdev.hairpin_capability_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_hairpin_queue_setup,
>>+	lib.ethdev.rx.hairpin_queue_setup)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_hairpin_queue_setup,
>>+	lib.ethdev.tx.hairpin_queue_setup)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_bind,
>>+	lib.ethdev.hairpin_bind)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_get_peer_ports,
>>+	lib.ethdev.hairpin_get_peer_ports)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_unbind,
>>+	lib.ethdev.hairpin_unbind)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_speed_to_str,
>>+	lib.ethdev.link_speed_to_str)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_to_str,
>>+	lib.ethdev.link_to_str)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_fec_get_capability,
>>+	lib.ethdev.fec_get_capability)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_fec_get,
>>+	lib.ethdev.fec_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_fec_set,
>>+	lib.ethdev.fec_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_get_monitor_addr,
>>+	lib.ethdev.get_monitor_addr)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_representor_info_get,
>>+	lib.ethdev.representor_info_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_capability_name,
>>+	lib.ethdev.capability_name)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_conf_get,
>>+	lib.ethdev.conf_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_macaddrs_get,
>>+	lib.ethdev.macaddrs_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_metadata_negotiate,
>>+	lib.ethdev.rx_metadata_negotiate)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_priority_flow_ctrl_queue_c
>o
>>nfigure,
>>+	lib.ethdev.priority_flow_ctrl_queue_configure)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_priority_flow_ctrl_queue_i
>n
>>fo_get,
>>+	lib.ethdev.priority_flow_ctrl_queue_info_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_priv_dump,
>>+	lib.ethdev.priv_dump)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_ip_reassembly_capability_get,
>>+	lib.ethdev.ip_reassembly_capability_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_ip_reassembly_conf_get,
>>+	lib.ethdev.ip_reassembly_conf_get)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_ip_reassembly_conf_set,
>>+	lib.ethdev.ip_reassembly_conf_set)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_avail_thresh_query,
>>+	lib.ethdev.rx_avail_thresh_query)
>>+
>>+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_avail_thresh_set,
>>+	lib.ethdev.rx_avail_thresh_set)
>>diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
>>index 01c141a039..f66d3ecd0a 100644
>>--- a/lib/ethdev/rte_ethdev.c
>>+++ b/lib/ethdev/rte_ethdev.c
>>@@ -182,6 +182,8 @@ rte_eth_iterator_init(struct rte_dev_iterator *iter,
>>const char *devargs_str)
>> 	memset(iter, 0, sizeof(*iter));
>> 	memset(&devargs, 0, sizeof(devargs));
>>
>>+	rte_eth_trace_iterator_init(iter, devargs_str);
>>+
>> 	/*
>> 	 * The devargs string may use various syntaxes:
>> 	 *   - 0000:08:00.0,representor=[1-3]
>>@@ -283,6 +285,8 @@ rte_eth_iterator_next(struct rte_dev_iterator *iter)
>> 	if (iter->cls == NULL) /* invalid ethdev iterator */
>> 		return RTE_MAX_ETHPORTS;
>>
>>+	rte_eth_trace_iterator_next(iter);
>>+
>> 	do { /* loop to try all matching rte_device */
>> 		/* If not pure ethdev filter and */
>> 		if (iter->bus != NULL &&
>>@@ -316,6 +320,7 @@ rte_eth_iterator_cleanup(struct rte_dev_iterator
>>*iter)
>>
>> 	if (iter->bus_str == NULL)
>> 		return; /* nothing to free in pure class filter */
>>+	rte_eth_trace_iterator_cleanup(iter);
>> 	free(RTE_CAST_FIELD(iter, bus_str, char *)); /* workaround const */
>> 	free(RTE_CAST_FIELD(iter, cls_str, char *)); /* workaround const */
>> 	memset(iter, 0, sizeof(*iter));
>>@@ -331,6 +336,7 @@ rte_eth_find_next(uint16_t port_id)
>> 	if (port_id >= RTE_MAX_ETHPORTS)
>> 		return RTE_MAX_ETHPORTS;
>>
>>+	rte_eth_trace_find_next(port_id);
>> 	return port_id;
>> }
>>
>>@@ -351,6 +357,7 @@ rte_eth_find_next_of(uint16_t port_id, const struct
>>rte_device *parent)
>> 			rte_eth_devices[port_id].device != parent)
>> 		port_id = rte_eth_find_next(port_id + 1);
>>
>>+	rte_eth_trace_find_next_of(port_id, parent);
>> 	return port_id;
>> }
>>
>>@@ -358,6 +365,7 @@ uint16_t
>> rte_eth_find_next_sibling(uint16_t port_id, uint16_t ref_port_id)
>> {
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(ref_port_id,
>>RTE_MAX_ETHPORTS);
>>+	rte_eth_trace_find_next_sibling(port_id, ref_port_id);
>> 	return rte_eth_find_next_of(port_id,
>> 			rte_eth_devices[ref_port_id].device);
>> }
>>@@ -371,6 +379,7 @@ eth_dev_is_allocated(const struct rte_eth_dev
>>*ethdev)
>> int
>> rte_eth_dev_is_valid_port(uint16_t port_id)
>> {
>>+	rte_ethdev_trace_is_valid_port(port_id);
>> 	if (port_id >= RTE_MAX_ETHPORTS ||
>> 	    (rte_eth_devices[port_id].state == RTE_ETH_DEV_UNUSED))
>> 		return 0;
>>@@ -395,6 +404,7 @@ rte_eth_find_next_owned_by(uint16_t port_id, const
>>uint64_t owner_id)
>> 			rte_eth_devices[port_id].data->owner.id != owner_id)
>> 		port_id = rte_eth_find_next(port_id + 1);
>>
>>+	rte_eth_trace_find_next_owned_by(port_id, owner_id);
>> 	return port_id;
>> }
>>
>>@@ -413,6 +423,7 @@ rte_eth_dev_owner_new(uint64_t *owner_id)
>> 	*owner_id = eth_dev_shared_data->next_owner_id++;
>>
>> 	rte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);
>>+	rte_ethdev_trace_owner_new(*owner_id);
>> 	return 0;
>> }
>>
>>@@ -476,6 +487,7 @@ rte_eth_dev_owner_set(const uint16_t port_id,
>> 	ret = eth_dev_owner_set(port_id, RTE_ETH_DEV_NO_OWNER,
>>owner);
>>
>> 	rte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);
>>+	rte_ethdev_trace_owner_set(port_id, owner, ret);
>> 	return ret;
>> }
>>
>>@@ -493,6 +505,7 @@ rte_eth_dev_owner_unset(const uint16_t port_id,
>>const uint64_t owner_id)
>> 	ret = eth_dev_owner_set(port_id, owner_id, &new_owner);
>>
>> 	rte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);
>>+	rte_ethdev_trace_owner_unset(port_id, owner_id, ret);
>> 	return ret;
>> }
>>
>>@@ -526,6 +539,7 @@ rte_eth_dev_owner_delete(const uint64_t owner_id)
>>
>> 	rte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);
>>
>>+	rte_ethdev_trace_owner_delete(owner_id, ret);
>> 	return ret;
>> }
>>
>>@@ -555,6 +569,7 @@ rte_eth_dev_owner_get(const uint16_t port_id, struct
>>rte_eth_dev_owner *owner)
>> 	rte_memcpy(owner, &ethdev->data->owner, sizeof(*owner));
>> 	rte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);
>>
>>+	rte_ethdev_trace_owner_get(port_id, owner);
>> 	return 0;
>> }
>>
>>@@ -562,6 +577,7 @@ int
>> rte_eth_dev_socket_id(uint16_t port_id)
>> {
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -1);
>>+	rte_ethdev_trace_socket_id(port_id);
>> 	return rte_eth_devices[port_id].data->numa_node;
>> }
>>
>>@@ -569,6 +585,7 @@ void *
>> rte_eth_dev_get_sec_ctx(uint16_t port_id)
>> {
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, NULL);
>>+	rte_ethdev_trace_get_sec_ctx(port_id);
>> 	return rte_eth_devices[port_id].security_ctx;
>> }
>>
>>@@ -583,6 +600,7 @@ rte_eth_dev_count_avail(void)
>> 	RTE_ETH_FOREACH_DEV(p)
>> 		count++;
>>
>>+	rte_ethdev_trace_count_avail(count);
>> 	return count;
>> }
>>
>>@@ -594,6 +612,7 @@ rte_eth_dev_count_total(void)
>> 	RTE_ETH_FOREACH_VALID_DEV(port)
>> 		count++;
>>
>>+	rte_ethdev_trace_count_total(count);
>> 	return count;
>> }
>>
>>@@ -614,6 +633,7 @@ rte_eth_dev_get_name_by_port(uint16_t port_id,
>>char *name)
>> 	 * because it might be overwritten by VDEV PMD */
>> 	tmp = eth_dev_shared_data->data[port_id].name;
>> 	strcpy(name, tmp);
>>+	rte_ethdev_trace_get_name_by_port(port_id, name);
>> 	return 0;
>> }
>>
>>@@ -636,6 +656,7 @@ rte_eth_dev_get_port_by_name(const char *name,
>>uint16_t *port_id)
>> 	RTE_ETH_FOREACH_VALID_DEV(pid)
>> 		if (!strcmp(name, eth_dev_shared_data->data[pid].name)) {
>> 			*port_id = pid;
>>+			rte_ethdev_trace_get_port_by_name(name,
>>*port_id);
>> 			return 0;
>> 		}
>>
>>@@ -737,6 +758,7 @@ rte_eth_dev_rx_queue_start(uint16_t port_id,
>>uint16_t rx_queue_id)
>> 		return 0;
>> 	}
>>
>>+	rte_ethdev_trace_rx_queue_start(port_id, rx_queue_id);
>> 	return eth_err(port_id, dev->dev_ops->rx_queue_start(dev,
>>rx_queue_id));
>> }
>>
>>@@ -770,6 +792,7 @@ rte_eth_dev_rx_queue_stop(uint16_t port_id,
>>uint16_t rx_queue_id)
>> 		return 0;
>> 	}
>>
>>+	rte_ethdev_trace_rx_queue_stop(port_id, rx_queue_id);
>> 	return eth_err(port_id, dev->dev_ops->rx_queue_stop(dev,
>>rx_queue_id));
>> }
>>
>>@@ -810,6 +833,7 @@ rte_eth_dev_tx_queue_start(uint16_t port_id,
>>uint16_t tx_queue_id)
>> 		return 0;
>> 	}
>>
>>+	rte_ethdev_trace_tx_queue_start(port_id, tx_queue_id);
>> 	return eth_err(port_id, dev->dev_ops->tx_queue_start(dev,
>>tx_queue_id));
>> }
>>
>>@@ -843,12 +867,14 @@ rte_eth_dev_tx_queue_stop(uint16_t port_id,
>>uint16_t tx_queue_id)
>> 		return 0;
>> 	}
>>
>>+	rte_ethdev_trace_tx_queue_stop(port_id, tx_queue_id);
>> 	return eth_err(port_id, dev->dev_ops->tx_queue_stop(dev,
>>tx_queue_id));
>> }
>>
>> uint32_t
>> rte_eth_speed_bitflag(uint32_t speed, int duplex)
>> {
>>+	rte_eth_trace_speed_bitflag(speed, duplex);
>> 	switch (speed) {
>> 	case RTE_ETH_SPEED_NUM_10M:
>> 		return duplex ? RTE_ETH_LINK_SPEED_10M :
>>RTE_ETH_LINK_SPEED_10M_HD;
>>@@ -894,6 +920,7 @@ rte_eth_dev_rx_offload_name(uint64_t offload)
>> 		}
>> 	}
>>
>>+	rte_ethdev_trace_rx_offload_name(offload, name);
>> 	return name;
>> }
>>
>>@@ -910,6 +937,7 @@ rte_eth_dev_tx_offload_name(uint64_t offload)
>> 		}
>> 	}
>>
>>+	rte_ethdev_trace_tx_offload_name(offload, name);
>> 	return name;
>> }
>>
>>@@ -926,6 +954,7 @@ rte_eth_dev_capability_name(uint64_t capability)
>> 		}
>> 	}
>>
>>+	rte_ethdev_trace_capability_name(capability, name);
>> 	return name;
>> }
>>
>>@@ -1552,6 +1581,7 @@ rte_eth_dev_set_link_up(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->dev_set_link_up == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_link_up(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->dev_set_link_up)(dev));
>> }
>>
>>@@ -1565,6 +1595,7 @@ rte_eth_dev_set_link_down(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->dev_set_link_down == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_link_down(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->dev_set_link_down)(dev));
>> }
>>
>>@@ -1621,6 +1652,7 @@ rte_eth_dev_reset(uint16_t port_id)
>> 			port_id, rte_strerror(-ret));
>> 	}
>> 	ret = dev->dev_ops->dev_reset(dev);
>>+	rte_ethdev_trace_reset(port_id, ret);
>>
>> 	return eth_err(port_id, ret);
>> }
>>@@ -1645,6 +1677,7 @@ rte_eth_dev_is_removed(uint16_t port_id)
>> 		/* Device is physically removed. */
>> 		dev->state = RTE_ETH_DEV_REMOVED;
>>
>>+	rte_ethdev_trace_is_removed(port_id, ret);
>> 	return ret;
>> }
>>
>>@@ -1984,6 +2017,8 @@ rte_eth_rx_hairpin_queue_setup(uint16_t port_id,
>>uint16_t rx_queue_id,
>> 	if (ret == 0)
>> 		dev->data->rx_queue_state[rx_queue_id] =
>> 			RTE_ETH_QUEUE_STATE_HAIRPIN;
>>+	rte_eth_trace_rx_hairpin_queue_setup(port_id, rx_queue_id,
>>nb_rx_desc,
>>+					     conf, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -2151,6 +2186,7 @@ rte_eth_tx_hairpin_queue_setup(uint16_t port_id,
>>uint16_t tx_queue_id,
>> 	if (ret == 0)
>> 		dev->data->tx_queue_state[tx_queue_id] =
>> 			RTE_ETH_QUEUE_STATE_HAIRPIN;
>>+	rte_eth_trace_tx_hairpin_queue_setup(port_id, tx_queue_id,
>>nb_tx_desc, conf, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -2176,6 +2212,7 @@ rte_eth_hairpin_bind(uint16_t tx_port, uint16_t
>>rx_port)
>> 			       " to Rx %d (%d - all ports)\n",
>> 			       tx_port, rx_port, RTE_MAX_ETHPORTS);
>>
>>+	rte_eth_trace_hairpin_bind(tx_port, rx_port, ret);
>> 	return ret;
>> }
>>
>>@@ -2201,6 +2238,7 @@ rte_eth_hairpin_unbind(uint16_t tx_port, uint16_t
>>rx_port)
>> 			       " from Rx %d (%d - all ports)\n",
>> 			       tx_port, rx_port, RTE_MAX_ETHPORTS);
>>
>>+	rte_eth_trace_hairpin_unbind(tx_port, rx_port, ret);
>> 	return ret;
>> }
>>
>>@@ -2237,6 +2275,7 @@ rte_eth_hairpin_get_peer_ports(uint16_t port_id,
>>uint16_t *peer_ports,
>> 		RTE_ETHDEV_LOG(ERR, "Failed to get %d hairpin peer %s
>>ports\n",
>> 			       port_id, direction ? "Rx" : "Tx");
>>
>>+	rte_eth_trace_hairpin_get_peer_ports(port_id, peer_ports, len,
>>direction, ret);
>> 	return ret;
>> }
>>
>>@@ -2244,6 +2283,7 @@ void
>> rte_eth_tx_buffer_drop_callback(struct rte_mbuf **pkts, uint16_t unsent,
>> 		void *userdata __rte_unused)
>> {
>>+	rte_eth_trace_tx_buffer_drop_callback(pkts, unsent);
>> 	rte_pktmbuf_free_bulk(pkts, unsent);
>> }
>>
>>@@ -2255,6 +2295,7 @@ rte_eth_tx_buffer_count_callback(struct rte_mbuf
>>**pkts, uint16_t unsent,
>>
>> 	rte_pktmbuf_free_bulk(pkts, unsent);
>> 	*count += unsent;
>>+	rte_eth_trace_tx_buffer_count_callback(pkts, unsent, *count);
>> }
>>
>> int
>>@@ -2267,6 +2308,7 @@ rte_eth_tx_buffer_set_err_callback(struct
>>rte_eth_dev_tx_buffer *buffer,
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_eth_trace_tx_buffer_set_err_callback(buffer, cbfn, userdata);
>> 	buffer->error_callback = cbfn;
>> 	buffer->error_userdata = userdata;
>> 	return 0;
>>@@ -2288,6 +2330,7 @@ rte_eth_tx_buffer_init(struct rte_eth_dev_tx_buffer
>>*buffer, uint16_t size)
>> 			buffer, rte_eth_tx_buffer_drop_callback, NULL);
>> 	}
>>
>>+	rte_eth_trace_tx_buffer_init(buffer, size, ret);
>> 	return ret;
>> }
>>
>>@@ -2306,6 +2349,7 @@ rte_eth_tx_done_cleanup(uint16_t port_id,
>>uint16_t queue_id, uint32_t free_cnt)
>> 	/* Call driver to free pending mbufs. */
>> 	ret = (*dev->dev_ops->tx_done_cleanup)(dev->data-
>>>tx_queues[queue_id],
>> 					       free_cnt);
>>+	rte_eth_trace_tx_done_cleanup(port_id, queue_id, free_cnt, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -2327,6 +2371,7 @@ rte_eth_promiscuous_enable(uint16_t port_id)
>> 	diag = (*dev->dev_ops->promiscuous_enable)(dev);
>> 	dev->data->promiscuous = (diag == 0) ? 1 : 0;
>>
>>+	rte_eth_trace_promiscuous_enable(port_id, dev->data-
>>>promiscuous);
>> 	return eth_err(port_id, diag);
>> }
>>
>>@@ -2350,6 +2395,7 @@ rte_eth_promiscuous_disable(uint16_t port_id)
>> 	if (diag != 0)
>> 		dev->data->promiscuous = 1;
>>
>>+	rte_eth_trace_promiscuous_disable(port_id, dev->data-
>>>promiscuous);
>> 	return eth_err(port_id, diag);
>> }
>>
>>@@ -2361,6 +2407,7 @@ rte_eth_promiscuous_get(uint16_t port_id)
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>> 	dev = &rte_eth_devices[port_id];
>>
>>+	rte_eth_trace_promiscuous_get(port_id, dev->data->promiscuous);
>> 	return dev->data->promiscuous;
>> }
>>
>>@@ -2381,6 +2428,7 @@ rte_eth_allmulticast_enable(uint16_t port_id)
>> 	diag = (*dev->dev_ops->allmulticast_enable)(dev);
>> 	dev->data->all_multicast = (diag == 0) ? 1 : 0;
>>
>>+	rte_eth_trace_allmulticast_enable(port_id, dev->data->all_multicast);
>> 	return eth_err(port_id, diag);
>> }
>>
>>@@ -2403,6 +2451,7 @@ rte_eth_allmulticast_disable(uint16_t port_id)
>> 	if (diag != 0)
>> 		dev->data->all_multicast = 1;
>>
>>+	rte_eth_trace_allmulticast_disable(port_id, dev->data->all_multicast);
>> 	return eth_err(port_id, diag);
>> }
>>
>>@@ -2414,6 +2463,7 @@ rte_eth_allmulticast_get(uint16_t port_id)
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>> 	dev = &rte_eth_devices[port_id];
>>
>>+	rte_eth_trace_allmulticast_get(port_id, dev->data->all_multicast);
>> 	return dev->data->all_multicast;
>> }
>>
>>@@ -2440,6 +2490,7 @@ rte_eth_link_get(uint16_t port_id, struct
>>rte_eth_link *eth_link)
>> 		*eth_link = dev->data->dev_link;
>> 	}
>>
>>+	rte_eth_trace_link_get(port_id, eth_link);
>> 	return 0;
>> }
>>
>>@@ -2466,12 +2517,14 @@ rte_eth_link_get_nowait(uint16_t port_id, struct
>>rte_eth_link *eth_link)
>> 		*eth_link = dev->data->dev_link;
>> 	}
>>
>>+	rte_eth_trace_link_get_nowait(port_id, eth_link);
>> 	return 0;
>> }
>>
>> const char *
>> rte_eth_link_speed_to_str(uint32_t link_speed)
>> {
>>+	rte_eth_trace_link_speed_to_str(link_speed);
>> 	switch (link_speed) {
>> 	case RTE_ETH_SPEED_NUM_NONE: return "None";
>> 	case RTE_ETH_SPEED_NUM_10M:  return "10 Mbps";
>>@@ -2511,6 +2564,7 @@ rte_eth_link_to_str(char *str, size_t len, const struct
>>rte_eth_link *eth_link)
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_eth_trace_link_to_str(str, len, eth_link);
>> 	if (eth_link->link_status == RTE_ETH_LINK_DOWN)
>> 		return snprintf(str, len, "Link down");
>> 	else
>>@@ -2541,6 +2595,7 @@ rte_eth_stats_get(uint16_t port_id, struct
>>rte_eth_stats *stats)
>> 	if (*dev->dev_ops->stats_get == NULL)
>> 		return -ENOTSUP;
>> 	stats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;
>>+	rte_eth_trace_stats_get(port_id, stats);
>> 	return eth_err(port_id, (*dev->dev_ops->stats_get)(dev, stats));
>> }
>>
>>@@ -2561,6 +2616,7 @@ rte_eth_stats_reset(uint16_t port_id)
>>
>> 	dev->data->rx_mbuf_alloc_failed = 0;
>>
>>+	rte_eth_trace_stats_reset(port_id);
>> 	return 0;
>> }
>>
>>@@ -2625,6 +2681,7 @@ rte_eth_xstats_get_id_by_name(uint16_t port_id,
>>const char *xstat_name,
>> 		return -ENOMEM;
>> 	}
>>
>>+	rte_eth_trace_xstats_get_id_by_name(port_id, xstat_name, id);
>> 	/* Get count */
>> 	cnt_xstats = rte_eth_xstats_get_names_by_id(port_id, NULL, 0, NULL);
>> 	if (cnt_xstats  < 0) {
>>@@ -2797,6 +2854,8 @@ rte_eth_xstats_get_names_by_id(uint16_t port_id,
>> 			return -1;
>> 		}
>> 		xstats_names[i] = xstats_names_copy[ids[i]];
>>+		rte_eth_trace_xstats_get_names_by_id(port_id,
>>&xstats_names[i],
>>+						     ids[i]);
>> 	}
>>
>> 	free(xstats_names_copy);
>>@@ -2836,6 +2895,7 @@ rte_eth_xstats_get_names(uint16_t port_id,
>> 		cnt_used_entries += cnt_driver_entries;
>> 	}
>>
>>+	rte_eth_trace_xstats_get_names(port_id, xstats_names, size,
>>cnt_used_entries);
>> 	return cnt_used_entries;
>> }
>>
>>@@ -2985,6 +3045,7 @@ rte_eth_xstats_get_by_id(uint16_t port_id, const
>>uint64_t *ids,
>> 		}
>> 		values[i] = xstats[ids[i]].value;
>> 	}
>>+	rte_eth_trace_xstats_get_by_id(port_id, ids, values, size);
>> 	return size;
>> }
>>
>>@@ -3032,6 +3093,8 @@ rte_eth_xstats_get(uint16_t port_id, struct
>>rte_eth_xstat *xstats,
>> 	for ( ; i < count + xcount; i++)
>> 		xstats[i].id += count;
>>
>>+	for (i = 0; i < n; i++)
>>+		rte_eth_trace_xstats_get(port_id, xstats[i], i);
>> 	return count + xcount;
>> }
>>
>>@@ -3044,6 +3107,7 @@ rte_eth_xstats_reset(uint16_t port_id)
>> 	RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
>> 	dev = &rte_eth_devices[port_id];
>>
>>+	rte_eth_trace_xstats_reset(port_id);
>> 	/* implemented by the driver */
>> 	if (dev->dev_ops->xstats_reset != NULL)
>> 		return eth_err(port_id, (*dev->dev_ops->xstats_reset)(dev));
>>@@ -3079,6 +3143,8 @@ int
>> rte_eth_dev_set_tx_queue_stats_mapping(uint16_t port_id, uint16_t
>>tx_queue_id,
>> 		uint8_t stat_idx)
>> {
>>+	rte_ethdev_trace_set_tx_queue_stats_mapping(port_id, tx_queue_id,
>>+						    stat_idx);
>> 	return eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,
>> 						tx_queue_id,
>> 						stat_idx, STAT_QMAP_TX));
>>@@ -3088,6 +3154,8 @@ int
>> rte_eth_dev_set_rx_queue_stats_mapping(uint16_t port_id, uint16_t
>>rx_queue_id,
>> 		uint8_t stat_idx)
>> {
>>+	rte_ethdev_trace_set_rx_queue_stats_mapping(port_id,
>>rx_queue_id,
>>+						    stat_idx);
>> 	return eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,
>> 						rx_queue_id,
>> 						stat_idx, STAT_QMAP_RX));
>>@@ -3110,6 +3178,7 @@ rte_eth_dev_fw_version_get(uint16_t port_id, char
>>*fw_version, size_t fw_size)
>>
>> 	if (*dev->dev_ops->fw_version_get == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_fw_version_get(port_id, fw_version, fw_size);
>> 	return eth_err(port_id, (*dev->dev_ops->fw_version_get)(dev,
>> 							fw_version, fw_size));
>> }
>>@@ -3171,6 +3240,7 @@ rte_eth_dev_info_get(uint16_t port_id, struct
>>rte_eth_dev_info *dev_info)
>>
>> 	dev_info->dev_flags = &dev->data->dev_flags;
>>
>>+	rte_ethdev_trace_info_get(port_id, dev_info);
>> 	return 0;
>> }
>>
>>@@ -3191,6 +3261,7 @@ rte_eth_dev_conf_get(uint16_t port_id, struct
>>rte_eth_conf *dev_conf)
>>
>> 	memcpy(dev_conf, &dev->data->dev_conf, sizeof(struct
>>rte_eth_conf));
>>
>>+	rte_ethdev_trace_conf_get(port_id, dev_conf);
>> 	return 0;
>> }
>>
>>@@ -3226,6 +3297,7 @@ rte_eth_dev_get_supported_ptypes(uint16_t
>>port_id, uint32_t ptype_mask,
>> 			j++;
>> 		}
>>
>>+	rte_ethdev_trace_get_supported_ptypes(port_id, ptype_mask,
>>ptypes, num, j);
>> 	return j;
>> }
>>
>>@@ -3310,6 +3382,7 @@ rte_eth_dev_set_ptypes(uint16_t port_id, uint32_t
>>ptype_mask,
>> 	if (set_ptypes != NULL && j < num)
>> 		set_ptypes[j] = RTE_PTYPE_UNKNOWN;
>>
>>+	rte_ethdev_trace_set_ptypes(port_id, ptype_mask, set_ptypes, num);
>> 	return (*dev->dev_ops->dev_ptypes_set)(dev, ptype_mask);
>>
>> ptype_unknown:
>>@@ -3341,6 +3414,7 @@ rte_eth_macaddrs_get(uint16_t port_id, struct
>>rte_ether_addr *ma,
>> 	num = RTE_MIN(dev_info.max_mac_addrs, num);
>> 	memcpy(ma, dev->data->mac_addrs, num * sizeof(ma[0]));
>>
>>+	rte_eth_trace_macaddrs_get(port_id, ma, num);
>> 	return num;
>> }
>>
>>@@ -3359,6 +3433,7 @@ rte_eth_macaddr_get(uint16_t port_id, struct
>>rte_ether_addr *mac_addr)
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_eth_trace_macaddr_get(port_id, mac_addr);
>> 	rte_ether_addr_copy(&dev->data->mac_addrs[0], mac_addr);
>>
>> 	return 0;
>>@@ -3379,6 +3454,7 @@ rte_eth_dev_get_mtu(uint16_t port_id, uint16_t
>>*mtu)
>> 	}
>>
>> 	*mtu = dev->data->mtu;
>>+	rte_ethdev_trace_get_mtu(port_id, *mtu);
>> 	return 0;
>> }
>>
>>@@ -3421,6 +3497,7 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t
>>mtu)
>> 	if (ret == 0)
>> 		dev->data->mtu = mtu;
>>
>>+	rte_ethdev_trace_set_mtu(port_id, mtu, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -3464,6 +3541,7 @@ rte_eth_dev_vlan_filter(uint16_t port_id, uint16_t
>>vlan_id, int on)
>> 			vfc->ids[vidx] &= ~RTE_BIT64(vbit);
>> 	}
>>
>>+	rte_ethdev_trace_vlan_filter(port_id, vlan_id, on, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -3483,6 +3561,7 @@ rte_eth_dev_set_vlan_strip_on_queue(uint16_t
>>port_id, uint16_t rx_queue_id,
>>
>> 	if (*dev->dev_ops->vlan_strip_queue_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_vlan_strip_on_queue(port_id, rx_queue_id,
>>on);
>> 	(*dev->dev_ops->vlan_strip_queue_set)(dev, rx_queue_id, on);
>>
>> 	return 0;
>>@@ -3500,6 +3579,7 @@ rte_eth_dev_set_vlan_ether_type(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->vlan_tpid_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_vlan_ether_type(port_id, vlan_type, tpid);
>> 	return eth_err(port_id, (*dev->dev_ops->vlan_tpid_set)(dev,
>>vlan_type,
>> 							       tpid));
>> }
>>@@ -3593,6 +3673,7 @@ rte_eth_dev_set_vlan_offload(uint16_t port_id, int
>>offload_mask)
>> 		dev->data->dev_conf.rxmode.offloads = orig_offloads;
>> 	}
>>
>>+	rte_ethdev_trace_set_vlan_offload(port_id, offload_mask, ret);
>> 	return eth_err(port_id, ret);
>> }
>>
>>@@ -3619,6 +3700,7 @@ rte_eth_dev_get_vlan_offload(uint16_t port_id)
>> 	if (*dev_offloads & RTE_ETH_RX_OFFLOAD_QINQ_STRIP)
>> 		ret |= RTE_ETH_QINQ_STRIP_OFFLOAD;
>>
>>+	rte_ethdev_trace_get_vlan_offload(port_id, ret);
>> 	return ret;
>> }
>>
>>@@ -3632,6 +3714,7 @@ rte_eth_dev_set_vlan_pvid(uint16_t port_id,
>>uint16_t pvid, int on)
>>
>> 	if (*dev->dev_ops->vlan_pvid_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_vlan_pvid(port_id, pvid, on);
>> 	return eth_err(port_id, (*dev->dev_ops->vlan_pvid_set)(dev, pvid,
>>on));
>> }
>>
>>@@ -3653,6 +3736,7 @@ rte_eth_dev_flow_ctrl_get(uint16_t port_id, struct
>>rte_eth_fc_conf *fc_conf)
>> 	if (*dev->dev_ops->flow_ctrl_get == NULL)
>> 		return -ENOTSUP;
>> 	memset(fc_conf, 0, sizeof(*fc_conf));
>>+	rte_ethdev_trace_flow_ctrl_get(port_id, fc_conf);
>> 	return eth_err(port_id, (*dev->dev_ops->flow_ctrl_get)(dev,
>>fc_conf));
>> }
>>
>>@@ -3678,6 +3762,7 @@ rte_eth_dev_flow_ctrl_set(uint16_t port_id, struct
>>rte_eth_fc_conf *fc_conf)
>>
>> 	if (*dev->dev_ops->flow_ctrl_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_flow_ctrl_set(port_id, fc_conf);
>> 	return eth_err(port_id, (*dev->dev_ops->flow_ctrl_set)(dev, fc_conf));
>> }
>>
>>@@ -3702,6 +3787,7 @@ rte_eth_dev_priority_flow_ctrl_set(uint16_t
>>port_id,
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_ethdev_trace_priority_flow_ctrl_set(port_id, pfc_conf);
>> 	/* High water, low water validation are device specific */
>> 	if  (*dev->dev_ops->priority_flow_ctrl_set)
>> 		return eth_err(port_id, (*dev->dev_ops-
>>>priority_flow_ctrl_set)
>>@@ -3774,6 +3860,7 @@
>>rte_eth_dev_priority_flow_ctrl_queue_info_get(uint16_t port_id,
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_ethdev_trace_priority_flow_ctrl_queue_info_get(port_id,
>>pfc_queue_info);
>> 	if (*dev->dev_ops->priority_flow_ctrl_queue_info_get)
>> 		return eth_err(port_id, (*dev->dev_ops-
>>>priority_flow_ctrl_queue_info_get)
>> 			(dev, pfc_queue_info));
>>@@ -3845,6 +3932,8 @@
>>rte_eth_dev_priority_flow_ctrl_queue_configure(uint16_t port_id,
>> 			return ret;
>> 	}
>>
>>+	rte_ethdev_trace_priority_flow_ctrl_queue_configure(port_id,
>>+							     pfc_queue_conf);
>> 	if (*dev->dev_ops->priority_flow_ctrl_queue_config)
>> 		return eth_err(port_id,
>> 			       (*dev->dev_ops-
>>>priority_flow_ctrl_queue_config)(
>>@@ -3940,6 +4029,7 @@ rte_eth_dev_rss_reta_update(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->reta_update == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rss_reta_update(port_id, reta_conf, reta_size);
>> 	return eth_err(port_id, (*dev->dev_ops->reta_update)(dev,
>>reta_conf,
>> 							     reta_size));
>> }
>>@@ -3969,6 +4059,7 @@ rte_eth_dev_rss_reta_query(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->reta_query == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rss_reta_query(port_id, reta_conf, reta_size);
>> 	return eth_err(port_id, (*dev->dev_ops->reta_query)(dev, reta_conf,
>> 							    reta_size));
>> }
>>@@ -4014,6 +4105,7 @@ rte_eth_dev_rss_hash_update(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->rss_hash_update == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rss_hash_update(port_id, rss_conf);
>> 	return eth_err(port_id, (*dev->dev_ops->rss_hash_update)(dev,
>> 								 rss_conf));
>> }
>>@@ -4036,6 +4128,7 @@ rte_eth_dev_rss_hash_conf_get(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->rss_hash_conf_get == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rss_hash_conf_get(port_id, rss_conf);
>> 	return eth_err(port_id, (*dev->dev_ops->rss_hash_conf_get)(dev,
>> 								   rss_conf));
>> }
>>@@ -4063,6 +4156,7 @@ rte_eth_dev_udp_tunnel_port_add(uint16_t
>>port_id,
>>
>> 	if (*dev->dev_ops->udp_tunnel_port_add == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_udp_tunnel_port_add(port_id, udp_tunnel);
>> 	return eth_err(port_id, (*dev->dev_ops->udp_tunnel_port_add)(dev,
>> 								udp_tunnel));
>> }
>>@@ -4090,6 +4184,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t
>>port_id,
>>
>> 	if (*dev->dev_ops->udp_tunnel_port_del == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_udp_tunnel_port_delete(port_id, udp_tunnel);
>> 	return eth_err(port_id, (*dev->dev_ops->udp_tunnel_port_del)(dev,
>> 								udp_tunnel));
>> }
>>@@ -4104,6 +4199,7 @@ rte_eth_led_on(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->dev_led_on == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_led_on(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->dev_led_on)(dev));
>> }
>>
>>@@ -4117,6 +4213,7 @@ rte_eth_led_off(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->dev_led_off == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_led_off(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->dev_led_off)(dev));
>> }
>>
>>@@ -4142,6 +4239,7 @@ rte_eth_fec_get_capability(uint16_t port_id,
>> 		return -ENOTSUP;
>> 	ret = (*dev->dev_ops->fec_get_capability)(dev, speed_fec_capa,
>>num);
>>
>>+	rte_eth_trace_fec_get_capability(port_id, speed_fec_capa, num, ret);
>> 	return ret;
>> }
>>
>>@@ -4162,6 +4260,7 @@ rte_eth_fec_get(uint16_t port_id, uint32_t
>>*fec_capa)
>>
>> 	if (*dev->dev_ops->fec_get == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_fec_get(port_id, fec_capa);
>> 	return eth_err(port_id, (*dev->dev_ops->fec_get)(dev, fec_capa));
>> }
>>
>>@@ -4175,6 +4274,7 @@ rte_eth_fec_set(uint16_t port_id, uint32_t
>>fec_capa)
>>
>> 	if (*dev->dev_ops->fec_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_fec_set(port_id, fec_capa);
>> 	return eth_err(port_id, (*dev->dev_ops->fec_set)(dev, fec_capa));
>> }
>>
>>@@ -4252,6 +4352,7 @@ rte_eth_dev_mac_addr_add(uint16_t port_id,
>>struct rte_ether_addr *addr,
>> 			return 0;
>> 	}
>>
>>+	rte_ethdev_trace_mac_addr_add(port_id, addr, pool);
>> 	/* Update NIC */
>> 	ret = (*dev->dev_ops->mac_addr_add)(dev, addr, index, pool);
>>
>>@@ -4294,6 +4395,7 @@ rte_eth_dev_mac_addr_remove(uint16_t port_id,
>>struct rte_ether_addr *addr)
>> 	} else if (index < 0)
>> 		return 0;  /* Do nothing if address wasn't found */
>>
>>+	rte_ethdev_trace_mac_addr_remove(port_id, addr);
>> 	/* Update NIC */
>> 	(*dev->dev_ops->mac_addr_remove)(dev, index);
>>
>>@@ -4329,6 +4431,7 @@ rte_eth_dev_default_mac_addr_set(uint16_t
>>port_id, struct rte_ether_addr *addr)
>> 		return -ENOTSUP;
>>
>> 	ret = (*dev->dev_ops->mac_addr_set)(dev, addr);
>>+	rte_ethdev_trace_default_mac_addr_set(port_id, addr, ret);
>> 	if (ret < 0)
>> 		return ret;
>>
>>@@ -4415,6 +4518,7 @@ rte_eth_dev_uc_hash_table_set(uint16_t port_id,
>>struct rte_ether_addr *addr,
>> 	if (*dev->dev_ops->uc_hash_table_set == NULL)
>> 		return -ENOTSUP;
>> 	ret = (*dev->dev_ops->uc_hash_table_set)(dev, addr, on);
>>+	rte_ethdev_trace_uc_hash_table_set(port_id, addr, on, ret);
>> 	if (ret == 0) {
>> 		/* Update address in NIC data structure */
>> 		if (on)
>>@@ -4438,6 +4542,7 @@ rte_eth_dev_uc_all_hash_table_set(uint16_t
>>port_id, uint8_t on)
>>
>> 	if (*dev->dev_ops->uc_all_hash_table_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_uc_all_hash_table_set(port_id, on);
>> 	return eth_err(port_id, (*dev->dev_ops->uc_all_hash_table_set)(dev,
>> 								       on));
>> }
>>@@ -4475,6 +4580,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id,
>>uint16_t queue_idx,
>>
>> 	if (*dev->dev_ops->set_queue_rate_limit == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_set_queue_rate_limit(port_id, queue_idx, tx_rate);
>> 	return eth_err(port_id, (*dev->dev_ops->set_queue_rate_limit)(dev,
>> 							queue_idx, tx_rate));
>> }
>>@@ -4502,6 +4608,7 @@ int rte_eth_rx_avail_thresh_set(uint16_t port_id,
>>uint16_t queue_id,
>> 	}
>> 	if (*dev->dev_ops->rx_queue_avail_thresh_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_rx_avail_thresh_set(port_id, queue_id, avail_thresh);
>> 	return eth_err(port_id, (*dev->dev_ops-
>>>rx_queue_avail_thresh_set)(dev,
>> 							     queue_id,
>>avail_thresh));
>> }
>>@@ -4521,6 +4628,7 @@ int rte_eth_rx_avail_thresh_query(uint16_t port_id,
>>uint16_t *queue_id,
>>
>> 	if (*dev->dev_ops->rx_queue_avail_thresh_query == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_rx_avail_thresh_query(port_id, *queue_id);
>> 	return eth_err(port_id, (*dev->dev_ops-
>>>rx_queue_avail_thresh_query)(dev,
>> 							     queue_id,
>>avail_thresh));
>> }
>>@@ -4570,6 +4678,9 @@ rte_eth_dev_callback_register(uint16_t port_id,
>> 		next_port = last_port = port_id;
>> 	}
>>
>>+	rte_ethdev_trace_callback_register(port_id, event, cb_fn, cb_arg,
>>next_port,
>>+					   last_port);
>>+
>> 	rte_spinlock_lock(&eth_dev_cb_lock);
>>
>> 	do {
>>@@ -4665,6 +4776,7 @@ rte_eth_dev_callback_unregister(uint16_t port_id,
>> 	} while (++next_port <= last_port);
>>
>> 	rte_spinlock_unlock(&eth_dev_cb_lock);
>>+	rte_ethdev_trace_callback_unregister(port_id, event, cb_fn, cb_arg,
>>ret);
>> 	return ret;
>> }
>>
>>@@ -4694,6 +4806,7 @@ rte_eth_dev_rx_intr_ctl(uint16_t port_id, int epfd,
>>int op, void *data)
>> 	for (qid = 0; qid < dev->data->nb_rx_queues; qid++) {
>> 		vec = rte_intr_vec_list_index_get(intr_handle, qid);
>> 		rc = rte_intr_rx_ctl(intr_handle, epfd, op, vec, data);
>>+		rte_ethdev_trace_rx_intr_ctl(port_id, epfd, op, data, rc);
>> 		if (rc && rc != -EEXIST) {
>> 			RTE_ETHDEV_LOG(ERR,
>> 				"p %u q %u Rx ctl error op %d epfd %d vec
>>%u\n",
>>@@ -4737,6 +4850,7 @@ rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id,
>>uint16_t queue_id)
>> 		(vec - RTE_INTR_VEC_RXTX_OFFSET) : vec;
>> 	fd = rte_intr_efds_index_get(intr_handle, efd_idx);
>>
>>+	rte_ethdev_trace_rx_intr_ctl_q_get_fd(port_id, queue_id, fd);
>> 	return fd;
>> }
>>
>>@@ -4770,6 +4884,7 @@ rte_eth_dev_rx_intr_ctl_q(uint16_t port_id,
>>uint16_t queue_id,
>>
>> 	vec = rte_intr_vec_list_index_get(intr_handle, queue_id);
>> 	rc = rte_intr_rx_ctl(intr_handle, epfd, op, vec, data);
>>+	rte_ethdev_trace_rx_intr_ctl_q(port_id, queue_id, epfd, op, data, rc);
>> 	if (rc && rc != -EEXIST) {
>> 		RTE_ETHDEV_LOG(ERR,
>> 			"p %u q %u Rx ctl error op %d epfd %d vec %u\n",
>>@@ -4796,6 +4911,7 @@ rte_eth_dev_rx_intr_enable(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->rx_queue_intr_enable == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rx_intr_enable(port_id, queue_id);
>> 	return eth_err(port_id, (*dev->dev_ops->rx_queue_intr_enable)(dev,
>>queue_id));
>> }
>>
>>@@ -4815,6 +4931,7 @@ rte_eth_dev_rx_intr_disable(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->rx_queue_intr_disable == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_rx_intr_disable(port_id, queue_id);
>> 	return eth_err(port_id, (*dev->dev_ops->rx_queue_intr_disable)(dev,
>>queue_id));
>> }
>>
>>@@ -4873,6 +4990,7 @@ rte_eth_add_rx_callback(uint16_t port_id, uint16_t
>>queue_id,
>> 	}
>> 	rte_spinlock_unlock(&eth_dev_rx_cb_lock);
>>
>>+	rte_eth_trace_add_rx_callback(port_id, queue_id, fn, user_param,
>>cb);
>> 	return cb;
>> }
>>
>>@@ -4912,6 +5030,7 @@ rte_eth_add_first_rx_callback(uint16_t port_id,
>>uint16_t queue_id,
>> 		cb, __ATOMIC_RELEASE);
>> 	rte_spinlock_unlock(&eth_dev_rx_cb_lock);
>>
>>+	rte_eth_trace_add_first_rx_callback(port_id, queue_id, fn,
>>user_param, cb);
>> 	return cb;
>> }
>>
>>@@ -4971,6 +5090,7 @@ rte_eth_add_tx_callback(uint16_t port_id, uint16_t
>>queue_id,
>> 	}
>> 	rte_spinlock_unlock(&eth_dev_tx_cb_lock);
>>
>>+	rte_eth_trace_add_tx_callback(port_id, queue_id, fn, user_param,
>>cb);
>> 	return cb;
>> }
>>
>>@@ -5005,6 +5125,7 @@ rte_eth_remove_rx_callback(uint16_t port_id,
>>uint16_t queue_id,
>> 	}
>> 	rte_spinlock_unlock(&eth_dev_rx_cb_lock);
>>
>>+	rte_eth_trace_remove_rx_callback(port_id, queue_id, user_cb, ret);
>> 	return ret;
>> }
>>
>>@@ -5039,6 +5160,7 @@ rte_eth_remove_tx_callback(uint16_t port_id,
>>uint16_t queue_id,
>> 	}
>> 	rte_spinlock_unlock(&eth_dev_tx_cb_lock);
>>
>>+	rte_eth_trace_remove_tx_callback(port_id, queue_id, user_cb, ret);
>> 	return ret;
>> }
>>
>>@@ -5085,6 +5207,7 @@ rte_eth_rx_queue_info_get(uint16_t port_id,
>>uint16_t queue_id,
>> 	dev->dev_ops->rxq_info_get(dev, queue_id, qinfo);
>> 	qinfo->queue_state = dev->data->rx_queue_state[queue_id];
>>
>>+	rte_eth_trace_rx_queue_info_get(port_id, queue_id, qinfo);
>> 	return 0;
>> }
>>
>>@@ -5131,6 +5254,7 @@ rte_eth_tx_queue_info_get(uint16_t port_id,
>>uint16_t queue_id,
>> 	dev->dev_ops->txq_info_get(dev, queue_id, qinfo);
>> 	qinfo->queue_state = dev->data->tx_queue_state[queue_id];
>>
>>+	rte_eth_trace_tx_queue_info_get(port_id, queue_id, qinfo);
>> 	return 0;
>> }
>>
>>@@ -5158,6 +5282,7 @@ rte_eth_rx_burst_mode_get(uint16_t port_id,
>>uint16_t queue_id,
>> 	if (*dev->dev_ops->rx_burst_mode_get == NULL)
>> 		return -ENOTSUP;
>> 	memset(mode, 0, sizeof(*mode));
>>+	rte_eth_trace_rx_burst_mode_get(port_id, queue_id, mode);
>> 	return eth_err(port_id,
>> 		       dev->dev_ops->rx_burst_mode_get(dev, queue_id,
>>mode));
>> }
>>@@ -5186,6 +5311,7 @@ rte_eth_tx_burst_mode_get(uint16_t port_id,
>>uint16_t queue_id,
>> 	if (*dev->dev_ops->tx_burst_mode_get == NULL)
>> 		return -ENOTSUP;
>> 	memset(mode, 0, sizeof(*mode));
>>+	rte_eth_trace_tx_burst_mode_get(port_id, queue_id, mode);
>> 	return eth_err(port_id,
>> 		       dev->dev_ops->tx_burst_mode_get(dev, queue_id,
>>mode));
>> }
>>@@ -5213,6 +5339,7 @@ rte_eth_get_monitor_addr(uint16_t port_id,
>>uint16_t queue_id,
>>
>> 	if (*dev->dev_ops->get_monitor_addr == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_get_monitor_addr(port_id, queue_id, pmc);
>> 	return eth_err(port_id,
>> 		dev->dev_ops->get_monitor_addr(dev->data-
>>>rx_queues[queue_id], pmc));
>> }
>>@@ -5229,6 +5356,7 @@ rte_eth_dev_set_mc_addr_list(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->set_mc_addr_list == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_mc_addr_list(port_id, mc_addr_set,
>>nb_mc_addr);
>> 	return eth_err(port_id, dev->dev_ops->set_mc_addr_list(dev,
>> 						mc_addr_set, nb_mc_addr));
>> }
>>@@ -5243,6 +5371,7 @@ rte_eth_timesync_enable(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->timesync_enable == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_enable(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->timesync_enable)(dev));
>> }
>>
>>@@ -5256,6 +5385,7 @@ rte_eth_timesync_disable(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->timesync_disable == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_disable(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->timesync_disable)(dev));
>> }
>>
>>@@ -5277,6 +5407,7 @@ rte_eth_timesync_read_rx_timestamp(uint16_t
>>port_id, struct timespec *timestamp,
>>
>> 	if (*dev->dev_ops->timesync_read_rx_timestamp == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_read_rx_timestamp(port_id, timestamp,
>>flags);
>> 	return eth_err(port_id, (*dev->dev_ops-
>>>timesync_read_rx_timestamp)
>> 				(dev, timestamp, flags));
>> }
>>@@ -5299,6 +5430,7 @@ rte_eth_timesync_read_tx_timestamp(uint16_t
>>port_id,
>>
>> 	if (*dev->dev_ops->timesync_read_tx_timestamp == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_read_tx_timestamp(port_id, timestamp);
>> 	return eth_err(port_id, (*dev->dev_ops-
>>>timesync_read_tx_timestamp)
>> 				(dev, timestamp));
>> }
>>@@ -5313,6 +5445,7 @@ rte_eth_timesync_adjust_time(uint16_t port_id,
>>int64_t delta)
>>
>> 	if (*dev->dev_ops->timesync_adjust_time == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_adjust_time(port_id, delta);
>> 	return eth_err(port_id, (*dev->dev_ops->timesync_adjust_time)(dev,
>>delta));
>> }
>>
>>@@ -5333,6 +5466,7 @@ rte_eth_timesync_read_time(uint16_t port_id,
>>struct timespec *timestamp)
>>
>> 	if (*dev->dev_ops->timesync_read_time == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_read_time(port_id, timestamp);
>> 	return eth_err(port_id, (*dev->dev_ops->timesync_read_time)(dev,
>> 								timestamp));
>> }
>>@@ -5354,6 +5488,7 @@ rte_eth_timesync_write_time(uint16_t port_id,
>>const struct timespec *timestamp)
>>
>> 	if (*dev->dev_ops->timesync_write_time == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_timesync_write_time(port_id, timestamp);
>> 	return eth_err(port_id, (*dev->dev_ops->timesync_write_time)(dev,
>> 								timestamp));
>> }
>>@@ -5374,6 +5509,7 @@ rte_eth_read_clock(uint16_t port_id, uint64_t
>>*clock)
>>
>> 	if (*dev->dev_ops->read_clock == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_read_clock(port_id, clock);
>> 	return eth_err(port_id, (*dev->dev_ops->read_clock)(dev, clock));
>> }
>>
>>@@ -5394,6 +5530,7 @@ rte_eth_dev_get_reg_info(uint16_t port_id, struct
>>rte_dev_reg_info *info)
>>
>> 	if (*dev->dev_ops->get_reg == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_reg_info(port_id, info);
>> 	return eth_err(port_id, (*dev->dev_ops->get_reg)(dev, info));
>> }
>>
>>@@ -5407,6 +5544,7 @@ rte_eth_dev_get_eeprom_length(uint16_t port_id)
>>
>> 	if (*dev->dev_ops->get_eeprom_length == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_eeprom_length(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->get_eeprom_length)(dev));
>> }
>>
>>@@ -5427,6 +5565,7 @@ rte_eth_dev_get_eeprom(uint16_t port_id, struct
>>rte_dev_eeprom_info *info)
>>
>> 	if (*dev->dev_ops->get_eeprom == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_eeprom(port_id, info);
>> 	return eth_err(port_id, (*dev->dev_ops->get_eeprom)(dev, info));
>> }
>>
>>@@ -5447,6 +5586,7 @@ rte_eth_dev_set_eeprom(uint16_t port_id, struct
>>rte_dev_eeprom_info *info)
>>
>> 	if (*dev->dev_ops->set_eeprom == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_set_eeprom(port_id, info);
>> 	return eth_err(port_id, (*dev->dev_ops->set_eeprom)(dev, info));
>> }
>>
>>@@ -5468,6 +5608,7 @@ rte_eth_dev_get_module_info(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->get_module_info == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_module_info(port_id, modinfo);
>> 	return (*dev->dev_ops->get_module_info)(dev, modinfo);
>> }
>>
>>@@ -5503,6 +5644,7 @@ rte_eth_dev_get_module_eeprom(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->get_module_eeprom == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_module_eeprom(port_id, info);
>> 	return (*dev->dev_ops->get_module_eeprom)(dev, info);
>> }
>>
>>@@ -5526,6 +5668,7 @@ rte_eth_dev_get_dcb_info(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->get_dcb_info == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_get_dcb_info(port_id, dcb_info);
>> 	return eth_err(port_id, (*dev->dev_ops->get_dcb_info)(dev,
>>dcb_info));
>> }
>>
>>@@ -5562,6 +5705,7 @@ rte_eth_dev_adjust_nb_rx_tx_desc(uint16_t
>>port_id,
>> 	if (nb_tx_desc != NULL)
>> 		eth_dev_adjust_nb_desc(nb_tx_desc,
>>&dev_info.tx_desc_lim);
>>
>>+	rte_ethdev_trace_adjust_nb_rx_tx_desc(port_id, *nb_rx_desc,
>>*nb_tx_desc);
>> 	return 0;
>> }
>>
>>@@ -5584,6 +5728,7 @@ rte_eth_dev_hairpin_capability_get(uint16_t
>>port_id,
>> 	if (*dev->dev_ops->hairpin_cap_get == NULL)
>> 		return -ENOTSUP;
>> 	memset(cap, 0, sizeof(*cap));
>>+	rte_ethdev_trace_hairpin_capability_get(port_id, cap);
>> 	return eth_err(port_id, (*dev->dev_ops->hairpin_cap_get)(dev, cap));
>> }
>>
>>@@ -5605,6 +5750,7 @@ rte_eth_dev_pool_ops_supported(uint16_t port_id,
>>const char *pool)
>> 	if (*dev->dev_ops->pool_ops_supported == NULL)
>> 		return 1; /* all pools are supported */
>>
>>+	rte_ethdev_trace_pool_ops_supported(port_id, pool);
>> 	return (*dev->dev_ops->pool_ops_supported)(dev, pool);
>> }
>>
>>@@ -5901,6 +6047,7 @@ rte_eth_representor_info_get(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->representor_info_get == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_representor_info_get(port_id, info);
>> 	return eth_err(port_id, (*dev->dev_ops->representor_info_get)(dev,
>>info));
>> }
>>
>>@@ -5924,6 +6071,7 @@ rte_eth_rx_metadata_negotiate(uint16_t port_id,
>>uint64_t *features)
>> 		return -EINVAL;
>> 	}
>>
>>+	rte_eth_trace_rx_metadata_negotiate(port_id, features, *features);
>> 	if (*dev->dev_ops->rx_metadata_negotiate == NULL)
>> 		return -ENOTSUP;
>> 	return eth_err(port_id,
>>@@ -5956,6 +6104,7 @@ rte_eth_ip_reassembly_capability_get(uint16_t
>>port_id,
>> 		return -ENOTSUP;
>> 	memset(reassembly_capa, 0, sizeof(struct
>>rte_eth_ip_reassembly_params));
>>
>>+	rte_eth_trace_ip_reassembly_capability_get(port_id,
>>reassembly_capa);
>> 	return eth_err(port_id, (*dev->dev_ops-
>>>ip_reassembly_capability_get)
>> 					(dev, reassembly_capa));
>> }
>>@@ -5985,6 +6134,7 @@ rte_eth_ip_reassembly_conf_get(uint16_t port_id,
>> 	if (*dev->dev_ops->ip_reassembly_conf_get == NULL)
>> 		return -ENOTSUP;
>> 	memset(conf, 0, sizeof(struct rte_eth_ip_reassembly_params));
>>+	rte_eth_trace_ip_reassembly_conf_get(port_id, conf);
>> 	return eth_err(port_id,
>> 		       (*dev->dev_ops->ip_reassembly_conf_get)(dev, conf));
>> }
>>@@ -6022,6 +6172,7 @@ rte_eth_ip_reassembly_conf_set(uint16_t port_id,
>>
>> 	if (*dev->dev_ops->ip_reassembly_conf_set == NULL)
>> 		return -ENOTSUP;
>>+	rte_eth_trace_ip_reassembly_conf_set(port_id, conf);
>> 	return eth_err(port_id,
>> 		       (*dev->dev_ops->ip_reassembly_conf_set)(dev, conf));
>> }
>>@@ -6041,6 +6192,7 @@ rte_eth_dev_priv_dump(uint16_t port_id, FILE *file)
>>
>> 	if (*dev->dev_ops->eth_dev_priv_dump == NULL)
>> 		return -ENOTSUP;
>>+	rte_ethdev_trace_priv_dump(port_id);
>> 	return eth_err(port_id, (*dev->dev_ops->eth_dev_priv_dump)(dev,
>>file));
>> }
>>
>>diff --git a/lib/ethdev/rte_ethdev_trace.h b/lib/ethdev/rte_ethdev_trace.h
>>index 1491c815c3..802f2c1ae1 100644
>>--- a/lib/ethdev/rte_ethdev_trace.h
>>+++ b/lib/ethdev/rte_ethdev_trace.h
>>@@ -88,6 +88,1200 @@ RTE_TRACE_POINT(
>> 	rte_trace_point_emit_u16(port_id);
>> )
>>
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_add_first_rx_callback,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		rte_rx_callback_fn fn, void *user_param,
>>+		struct rte_eth_rxtx_callback *cb),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(fn);
>>+	rte_trace_point_emit_ptr(user_param);
>>+	rte_trace_point_emit_ptr(cb);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_add_rx_callback,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		rte_rx_callback_fn fn, void *user_param,
>>+		struct rte_eth_rxtx_callback *cb),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(fn);
>>+	rte_trace_point_emit_ptr(user_param);
>>+	rte_trace_point_emit_ptr(cb);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_add_tx_callback,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		rte_tx_callback_fn fn, void *user_param,
>>+		struct rte_eth_rxtx_callback *cb),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(fn);
>>+	rte_trace_point_emit_ptr(user_param);
>>+	rte_trace_point_emit_ptr(cb);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_allmulticast_disable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(all_multicast);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_allmulticast_enable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(all_multicast);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_allmulticast_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(all_multicast);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_mtu,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t mtu, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(mtu);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_adjust_nb_rx_tx_desc,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t nb_rx_desc,
>>+		uint16_t nb_tx_desc),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(nb_rx_desc);
>>+	rte_trace_point_emit_u16(nb_tx_desc);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_callback_register,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, enum rte_eth_event_type
>>event,
>>+		rte_eth_dev_cb_fn cb_fn, void *cb_arg, uint16_t next_port,
>>+		uint16_t last_port),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(event);
>>+	rte_trace_point_emit_ptr(cb_fn);
>>+	rte_trace_point_emit_ptr(cb_arg);
>>+	rte_trace_point_emit_u16(next_port);
>>+	rte_trace_point_emit_u16(last_port);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_callback_unregister,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, enum rte_eth_event_type
>>event,
>>+		rte_eth_dev_cb_fn cb_fn, void *cb_arg, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(event);
>>+	rte_trace_point_emit_ptr(cb_fn);
>>+	rte_trace_point_emit_ptr(cb_arg);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_default_mac_addr_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*addr, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(addr);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_flow_ctrl_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_fc_conf
>>*fc_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(fc_conf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_flow_ctrl_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_fc_conf
>>*fc_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(fc_conf->high_water);
>>+	rte_trace_point_emit_u32(fc_conf->low_water);
>>+	rte_trace_point_emit_u16(fc_conf->pause_time);
>>+	rte_trace_point_emit_u16(fc_conf->send_xon);
>>+	rte_trace_point_emit_int(fc_conf->mode);
>>+	rte_trace_point_emit_u8(fc_conf->mac_ctrl_frame_fwd);
>>+	rte_trace_point_emit_u8(fc_conf->autoneg);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_fw_version_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, char *fw_version, size_t
>>fw_size),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(fw_version);
>>+	rte_trace_point_emit_size_t(fw_size);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_dcb_info,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_dcb_info
>>*dcb_info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(dcb_info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_eeprom,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct
>>rte_dev_eeprom_info *info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_eeprom_length,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_mtu,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t mtu),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(mtu);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_count_avail,
>>+	RTE_TRACE_POINT_ARGS(uint16_t count),
>>+	rte_trace_point_emit_u16(count);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_count_total,
>>+	RTE_TRACE_POINT_ARGS(uint16_t count),
>>+	rte_trace_point_emit_u16(count);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_name_by_port,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, char *name),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_string(name);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_port_by_name,
>>+	RTE_TRACE_POINT_ARGS(const char *name, uint16_t port_id),
>>+	rte_trace_point_emit_string(name);
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_reg_info,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_dev_reg_info
>>*info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_sec_ctx,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_supported_ptypes,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint32_t ptype_mask,
>>+		uint32_t *ptypes, int num, int j),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(ptype_mask);
>>+	rte_trace_point_emit_ptr(ptypes);
>>+	rte_trace_point_emit_int(num);
>>+	rte_trace_point_emit_int(j);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_vlan_offload,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_info_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_dev_info *dev_info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_string(dev_info->driver_name);
>>+	rte_trace_point_emit_u32(dev_info->if_index);
>>+	rte_trace_point_emit_u16(dev_info->min_mtu);
>>+	rte_trace_point_emit_u16(dev_info->max_mtu);
>>+	rte_trace_point_emit_u32(dev_info->min_rx_bufsize);
>>+	rte_trace_point_emit_u32(dev_info->max_rx_pktlen);
>>+	rte_trace_point_emit_u64(dev_info->rx_offload_capa);
>>+	rte_trace_point_emit_u64(dev_info->tx_offload_capa);
>>+	rte_trace_point_emit_u64(dev_info->rx_queue_offload_capa);
>>+	rte_trace_point_emit_u64(dev_info->tx_queue_offload_capa);
>>+	rte_trace_point_emit_u16(dev_info->reta_size);
>>+	rte_trace_point_emit_u8(dev_info->hash_key_size);
>>+	rte_trace_point_emit_u16(dev_info->nb_rx_queues);
>>+	rte_trace_point_emit_u16(dev_info->nb_tx_queues);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_is_removed,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_is_valid_port,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_mac_addr_add,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*addr,
>>+		uint32_t pool),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(addr);
>>+	rte_trace_point_emit_u32(pool);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_mac_addr_remove,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*addr),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(addr);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_pool_ops_supported,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, const char *pool),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(pool);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_priority_flow_ctrl_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_pfc_conf
>>*pfc_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(pfc_conf->fc.high_water);
>>+	rte_trace_point_emit_u32(pfc_conf->fc.low_water);
>>+	rte_trace_point_emit_u16(pfc_conf->fc.pause_time);
>>+	rte_trace_point_emit_u16(pfc_conf->fc.send_xon);
>>+	rte_trace_point_emit_int(pfc_conf->fc.mode);
>>+	rte_trace_point_emit_u8(pfc_conf->fc.mac_ctrl_frame_fwd);
>>+	rte_trace_point_emit_u8(pfc_conf->fc.autoneg);
>>+	rte_trace_point_emit_u8(pfc_conf->priority);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_reset,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rss_hash_conf_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_rss_conf
>>*rss_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(rss_conf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rss_hash_update,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_rss_conf
>>*rss_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(rss_conf->rss_key);
>>+	rte_trace_point_emit_u8(rss_conf->rss_key_len);
>>+	rte_trace_point_emit_u64(rss_conf->rss_hf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rss_reta_query,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t
>>reta_size),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(reta_conf);
>>+	rte_trace_point_emit_u16(reta_size);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rss_reta_update,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t
>>reta_size),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(reta_conf->mask);
>>+	rte_trace_point_emit_u16(reta_size);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_intr_ctl,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int epfd, int op, void
>>*data, int rc),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(epfd);
>>+	rte_trace_point_emit_int(op);
>>+	rte_trace_point_emit_ptr(data);
>>+	rte_trace_point_emit_int(rc);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_intr_ctl_q,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, int
>>epfd,
>>+		int op, void *data, int rc),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_int(epfd);
>>+	rte_trace_point_emit_int(op);
>>+	rte_trace_point_emit_ptr(data);
>>+	rte_trace_point_emit_int(rc);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_intr_ctl_q_get_fd,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id, int fd),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_int(fd);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_intr_disable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_intr_enable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_offload_name,
>>+	RTE_TRACE_POINT_ARGS(uint64_t offload, const char *name),
>>+	rte_trace_point_emit_u64(offload);
>>+	rte_trace_point_emit_string(name);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_queue_start,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_rx_queue_stop,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_eeprom,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct
>>rte_dev_eeprom_info *info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(info->data);
>>+	rte_trace_point_emit_u32(info->offset);
>>+	rte_trace_point_emit_u32(info->length);
>>+	rte_trace_point_emit_u32(info->magic);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_link_down,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_link_up,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_mc_addr_list,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_ether_addr *mc_addr_set,
>>+		uint32_t nb_mc_addr),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(mc_addr_set);
>>+	rte_trace_point_emit_u32(nb_mc_addr);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_ptypes,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint32_t ptype_mask,
>>+		uint32_t *set_ptypes, unsigned int num),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(ptype_mask);
>>+	rte_trace_point_emit_ptr(set_ptypes);
>>+	rte_trace_point_emit_u32(num);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_rx_queue_stats_mapping,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,
>>+		uint8_t stat_idx),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+	rte_trace_point_emit_u8(stat_idx);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_tx_queue_stats_mapping,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,
>>+		uint8_t stat_idx),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tx_queue_id);
>>+	rte_trace_point_emit_u8(stat_idx);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_vlan_ether_type,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, enum rte_vlan_type
>>vlan_type,
>>+		uint16_t tag_type),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(vlan_type);
>>+	rte_trace_point_emit_u16(tag_type);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_vlan_offload,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int offload_mask, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(offload_mask);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_vlan_pvid,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t pvid, int on),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(pvid);
>>+	rte_trace_point_emit_int(on);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_set_vlan_strip_on_queue,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,
>>+		int on),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+	rte_trace_point_emit_int(on);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_socket_id,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_tx_offload_name,
>>+	RTE_TRACE_POINT_ARGS(uint64_t offload, const char *name),
>>+	rte_trace_point_emit_u64(offload);
>>+	rte_trace_point_emit_string(name);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_tx_queue_start,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tx_queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_tx_queue_stop,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tx_queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_uc_all_hash_table_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint8_t on),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u8(on);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_uc_hash_table_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*addr,
>>+		uint8_t on, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(addr);
>>+	rte_trace_point_emit_u8(on);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_udp_tunnel_port_add,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_udp_tunnel
>>*tunnel_udp),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tunnel_udp->udp_port);
>>+	rte_trace_point_emit_u8(tunnel_udp->prot_type);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_udp_tunnel_port_delete,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_udp_tunnel
>>*tunnel_udp),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tunnel_udp->udp_port);
>>+	rte_trace_point_emit_u8(tunnel_udp->prot_type);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_vlan_filter,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t vlan_id, int on,
>>int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(vlan_id);
>>+	rte_trace_point_emit_int(on);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_find_next,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_find_next_of,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id_start,
>>+		const struct rte_device *parent),
>>+	rte_trace_point_emit_u16(port_id_start);
>>+	rte_trace_point_emit_ptr(parent);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_find_next_owned_by,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		const uint64_t owner_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(owner_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_find_next_sibling,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id_start, uint16_t
>>ref_port_id),
>>+	rte_trace_point_emit_u16(port_id_start);
>>+	rte_trace_point_emit_u16(ref_port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_iterator_cleanup,
>>+	RTE_TRACE_POINT_ARGS(struct rte_dev_iterator *iter),
>>+	rte_trace_point_emit_ptr(iter);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_iterator_init,
>>+	RTE_TRACE_POINT_ARGS(struct rte_dev_iterator *iter, const char
>>*devargs),
>>+	rte_trace_point_emit_ptr(iter);
>>+	rte_trace_point_emit_ptr(devargs);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_iterator_next,
>>+	RTE_TRACE_POINT_ARGS(struct rte_dev_iterator *iter),
>>+	rte_trace_point_emit_ptr(iter);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_led_off,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_led_on,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_link_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_link *link),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(link->link_speed);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_link_get_nowait,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_link *link),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(link->link_speed);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_macaddr_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*mac_addr),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(mac_addr);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_promiscuous_disable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(promiscuous);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_promiscuous_enable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(promiscuous);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_promiscuous_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_int(promiscuous);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_remove_rx_callback,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		const struct rte_eth_rxtx_callback *user_cb, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(user_cb);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_remove_tx_callback,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		const struct rte_eth_rxtx_callback *user_cb, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(user_cb);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_burst_mode_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		struct rte_eth_burst_mode *mode),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(mode);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_queue_info_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		struct rte_eth_rxq_info *qinfo),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(qinfo->mp);
>>+	rte_trace_point_emit_u8(qinfo->scattered_rx);
>>+	rte_trace_point_emit_u8(qinfo->queue_state);
>>+	rte_trace_point_emit_u16(qinfo->nb_desc);
>>+	rte_trace_point_emit_u16(qinfo->rx_buf_size);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_queue_setup,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,
>>+		uint16_t nb_rx_desc, unsigned int socket_id,
>>+		const struct rte_eth_rxconf *rx_conf,
>>+		struct rte_mempool *mb_pool),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+	rte_trace_point_emit_u16(nb_rx_desc);
>>+	rte_trace_point_emit_u32(socket_id);
>>+	rte_trace_point_emit_ptr(rx_conf);
>>+	rte_trace_point_emit_ptr(mb_pool);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_set_queue_rate_limit,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_idx,
>>+		uint16_t tx_rate),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_idx);
>>+	rte_trace_point_emit_u16(tx_rate);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_speed_bitflag,
>>+	RTE_TRACE_POINT_ARGS(uint32_t speed, int duplex),
>>+	rte_trace_point_emit_u32(speed);
>>+	rte_trace_point_emit_int(duplex);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_stats_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_stats
>>*stats),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(stats);
>>+	rte_trace_point_emit_u64(stats->rx_nombuf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_stats_reset,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_adjust_time,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, int64_t delta),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_i64(delta);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_disable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_enable,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_read_rx_timestamp,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct timespec
>>*timestamp,
>>+		uint32_t flags),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(timestamp);
>>+	rte_trace_point_emit_u32(flags);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_read_time,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct timespec *time),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(time);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_read_tx_timestamp,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct timespec
>>*timestamp),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(timestamp);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_timesync_write_time,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec
>>*time),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(time);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_buffer_count_callback,
>>+	RTE_TRACE_POINT_ARGS(struct rte_mbuf **pkts, uint16_t unsent,
>>+		uint64_t count),
>>+	rte_trace_point_emit_ptr(pkts);
>>+	rte_trace_point_emit_u16(unsent);
>>+	rte_trace_point_emit_u64(count);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_buffer_drop_callback,
>>+	RTE_TRACE_POINT_ARGS(struct rte_mbuf **pkts, uint16_t unsent),
>>+	rte_trace_point_emit_ptr(pkts);
>>+	rte_trace_point_emit_u16(unsent);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_buffer_init,
>>+	RTE_TRACE_POINT_ARGS(struct rte_eth_dev_tx_buffer *buffer,
>>uint16_t size,
>>+		int ret),
>>+	rte_trace_point_emit_ptr(buffer);
>>+	rte_trace_point_emit_u16(size);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_buffer_set_err_callback,
>>+	RTE_TRACE_POINT_ARGS(struct rte_eth_dev_tx_buffer *buffer,
>>+		buffer_tx_error_fn callback, void *userdata),
>>+	rte_trace_point_emit_ptr(buffer);
>>+	rte_trace_point_emit_ptr(callback);
>>+	rte_trace_point_emit_ptr(userdata);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_burst_mode_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		struct rte_eth_burst_mode *mode),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(mode);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_done_cleanup,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>uint32_t free_cnt,
>>+		int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_u32(free_cnt);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_queue_info_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		struct rte_eth_txq_info *qinfo),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_u16(qinfo->nb_desc);
>>+	rte_trace_point_emit_u8(qinfo->queue_state);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_xstat xstats,
>>+		int i),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(xstats.id);
>>+	rte_trace_point_emit_u64(xstats.value);
>>+	rte_trace_point_emit_u32(i);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_get_by_id,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, const uint64_t *ids,
>>+		uint64_t *values, unsigned int size),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(ids);
>>+	rte_trace_point_emit_ptr(values);
>>+	rte_trace_point_emit_u32(size);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_get_id_by_name,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, const char *xstat_name,
>>+		uint64_t *id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_string(xstat_name);
>>+	rte_trace_point_emit_ptr(id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_get_names,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_xstat_name *xstats_names,
>>+		unsigned int size, int cnt_used_entries),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_string(xstats_names->name);
>>+	rte_trace_point_emit_u32(size);
>>+	rte_trace_point_emit_int(cnt_used_entries);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_get_names_by_id,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_xstat_name *xstats_names, uint64_t ids),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_string(xstats_names->name);
>>+	rte_trace_point_emit_u64(ids);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_xstats_reset,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_owner_delete,
>>+	RTE_TRACE_POINT_ARGS(const uint64_t owner_id, int ret),
>>+	rte_trace_point_emit_u64(owner_id);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_owner_get,
>>+	RTE_TRACE_POINT_ARGS(const uint16_t port_id,
>>+		struct rte_eth_dev_owner *owner),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(owner->id);
>>+	rte_trace_point_emit_string(owner->name);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_owner_new,
>>+	RTE_TRACE_POINT_ARGS(uint64_t owner_id),
>>+	rte_trace_point_emit_u64(owner_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_owner_set,
>>+	RTE_TRACE_POINT_ARGS(const uint16_t port_id,
>>+		const struct rte_eth_dev_owner *owner, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(owner->id);
>>+	rte_trace_point_emit_string(owner->name);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_owner_unset,
>>+	RTE_TRACE_POINT_ARGS(const uint16_t port_id,
>>+		const uint64_t owner_id, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u64(owner_id);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_module_eeprom,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_dev_eeprom_info *info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_get_module_info,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_dev_module_info *modinfo),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(modinfo);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_read_clock,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint64_t *clk),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(clk);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_hairpin_capability_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_hairpin_cap *cap),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(cap);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_hairpin_queue_setup,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,
>>+		uint16_t nb_rx_desc, const struct rte_eth_hairpin_conf *conf,
>>+		int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(rx_queue_id);
>>+	rte_trace_point_emit_u16(nb_rx_desc);
>>+	rte_trace_point_emit_ptr(conf);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_tx_hairpin_queue_setup,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,
>>+		uint16_t nb_tx_desc, const struct rte_eth_hairpin_conf *conf,
>>+		int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(tx_queue_id);
>>+	rte_trace_point_emit_u16(nb_tx_desc);
>>+	rte_trace_point_emit_ptr(conf);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_hairpin_bind,
>>+	RTE_TRACE_POINT_ARGS(uint16_t tx_port, uint16_t rx_port, int ret),
>>+	rte_trace_point_emit_u16(tx_port);
>>+	rte_trace_point_emit_u16(rx_port);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_hairpin_get_peer_ports,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t *peer_ports,
>>+		size_t len, uint32_t direction, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(peer_ports);
>>+	rte_trace_point_emit_size_t(len);
>>+	rte_trace_point_emit_u32(direction);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_hairpin_unbind,
>>+	RTE_TRACE_POINT_ARGS(uint16_t tx_port, uint16_t rx_port, int ret),
>>+	rte_trace_point_emit_u16(tx_port);
>>+	rte_trace_point_emit_u16(rx_port);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_link_speed_to_str,
>>+	RTE_TRACE_POINT_ARGS(uint32_t link_speed),
>>+	rte_trace_point_emit_u32(link_speed);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_link_to_str,
>>+	RTE_TRACE_POINT_ARGS(char *str, size_t len,
>>+		const struct rte_eth_link *eth_link),
>>+	rte_trace_point_emit_ptr(str);
>>+	rte_trace_point_emit_size_t(len);
>>+	rte_trace_point_emit_ptr(eth_link);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_fec_get_capability,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_fec_capa *speed_fec_capa,
>>+		unsigned int num, int ret),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(speed_fec_capa);
>>+	rte_trace_point_emit_u32(num);
>>+	rte_trace_point_emit_int(ret);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_fec_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint32_t *fec_capa),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(fec_capa);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_fec_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint32_t fec_capa),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u32(fec_capa);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_get_monitor_addr,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		struct rte_power_monitor_cond *pmc),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_ptr(pmc);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_representor_info_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_representor_info *info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_capability_name,
>>+	RTE_TRACE_POINT_ARGS(uint64_t capability, const char *name),
>>+	rte_trace_point_emit_u64(capability);
>>+	rte_trace_point_emit_string(name);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_conf_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_conf
>>*dev_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(dev_conf);
>>+	rte_trace_point_emit_u32(dev_conf->link_speeds);
>>+	rte_trace_point_emit_u64(dev_conf->rxmode.offloads);
>>+	rte_trace_point_emit_u64(dev_conf->txmode.offloads);
>>+	rte_trace_point_emit_u32(dev_conf->lpbk_mode);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_macaddrs_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_ether_addr
>>*ma,
>>+		unsigned int num),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(ma);
>>+	rte_trace_point_emit_u32(num);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_metadata_negotiate,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint64_t *features,
>>+		uint64_t features_val),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(features);
>>+	rte_trace_point_emit_u64(features_val);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_priority_flow_ctrl_queue_configure,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_pfc_queue_conf *pfc_queue_conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(pfc_queue_conf);
>>+	rte_trace_point_emit_int(pfc_queue_conf->mode);
>>+	rte_trace_point_emit_u16(pfc_queue_conf->rx_pause.tx_qid);
>>+	rte_trace_point_emit_u16(pfc_queue_conf->tx_pause.rx_qid);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_priority_flow_ctrl_queue_info_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_pfc_queue_info *pfc_queue_info),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(pfc_queue_info);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_ethdev_trace_priv_dump,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_ip_reassembly_capability_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_ip_reassembly_params *capa),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(capa);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_ip_reassembly_conf_get,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		struct rte_eth_ip_reassembly_params *conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(conf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_ip_reassembly_conf_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id,
>>+		const struct rte_eth_ip_reassembly_params *conf),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_ptr(conf);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_avail_thresh_query,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+)
>>+
>>+RTE_TRACE_POINT(
>>+	rte_eth_trace_rx_avail_thresh_set,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		uint8_t avail_thresh),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_u8(avail_thresh);
>>+)
>>+
>> #ifdef __cplusplus
>> }
>> #endif
>>diff --git a/lib/ethdev/rte_ethdev_trace_fp.h
>>b/lib/ethdev/rte_ethdev_trace_fp.h
>>index 40084d1929..ba3fdd04a2 100644
>>--- a/lib/ethdev/rte_ethdev_trace_fp.h
>>+++ b/lib/ethdev/rte_ethdev_trace_fp.h
>>@@ -37,6 +37,25 @@ RTE_TRACE_POINT_FP(
>> 	rte_trace_point_emit_u16(nb_pkts);
>> )
>>
>>+RTE_TRACE_POINT_FP(
>>+	rte_eth_trace_call_rx_callbacks,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		uint16_t nb_rx, uint16_t nb_pkts),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_u16(nb_rx);
>>+	rte_trace_point_emit_u16(nb_pkts);
>>+)
>>+
>>+RTE_TRACE_POINT_FP(
>>+	rte_eth_trace_call_tx_callbacks,
>>+	RTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,
>>+		uint16_t nb_pkts),
>>+	rte_trace_point_emit_u16(port_id);
>>+	rte_trace_point_emit_u16(queue_id);
>>+	rte_trace_point_emit_u16(nb_pkts);
>>+)
>>+
>> #ifdef __cplusplus
>> }
>> #endif
>>diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
>>index 3651ceb234..79d0b2ee1f 100644
>>--- a/lib/ethdev/version.map
>>+++ b/lib/ethdev/version.map
>>@@ -319,4 +319,148 @@ INTERNAL {
>> 	rte_eth_representor_id_get;
>> 	rte_eth_switch_domain_alloc;
>> 	rte_eth_switch_domain_free;
>>+	__rte_eth_trace_add_first_rx_callback;
>>+	__rte_eth_trace_add_rx_callback;
>>+	__rte_eth_trace_add_tx_callback;
>>+	__rte_eth_trace_allmulticast_disable;
>>+	__rte_eth_trace_allmulticast_enable;
>>+	__rte_eth_trace_allmulticast_get;
>>+	__rte_eth_trace_call_rx_callbacks;
>>+	__rte_eth_trace_call_tx_callbacks;
>>+	__rte_ethdev_trace_count_avail;
>>+	__rte_ethdev_trace_count_total;
>>+	__rte_ethdev_trace_set_mtu;
>>+	__rte_ethdev_trace_adjust_nb_rx_tx_desc;
>>+	__rte_ethdev_trace_callback_register;
>>+	__rte_ethdev_trace_callback_unregister;
>>+	__rte_ethdev_trace_default_mac_addr_set;
>>+	__rte_ethdev_trace_flow_ctrl_get;
>>+	__rte_ethdev_trace_flow_ctrl_set;
>>+	__rte_ethdev_trace_fw_version_get;
>>+	__rte_ethdev_trace_get_dcb_info;
>>+	__rte_ethdev_trace_get_eeprom;
>>+	__rte_ethdev_trace_get_eeprom_length;
>>+	__rte_ethdev_trace_get_mtu;
>>+	__rte_ethdev_trace_get_name_by_port;
>>+	__rte_ethdev_trace_get_port_by_name;
>>+	__rte_ethdev_trace_get_reg_info;
>>+	__rte_ethdev_trace_get_sec_ctx;
>>+	__rte_ethdev_trace_get_supported_ptypes;
>>+	__rte_ethdev_trace_get_vlan_offload;
>>+	__rte_ethdev_trace_info_get;
>>+	__rte_ethdev_trace_is_removed;
>>+	__rte_ethdev_trace_is_valid_port;
>>+	__rte_ethdev_trace_mac_addr_add;
>>+	__rte_ethdev_trace_mac_addr_remove;
>>+	__rte_ethdev_trace_pool_ops_supported;
>>+	__rte_ethdev_trace_priority_flow_ctrl_set;
>>+	__rte_ethdev_trace_reset;
>>+	__rte_ethdev_trace_rss_hash_conf_get;
>>+	__rte_ethdev_trace_rss_hash_update;
>>+	__rte_ethdev_trace_rss_reta_query;
>>+	__rte_ethdev_trace_rss_reta_update;
>>+	__rte_ethdev_trace_rx_intr_ctl;
>>+	__rte_ethdev_trace_rx_intr_ctl_q;
>>+	__rte_ethdev_trace_rx_intr_ctl_q_get_fd;
>>+	__rte_ethdev_trace_rx_intr_disable;
>>+	__rte_ethdev_trace_rx_intr_enable;
>>+	__rte_ethdev_trace_rx_offload_name;
>>+	__rte_ethdev_trace_rx_queue_start;
>>+	__rte_ethdev_trace_rx_queue_stop;
>>+	__rte_ethdev_trace_set_eeprom;
>>+	__rte_ethdev_trace_set_link_down;
>>+	__rte_ethdev_trace_set_link_up;
>>+	__rte_ethdev_trace_set_mc_addr_list;
>>+	__rte_ethdev_trace_set_ptypes;
>>+	__rte_ethdev_trace_set_rx_queue_stats_mapping;
>>+	__rte_ethdev_trace_set_tx_queue_stats_mapping;
>>+	__rte_ethdev_trace_set_vlan_ether_type;
>>+	__rte_ethdev_trace_set_vlan_offload;
>>+	__rte_ethdev_trace_set_vlan_pvid;
>>+	__rte_ethdev_trace_set_vlan_strip_on_queue;
>>+	__rte_ethdev_trace_socket_id;
>>+	__rte_ethdev_trace_tx_offload_name;
>>+	__rte_ethdev_trace_tx_queue_start;
>>+	__rte_ethdev_trace_tx_queue_stop;
>>+	__rte_ethdev_trace_uc_all_hash_table_set;
>>+	__rte_ethdev_trace_uc_hash_table_set;
>>+	__rte_ethdev_trace_udp_tunnel_port_add;
>>+	__rte_ethdev_trace_udp_tunnel_port_delete;
>>+	__rte_ethdev_trace_vlan_filter;
>>+	__rte_eth_trace_find_next;
>>+	__rte_eth_trace_find_next_of;
>>+	__rte_eth_trace_find_next_owned_by;
>>+	__rte_eth_trace_find_next_sibling;
>>+	__rte_eth_trace_iterator_cleanup;
>>+	__rte_eth_trace_iterator_init;
>>+	__rte_eth_trace_iterator_next;
>>+	__rte_eth_trace_led_off;
>>+	__rte_eth_trace_led_on;
>>+	__rte_eth_trace_link_get;
>>+	__rte_eth_trace_link_get_nowait;
>>+	__rte_eth_trace_macaddr_get;
>>+	__rte_eth_trace_promiscuous_disable;
>>+	__rte_eth_trace_promiscuous_enable;
>>+	__rte_eth_trace_promiscuous_get;
>>+	__rte_eth_trace_remove_rx_callback;
>>+	__rte_eth_trace_remove_tx_callback;
>>+	__rte_eth_trace_rx_burst_mode_get;
>>+	__rte_eth_trace_rx_queue_info_get;
>>+	__rte_eth_trace_rx_queue_setup;
>>+	__rte_eth_trace_set_queue_rate_limit;
>>+	__rte_eth_trace_speed_bitflag;
>>+	__rte_eth_trace_stats_get;
>>+	__rte_eth_trace_stats_reset;
>>+	__rte_eth_trace_timesync_adjust_time;
>>+	__rte_eth_trace_timesync_disable;
>>+	__rte_eth_trace_timesync_enable;
>>+	__rte_eth_trace_timesync_read_rx_timestamp;
>>+	__rte_eth_trace_timesync_read_time;
>>+	__rte_eth_trace_timesync_read_tx_timestamp;
>>+	__rte_eth_trace_timesync_write_time;
>>+	__rte_eth_trace_tx_buffer_count_callback;
>>+	__rte_eth_trace_tx_buffer_drop_callback;
>>+	__rte_eth_trace_tx_buffer_init;
>>+	__rte_eth_trace_tx_buffer_set_err_callback;
>>+	__rte_eth_trace_tx_burst_mode_get;
>>+	__rte_eth_trace_tx_done_cleanup;
>>+	__rte_eth_trace_tx_queue_info_get;
>>+	__rte_eth_trace_xstats_get;
>>+	__rte_eth_trace_xstats_get_by_id;
>>+	__rte_eth_trace_xstats_get_id_by_name;
>>+	__rte_eth_trace_xstats_get_names;
>>+	__rte_eth_trace_xstats_get_names_by_id;
>>+	__rte_eth_trace_xstats_reset;
>>+	__rte_ethdev_trace_owner_delete;
>>+	__rte_ethdev_trace_owner_get;
>>+	__rte_ethdev_trace_owner_new;
>>+	__rte_ethdev_trace_owner_set;
>>+	__rte_ethdev_trace_owner_unset;
>>+	__rte_ethdev_trace_get_module_eeprom;
>>+	__rte_ethdev_trace_get_module_info;
>>+	__rte_ethdev_trace_hairpin_capability_get;
>>+	__rte_eth_trace_rx_hairpin_queue_setup;
>>+	__rte_eth_trace_tx_hairpin_queue_setup;
>>+	__rte_eth_trace_hairpin_bind;
>>+	__rte_eth_trace_hairpin_get_peer_ports;
>>+	__rte_eth_trace_hairpin_unbind;
>>+	__rte_eth_trace_link_speed_to_str;
>>+	__rte_eth_trace_link_to_str;
>>+	__rte_eth_trace_fec_get_capability;
>>+	__rte_eth_trace_fec_get;
>>+	__rte_eth_trace_fec_set;
>>+	__rte_eth_trace_get_monitor_addr;
>>+	__rte_eth_trace_representor_info_get;
>>+	__rte_ethdev_trace_capability_name;
>>+	__rte_ethdev_trace_conf_get;
>>+	__rte_eth_trace_macaddrs_get;
>>+	__rte_eth_trace_rx_metadata_negotiate;
>>+	__rte_ethdev_trace_priority_flow_ctrl_queue_configure;
>>+	__rte_ethdev_trace_priority_flow_ctrl_queue_info_get;
>>+	__rte_ethdev_trace_priv_dump;
>>+	__rte_eth_trace_ip_reassembly_capability_get;
>>+	__rte_eth_trace_ip_reassembly_conf_get;
>>+	__rte_eth_trace_ip_reassembly_conf_set;
>>+	__rte_eth_trace_rx_avail_thresh_query;
>>+	__rte_eth_trace_rx_avail_thresh_set;
>> };
>>--
>>2.28.0


  reply	other threads:[~2022-10-10  6:43 UTC|newest]

Thread overview: 172+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-04 13:44 [PATCH 0/6] add trace points in ethdev library Ankur Dwivedi
2022-08-04 13:44 ` [PATCH 1/6] ethdev: add trace points Ankur Dwivedi
2022-09-12 11:00   ` Andrew Rybchenko
2022-09-13  6:48     ` [EXT] " Ankur Dwivedi
2022-09-13  7:18       ` Andrew Rybchenko
2022-09-26 15:03         ` Andrew Rybchenko
2022-09-28  4:02           ` Jerin Jacob
2022-08-04 13:44 ` [PATCH 2/6] ethdev: add trace points for flow Ankur Dwivedi
2022-08-04 13:44 ` [PATCH 3/6] ethdev: add trace points for mtr Ankur Dwivedi
2022-08-04 13:44 ` [PATCH 4/6] ethdev: add trace points for tm Ankur Dwivedi
2022-08-04 13:44 ` [PATCH 5/6] ethdev: add trace points for driver Ankur Dwivedi
2022-08-04 13:44 ` [PATCH 6/6] devtools: add trace function check in checkpatch Ankur Dwivedi
2022-09-29 10:29 ` [PATCH v2 0/4] add trace points in ethdev library Ankur Dwivedi
2022-09-29 10:29   ` [PATCH v2 1/4] ethdev: add trace points Ankur Dwivedi
2022-10-06  7:09     ` Andrew Rybchenko
2022-10-06  7:24       ` [EXT] " Ankur Dwivedi
2022-10-06  7:27         ` Andrew Rybchenko
2022-10-06  7:43           ` Ankur Dwivedi
2022-10-06  7:50             ` Andrew Rybchenko
2022-10-06  7:57               ` David Marchand
2022-10-12  9:49                 ` Jerin Jacob
2022-10-12  9:56                   ` David Marchand
2022-09-29 10:29   ` [PATCH v2 2/4] ethdev: add trace points for flow Ankur Dwivedi
2022-09-29 10:29   ` [PATCH v2 3/4] ethdev: add trace points for mtr Ankur Dwivedi
2022-09-29 10:29   ` [PATCH v2 4/4] ethdev: add trace points for tm Ankur Dwivedi
2022-10-06  7:10   ` [PATCH v2 0/4] add trace points in ethdev library Andrew Rybchenko
2022-10-06  7:26     ` [EXT] " Ankur Dwivedi
2022-10-06  7:28       ` Andrew Rybchenko
2022-10-06  7:47         ` Ankur Dwivedi
2022-10-06 12:55           ` Ankur Dwivedi
2022-10-06 15:18   ` [PATCH v3 " Ankur Dwivedi
2022-10-06 15:18     ` [PATCH v3 1/4] ethdev: add trace points Ankur Dwivedi
2022-10-06 16:03       ` Morten Brørup
2022-10-07 16:23       ` Ankur Dwivedi
2022-10-10  6:39         ` Ankur Dwivedi [this message]
2022-12-12 18:34           ` Ferruh Yigit
2022-12-12 18:38       ` Ferruh Yigit
2022-12-14 10:34         ` David Marchand
2022-12-14 11:04           ` Ferruh Yigit
2022-12-13 20:06       ` Ferruh Yigit
2022-12-14 10:40         ` Jerin Jacob
2022-12-14 12:10           ` Ferruh Yigit
2022-12-15  6:49             ` Jerin Jacob
2023-01-12  9:10               ` Thomas Monjalon
2023-01-12  9:43                 ` trace point symbols Morten Brørup
2023-01-13 11:22                   ` Jerin Jacob
2022-12-14 13:52         ` [EXT] Re: [PATCH v3 1/4] ethdev: add trace points Ankur Dwivedi
2022-10-06 15:18     ` [PATCH v3 2/4] ethdev: add trace points for flow Ankur Dwivedi
2022-10-06 15:18     ` [PATCH v3 3/4] ethdev: add trace points for mtr Ankur Dwivedi
2022-10-06 15:18     ` [PATCH v3 4/4] ethdev: add trace points for tm Ankur Dwivedi
2022-12-22  6:32     ` [PATCH v4 0/6] add trace points in ethdev library Ankur Dwivedi
2022-12-22  6:33       ` [PATCH v4 1/6] eal: trace: add trace point emit for array Ankur Dwivedi
2022-12-22  9:06         ` Sunil Kumar Kori
2022-12-22 10:32         ` Morten Brørup
2022-12-22 15:18           ` Ankur Dwivedi
2022-12-22  6:33       ` [PATCH v4 2/6] ethdev: add trace points for ethdev Ankur Dwivedi
2022-12-22 10:50         ` Morten Brørup
2022-12-22  6:33       ` [PATCH v4 3/6] ethdev: add trace points for remaining functions Ankur Dwivedi
2022-12-22  6:33       ` [PATCH v4 4/6] ethdev: add trace points for flow Ankur Dwivedi
2022-12-22  6:33       ` [PATCH v4 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2022-12-22  6:33       ` [PATCH v4 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-01-12 11:21       ` [PATCH v5 0/6] add trace points in ethdev library Ankur Dwivedi
2023-01-12 11:21         ` [PATCH v5 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-01-12 12:38           ` Morten Brørup
2023-01-12 13:22             ` Ankur Dwivedi
2023-01-12 16:29           ` Sunil Kumar Kori
2023-01-12 16:43             ` Sunil Kumar Kori
2023-01-12 11:21         ` [PATCH v5 2/6] ethdev: add trace points for ethdev Ankur Dwivedi
2023-01-12 16:34           ` Sunil Kumar Kori
2023-01-12 11:21         ` [PATCH v5 3/6] ethdev: add trace points for remaining functions Ankur Dwivedi
2023-01-12 16:38           ` Sunil Kumar Kori
2023-01-13  6:31             ` Ankur Dwivedi
2023-01-13  8:11               ` Sunil Kumar Kori
2023-01-12 11:21         ` [PATCH v5 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-01-12 11:21         ` [PATCH v5 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-01-12 11:21         ` [PATCH v5 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-01-12 17:03         ` [PATCH v5 0/6] add trace points in ethdev library Ferruh Yigit
2023-01-13  6:32           ` [EXT] " Ankur Dwivedi
2023-01-20  8:40         ` [PATCH v6 " Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-01-20 10:11             ` Morten Brørup
2023-01-23 17:27             ` Ferruh Yigit
2023-01-25 15:02               ` [EXT] " Ankur Dwivedi
2023-01-25 16:09                 ` Ferruh Yigit
2023-01-30 13:35                   ` Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-01-23 17:28             ` Ferruh Yigit
2023-01-30 16:01               ` [EXT] " Ankur Dwivedi
2023-01-31 18:38                 ` Ferruh Yigit
2023-01-31 18:46                   ` Jerin Jacob
2023-01-31 22:20                     ` Ferruh Yigit
2023-02-01  8:31                       ` Jerin Jacob
2023-02-01 10:50                         ` Ferruh Yigit
2023-02-01 15:42                   ` Ankur Dwivedi
2023-02-02  8:56                     ` Ferruh Yigit
2023-02-02 10:20                       ` Ankur Dwivedi
2023-02-02 12:52                         ` Ferruh Yigit
2023-02-02 13:40                           ` Ankur Dwivedi
2023-02-02 13:44                             ` Ferruh Yigit
2023-02-02 13:53                               ` Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-01-20  8:40           ` [PATCH v6 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-01-23  9:02           ` [PATCH v7 0/6] add trace points in ethdev library Ankur Dwivedi
2023-01-23  9:02             ` [PATCH v7 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-01-23 13:01               ` Jerin Jacob
2023-01-23 13:08                 ` Morten Brørup
2023-01-23 13:39                   ` Ankur Dwivedi
2023-01-30  7:30               ` Sunil Kumar Kori
2023-01-30  8:15                 ` Morten Brørup
2023-01-30  8:40                   ` Sunil Kumar Kori
2023-01-23  9:02             ` [PATCH v7 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-01-30  8:45               ` Sunil Kumar Kori
2023-01-23  9:02             ` [PATCH v7 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-01-30  8:47               ` Sunil Kumar Kori
2023-01-23  9:02             ` [PATCH v7 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-02-02 13:52               ` Ori Kam
2023-02-02 13:56                 ` Ori Kam
2023-02-02 15:45                   ` Ankur Dwivedi
2023-01-23  9:02             ` [PATCH v7 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-01-30  8:50               ` Sunil Kumar Kori
2023-01-23  9:02             ` [PATCH v7 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-02-06 11:58             ` [PATCH v8 0/6] add trace points in ethdev library Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-02-06 14:48                 ` David Marchand
2023-02-07  5:08                   ` [EXT] " Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-02-06 11:58               ` [PATCH v8 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-02-07  6:32               ` [PATCH v9 0/6] add trace points in ethdev library Ankur Dwivedi
2023-02-07  6:32                 ` [PATCH v9 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-02-08  1:16                   ` Ferruh Yigit
2023-02-07  6:32                 ` [PATCH v9 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-02-08  1:16                   ` Ferruh Yigit
2023-02-08 10:30                     ` [EXT] " Ankur Dwivedi
2023-02-07  6:32                 ` [PATCH v9 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-02-08  1:20                   ` Ferruh Yigit
2023-02-08 10:42                     ` [EXT] " Ankur Dwivedi
2023-02-08 11:00                       ` Ferruh Yigit
2023-02-08 11:04                         ` Ferruh Yigit
2023-02-08 14:15                           ` Ankur Dwivedi
2023-02-08 15:05                             ` Ferruh Yigit
2023-02-08 15:11                               ` Ankur Dwivedi
2023-02-07  6:32                 ` [PATCH v9 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-02-07  6:32                 ` [PATCH v9 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-02-07  6:32                 ` [PATCH v9 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-02-08 13:28                 ` [PATCH v10 0/6] add trace points in ethdev library Ankur Dwivedi
2023-02-08 13:28                   ` [PATCH v10 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-02-08 13:28                   ` [PATCH v10 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-02-08 13:28                   ` [PATCH v10 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-02-08 13:28                   ` [PATCH v10 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-02-08 16:15                     ` Ori Kam
2023-02-08 13:28                   ` [PATCH v10 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-02-08 13:28                   ` [PATCH v10 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-03-15  7:14                     ` Yuan, DukaiX
2023-03-16  9:58                       ` Ankur Dwivedi
2023-02-08 17:12                   ` [PATCH v11 0/6] add trace points in ethdev library Ankur Dwivedi
2023-02-08 17:12                     ` [PATCH v11 1/6] eal: trace: add trace point emit for blob Ankur Dwivedi
2023-02-08 17:12                     ` [PATCH v11 2/6] ethdev: add trace points for ethdev (part one) Ankur Dwivedi
2023-02-17  7:32                       ` Li, WeiyuanX
2023-02-08 17:12                     ` [PATCH v11 3/6] ethdev: add trace points for ethdev (part two) Ankur Dwivedi
2023-02-08 20:09                       ` Ferruh Yigit
2023-02-08 17:12                     ` [PATCH v11 4/6] ethdev: add trace points for flow Ankur Dwivedi
2023-02-08 17:12                     ` [PATCH v11 5/6] ethdev: add trace points for mtr Ankur Dwivedi
2023-02-08 17:12                     ` [PATCH v11 6/6] ethdev: add trace points for tm Ankur Dwivedi
2023-02-08 20:09                     ` [PATCH v11 0/6] add trace points in ethdev library Ferruh Yigit
2023-02-26 18:34                     ` Ali Alnubani
2023-02-27  9:38                       ` Ankur Dwivedi
2023-01-23 17:30           ` [PATCH v6 " Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CO3PR18MB5005C99661F27B96069C3B3CDD209@CO3PR18MB5005.namprd18.prod.outlook.com \
    --to=adwivedi@marvell.com \
    --cc=Yuying.Zhang@intel.com \
    --cc=aboyer@pensando.io \
    --cc=ajit.khaparde@broadcom.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=apeksha.gupta@nxp.com \
    --cc=beilei.xing@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=chandu@amd.com \
    --cc=chaoyong.he@corigine.com \
    --cc=chas3@att.com \
    --cc=chenbo.xia@intel.com \
    --cc=ciara.loftus@intel.com \
    --cc=cloud.wangxiaoyun@huawei.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=dsinghrawat@marvell.com \
    --cc=ed.czeck@atomicrules.com \
    --cc=evgenys@amazon.com \
    --cc=ferruh.yigit@xilinx.com \
    --cc=g.singh@nxp.com \
    --cc=grive@u256.net \
    --cc=hemant.agrawal@nxp.com \
    --cc=hkalra@marvell.com \
    --cc=humin29@huawei.com \
    --cc=hyonkim@cisco.com \
    --cc=igorch@amazon.com \
    --cc=irusskikh@marvell.com \
    --cc=jasvinder.singh@intel.com \
    --cc=jbehrens@vmware.com \
    --cc=jerinj@marvell.com \
    --cc=jgrajcia@cisco.com \
    --cc=jianwang@trustnetic.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=jingjing.wu@intel.com \
    --cc=john.miller@atomicrules.com \
    --cc=johndale@cisco.com \
    --cc=junfeng.guo@intel.com \
    --cc=kirankumark@marvell.com \
    --cc=linville@tuxdriver.com \
    --cc=lironh@marvell.com \
    --cc=liudongdong3@huawei.com \
    --cc=longli@microsoft.com \
    --cc=matan@nvidia.com \
    --cc=matt.peters@windriver.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mb@smartsharesystems.com \
    --cc=mczekaj@marvell.com \
    --cc=mdr@ashroe.eu \
    --cc=mk@semihalf.com \
    --cc=mtetsuyah@gmail.com \
    --cc=mw@semihalf.com \
    --cc=ndabilpuram@marvell.com \
    --cc=niklas.soderlund@corigine.com \
    --cc=orika@nvidia.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=radhac@marvell.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rmody@marvell.com \
    --cc=rosen.xu@intel.com \
    --cc=sachin.saxena@nxp.com \
    --cc=sachin.saxena@oss.nxp.com \
    --cc=sedara@marvell.com \
    --cc=shaibran@amazon.com \
    --cc=shepard.siegel@atomicrules.com \
    --cc=shshaikh@marvell.com \
    --cc=simei.su@intel.com \
    --cc=skori@marvell.com \
    --cc=skoteshwar@marvell.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=spinler@cesnet.cz \
    --cc=srinivasan@marvell.com \
    --cc=steven.webster@windriver.com \
    --cc=sthemmin@microsoft.com \
    --cc=sthotton@marvell.com \
    --cc=thomas@monjalon.net \
    --cc=vburru@marvell.com \
    --cc=viacheslavo@nvidia.com \
    --cc=wenjun1.wu@intel.com \
    --cc=xiao.w.wang@intel.com \
    --cc=xuanziyang2@huawei.com \
    --cc=yisen.zhuang@huawei.com \
    --cc=zhouguoyang@huawei.com \
    --cc=zr@semihalf.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.