get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/123199/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 123199,
    "url": "http://patches.dpdk.org/api/patches/123199/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20230207063254.401538-3-adwivedi@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20230207063254.401538-3-adwivedi@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230207063254.401538-3-adwivedi@marvell.com",
    "date": "2023-02-07T06:32:50",
    "name": "[v9,2/6] ethdev: add trace points for ethdev (part one)",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "1be59de9db17c86809ed59072163404e0b3fd629",
    "submitter": {
        "id": 1561,
        "url": "http://patches.dpdk.org/api/people/1561/?format=api",
        "name": "Ankur Dwivedi",
        "email": "adwivedi@marvell.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20230207063254.401538-3-adwivedi@marvell.com/mbox/",
    "series": [
        {
            "id": 26834,
            "url": "http://patches.dpdk.org/api/series/26834/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=26834",
            "date": "2023-02-07T06:32:48",
            "name": "add trace points in ethdev library",
            "version": 9,
            "mbox": "http://patches.dpdk.org/series/26834/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/123199/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/123199/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 8852A41C2A;\n\tTue,  7 Feb 2023 07:37:01 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 70A0D41148;\n\tTue,  7 Feb 2023 07:37:01 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id E90B240E6E\n for <dev@dpdk.org>; Tue,  7 Feb 2023 07:36:59 +0100 (CET)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 317569tS013911; Mon, 6 Feb 2023 22:34:23 -0800",
            "from dc5-exch01.marvell.com ([199.233.59.181])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nhqrth9ky-2\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Mon, 06 Feb 2023 22:34:23 -0800",
            "from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.42;\n Mon, 6 Feb 2023 22:34:19 -0800",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.42 via Frontend\n Transport; Mon, 6 Feb 2023 22:34:19 -0800",
            "from localhost.localdomain (unknown [10.28.36.185])\n by maili.marvell.com (Postfix) with ESMTP id EB16B3F7085;\n Mon,  6 Feb 2023 22:33:55 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=4gcVbbAfWC/hKXAEyXzl/oxgH/lYoUBNi4ZY3Rx/2FA=;\n b=CwMNs8azTOGFoa9YYvF2WPL64I9IBbHByeitf5DsC1ZJAh+6EYuS/doKkl3dQjy+CYHC\n klafSGuPGFg+ZQl6wi5PKDA2zbWL8Aj2HkLME29xCgnTkYMXDrMYw99xLjb4bs7VpvCq\n erZ0D97S/7zL92OYQqx51/UxENxp2KKQGEQDSUDbSKHxvALx/KX4d4Jwm/msagf1/lVT\n aFhsDDv86fN/t6/68+Cxuu+li+HeTm6klxfFDrMyf6G/lPk/XSRoP5w8lyE1566bM6GA\n /3DSYxAo3Mdi8fVT8HdZinH0l+bOlkXNRuEbBIw0ahTIzAe8T7IfTwDG1ciA4sCajl39 Hg==",
        "From": "Ankur Dwivedi <adwivedi@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas@monjalon.net>, <david.marchand@redhat.com>, <mdr@ashroe.eu>,\n <orika@nvidia.com>, <ferruh.yigit@amd.com>, <chas3@att.com>,\n <humin29@huawei.com>, <linville@tuxdriver.com>,\n <ciara.loftus@intel.com>, <qi.z.zhang@intel.com>, <mw@semihalf.com>,\n <mk@semihalf.com>, <shaibran@amazon.com>, <evgenys@amazon.com>,\n <igorch@amazon.com>, <chandu@amd.com>, <irusskikh@marvell.com>,\n <shepard.siegel@atomicrules.com>, <ed.czeck@atomicrules.com>,\n <john.miller@atomicrules.com>, <ajit.khaparde@broadcom.com>,\n <somnath.kotur@broadcom.com>, <jerinj@marvell.com>,\n <mczekaj@marvell.com>, <sthotton@marvell.com>,\n <srinivasan@marvell.com>, <hkalra@marvell.com>,\n <rahul.lakkireddy@chelsio.com>, <johndale@cisco.com>,\n <hyonkim@cisco.com>, <liudongdong3@huawei.com>,\n <yisen.zhuang@huawei.com>, <xuanziyang2@huawei.com>,\n <cloud.wangxiaoyun@huawei.com>, <zhouguoyang@huawei.com>,\n <simei.su@intel.com>, <wenjun1.wu@intel.com>, <qiming.yang@intel.com>,\n <Yuying.Zhang@intel.com>, <beilei.xing@intel.com>,\n <xiao.w.wang@intel.com>, <jingjing.wu@intel.com>,\n <junfeng.guo@intel.com>, <rosen.xu@intel.com>,\n <ndabilpuram@marvell.com>, <kirankumark@marvell.com>,\n <skori@marvell.com>, <skoteshwar@marvell.com>, <lironh@marvell.com>,\n <zr@semihalf.com>, <radhac@marvell.com>, <vburru@marvell.com>,\n <sedara@marvell.com>, <matan@nvidia.com>, <viacheslavo@nvidia.com>,\n <longli@microsoft.com>, <spinler@cesnet.cz>,\n <chaoyong.he@corigine.com>, <niklas.soderlund@corigine.com>,\n <hemant.agrawal@nxp.com>, <sachin.saxena@oss.nxp.com>,\n <g.singh@nxp.com>, <apeksha.gupta@nxp.com>, <sachin.saxena@nxp.com>,\n <aboyer@pensando.io>, <rmody@marvell.com>, <shshaikh@marvell.com>,\n <dsinghrawat@marvell.com>, <andrew.rybchenko@oktetlabs.ru>,\n <jiawenwu@trustnetic.com>, <jianwang@trustnetic.com>,\n <jbehrens@vmware.com>, <maxime.coquelin@redhat.com>,\n <chenbo.xia@intel.com>, <steven.webster@windriver.com>,\n <matt.peters@windriver.com>, <bruce.richardson@intel.com>,\n <mtetsuyah@gmail.com>, <grive@u256.net>, <jasvinder.singh@intel.com>,\n <cristian.dumitrescu@intel.com>, <jgrajcia@cisco.com>,\n <mb@smartsharesystems.com>, Ankur Dwivedi <adwivedi@marvell.com>",
        "Subject": "[PATCH v9 2/6] ethdev: add trace points for ethdev (part one)",
        "Date": "Tue, 7 Feb 2023 12:02:50 +0530",
        "Message-ID": "<20230207063254.401538-3-adwivedi@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230207063254.401538-1-adwivedi@marvell.com>",
        "References": "<20230206115810.308574-1-adwivedi@marvell.com>\n <20230207063254.401538-1-adwivedi@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-GUID": "cjLRpqa7Y-v0tPPbgULbwsWEB-4OfM3w",
        "X-Proofpoint-ORIG-GUID": "cjLRpqa7Y-v0tPPbgULbwsWEB-4OfM3w",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1\n definitions=2023-02-06_07,2023-02-06_03,2022-06-22_01",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Adds trace points for ethdev functions.\n\nThe rte_ethdev_trace.h is removed. The file ethdev_trace.h is added as\nan internal header. ethdev_trace.h contains internal slow path and\nfast path tracepoints. The public fast path tracepoints are present in\nrte_ethdev_trace_fp.h header.\n\nSigned-off-by: Ankur Dwivedi <adwivedi@marvell.com>\nAcked-by: Sunil Kumar Kori <skori@marvell.com>\n---\n lib/ethdev/ethdev_private.c      |   7 +\n lib/ethdev/ethdev_trace.h        | 642 +++++++++++++++++++++++++++++++\n lib/ethdev/ethdev_trace_points.c | 195 +++++++++-\n lib/ethdev/meson.build           |   2 +-\n lib/ethdev/rte_ethdev.c          | 386 ++++++++++++++++---\n lib/ethdev/rte_ethdev_trace.h    |  95 -----\n lib/ethdev/rte_ethdev_trace_fp.h |  36 ++\n 7 files changed, 1206 insertions(+), 157 deletions(-)\n create mode 100644 lib/ethdev/ethdev_trace.h\n delete mode 100644 lib/ethdev/rte_ethdev_trace.h",
    "diff": "diff --git a/lib/ethdev/ethdev_private.c b/lib/ethdev/ethdev_private.c\nindex 48090c879a..14ec8c6ccf 100644\n--- a/lib/ethdev/ethdev_private.c\n+++ b/lib/ethdev/ethdev_private.c\n@@ -5,6 +5,7 @@\n #include <rte_debug.h>\n \n #include \"rte_ethdev.h\"\n+#include \"rte_ethdev_trace_fp.h\"\n #include \"ethdev_driver.h\"\n #include \"ethdev_private.h\"\n \n@@ -297,6 +298,9 @@ rte_eth_call_rx_callbacks(uint16_t port_id, uint16_t queue_id,\n \t\tcb = cb->next;\n \t}\n \n+\trte_eth_trace_call_rx_callbacks(port_id, queue_id, (void **)rx_pkts,\n+\t\t\t\t\tnb_rx, nb_pkts);\n+\n \treturn nb_rx;\n }\n \n@@ -312,6 +316,9 @@ rte_eth_call_tx_callbacks(uint16_t port_id, uint16_t queue_id,\n \t\tcb = cb->next;\n \t}\n \n+\trte_eth_trace_call_tx_callbacks(port_id, queue_id, (void **)tx_pkts,\n+\t\t\t\t\tnb_pkts);\n+\n \treturn nb_pkts;\n }\n \ndiff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h\nnew file mode 100644\nindex 0000000000..a5058f97ea\n--- /dev/null\n+++ b/lib/ethdev/ethdev_trace.h\n@@ -0,0 +1,642 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(C) 2023 Marvell International Ltd.\n+ */\n+\n+#ifndef _RTE_ETHDEV_TRACE_H_\n+#define _RTE_ETHDEV_TRACE_H_\n+\n+/**\n+ * @file\n+ *\n+ * API for ethdev trace support\n+ */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include <dev_driver.h>\n+#include <rte_trace_point.h>\n+\n+#include \"rte_ethdev.h\"\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_configure,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t nb_rx_q,\n+\t\tuint16_t nb_tx_q, const struct rte_eth_conf *dev_conf, int rc),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(nb_rx_q);\n+\trte_trace_point_emit_u16(nb_tx_q);\n+\trte_trace_point_emit_u32(dev_conf->link_speeds);\n+\trte_trace_point_emit_u32(dev_conf->rxmode.mq_mode);\n+\trte_trace_point_emit_u32(dev_conf->rxmode.mtu);\n+\trte_trace_point_emit_u64(dev_conf->rxmode.offloads);\n+\trte_trace_point_emit_u32(dev_conf->txmode.mq_mode);\n+\trte_trace_point_emit_u64(dev_conf->txmode.offloads);\n+\trte_trace_point_emit_u32(dev_conf->lpbk_mode);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_rxq_setup,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,\n+\t\tuint16_t nb_rx_desc, void *mp,\n+\t\tconst struct rte_eth_rxconf *rx_conf, int rc),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(rx_queue_id);\n+\trte_trace_point_emit_u16(nb_rx_desc);\n+\trte_trace_point_emit_ptr(mp);\n+\trte_trace_point_emit_u8(rx_conf->rx_thresh.pthresh);\n+\trte_trace_point_emit_u8(rx_conf->rx_thresh.hthresh);\n+\trte_trace_point_emit_u8(rx_conf->rx_thresh.wthresh);\n+\trte_trace_point_emit_u8(rx_conf->rx_drop_en);\n+\trte_trace_point_emit_u8(rx_conf->rx_deferred_start);\n+\trte_trace_point_emit_u64(rx_conf->offloads);\n+\trte_trace_point_emit_int(rc);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_txq_setup,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,\n+\t\tuint16_t nb_tx_desc, const struct rte_eth_txconf *tx_conf),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(tx_queue_id);\n+\trte_trace_point_emit_u16(nb_tx_desc);\n+\trte_trace_point_emit_u8(tx_conf->tx_thresh.pthresh);\n+\trte_trace_point_emit_u8(tx_conf->tx_thresh.hthresh);\n+\trte_trace_point_emit_u8(tx_conf->tx_thresh.wthresh);\n+\trte_trace_point_emit_u8(tx_conf->tx_deferred_start);\n+\trte_trace_point_emit_u16(tx_conf->tx_free_thresh);\n+\trte_trace_point_emit_u64(tx_conf->offloads);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_start,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n+\trte_trace_point_emit_u16(port_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_stop,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_close,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n+\trte_trace_point_emit_u16(port_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_iterator_init,\n+\tRTE_TRACE_POINT_ARGS(const char *devargs),\n+\trte_trace_point_emit_string(devargs);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_iterator_next,\n+\tRTE_TRACE_POINT_ARGS(const struct rte_dev_iterator *iter, uint16_t id),\n+\trte_trace_point_emit_ptr(iter);\n+\trte_trace_point_emit_string(iter->bus_str);\n+\trte_trace_point_emit_string(iter->cls_str);\n+\trte_trace_point_emit_u16(id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_iterator_cleanup,\n+\tRTE_TRACE_POINT_ARGS(const struct rte_dev_iterator *iter),\n+\trte_trace_point_emit_ptr(iter);\n+\trte_trace_point_emit_string(iter->bus_str);\n+\trte_trace_point_emit_string(iter->cls_str);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_owner_new,\n+\tRTE_TRACE_POINT_ARGS(uint64_t owner_id),\n+\trte_trace_point_emit_u64(owner_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_owner_set,\n+\tRTE_TRACE_POINT_ARGS(const uint16_t port_id,\n+\t\tconst struct rte_eth_dev_owner *owner, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u64(owner->id);\n+\trte_trace_point_emit_string(owner->name);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_owner_unset,\n+\tRTE_TRACE_POINT_ARGS(const uint16_t port_id,\n+\t\tconst uint64_t owner_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u64(owner_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_owner_delete,\n+\tRTE_TRACE_POINT_ARGS(const uint64_t owner_id, int ret),\n+\trte_trace_point_emit_u64(owner_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_socket_id,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int socket_id),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(socket_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_rx_queue_start,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(rx_queue_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_rx_queue_stop,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(rx_queue_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_tx_queue_start,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(tx_queue_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_tx_queue_stop,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(tx_queue_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_speed_bitflag,\n+\tRTE_TRACE_POINT_ARGS(uint32_t speed, int duplex, uint32_t ret),\n+\trte_trace_point_emit_u32(speed);\n+\trte_trace_point_emit_int(duplex);\n+\trte_trace_point_emit_u32(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_rx_offload_name,\n+\tRTE_TRACE_POINT_ARGS(uint64_t offload, const char *name),\n+\trte_trace_point_emit_u64(offload);\n+\trte_trace_point_emit_string(name);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_tx_offload_name,\n+\tRTE_TRACE_POINT_ARGS(uint64_t offload, const char *name),\n+\trte_trace_point_emit_u64(offload);\n+\trte_trace_point_emit_string(name);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_capability_name,\n+\tRTE_TRACE_POINT_ARGS(uint64_t capability, const char *name),\n+\trte_trace_point_emit_u64(capability);\n+\trte_trace_point_emit_string(name);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_set_link_up,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_set_link_down,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_reset,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_rx_hairpin_queue_setup,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,\n+\t\tuint16_t nb_rx_desc, const struct rte_eth_hairpin_conf *conf,\n+\t\tint ret),\n+\tuint16_t peer_count = conf->peer_count;\n+\tuint8_t tx_explicit = conf->tx_explicit;\n+\tuint8_t manual_bind = conf->manual_bind;\n+\tuint8_t use_locked_device_memory = conf->use_locked_device_memory;\n+\tuint8_t use_rte_memory = conf->use_rte_memory;\n+\tuint8_t force_memory = conf->force_memory;\n+\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(rx_queue_id);\n+\trte_trace_point_emit_u16(nb_rx_desc);\n+\trte_trace_point_emit_ptr(conf);\n+\trte_trace_point_emit_u16(peer_count);\n+\trte_trace_point_emit_u8(tx_explicit);\n+\trte_trace_point_emit_u8(manual_bind);\n+\trte_trace_point_emit_u8(use_locked_device_memory);\n+\trte_trace_point_emit_u8(use_rte_memory);\n+\trte_trace_point_emit_u8(force_memory);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_tx_hairpin_queue_setup,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,\n+\t\tuint16_t nb_tx_desc, const struct rte_eth_hairpin_conf *conf,\n+\t\tint ret),\n+\tuint16_t peer_count = conf->peer_count;\n+\tuint8_t tx_explicit = conf->tx_explicit;\n+\tuint8_t manual_bind = conf->manual_bind;\n+\tuint8_t use_locked_device_memory = conf->use_locked_device_memory;\n+\tuint8_t use_rte_memory = conf->use_rte_memory;\n+\tuint8_t force_memory = conf->force_memory;\n+\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(tx_queue_id);\n+\trte_trace_point_emit_u16(nb_tx_desc);\n+\trte_trace_point_emit_ptr(conf);\n+\trte_trace_point_emit_u16(peer_count);\n+\trte_trace_point_emit_u8(tx_explicit);\n+\trte_trace_point_emit_u8(manual_bind);\n+\trte_trace_point_emit_u8(use_locked_device_memory);\n+\trte_trace_point_emit_u8(use_rte_memory);\n+\trte_trace_point_emit_u8(force_memory);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_hairpin_bind,\n+\tRTE_TRACE_POINT_ARGS(uint16_t tx_port, uint16_t rx_port, int ret),\n+\trte_trace_point_emit_u16(tx_port);\n+\trte_trace_point_emit_u16(rx_port);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_hairpin_unbind,\n+\tRTE_TRACE_POINT_ARGS(uint16_t tx_port, uint16_t rx_port, int ret),\n+\trte_trace_point_emit_u16(tx_port);\n+\trte_trace_point_emit_u16(rx_port);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_tx_buffer_set_err_callback,\n+\tRTE_TRACE_POINT_ARGS(const struct rte_eth_dev_tx_buffer *buffer),\n+\trte_trace_point_emit_ptr(buffer);\n+\trte_trace_point_emit_ptr(buffer->error_callback);\n+\trte_trace_point_emit_ptr(buffer->error_userdata);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_promiscuous_enable,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(promiscuous);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_promiscuous_disable,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(promiscuous);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_allmulticast_enable,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(all_multicast);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_allmulticast_disable,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(all_multicast);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_set_rx_queue_stats_mapping,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,\n+\t\tuint8_t stat_idx, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(rx_queue_id);\n+\trte_trace_point_emit_u8(stat_idx);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_set_tx_queue_stats_mapping,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,\n+\t\tuint8_t stat_idx, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(tx_queue_id);\n+\trte_trace_point_emit_u8(stat_idx);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_fw_version_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const char *fw_version,\n+\t\tsize_t fw_size, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_string(fw_version);\n+\trte_trace_point_emit_size_t(fw_size);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_find_next,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n+\trte_trace_point_emit_u16(port_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_find_next_of,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_device *parent),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_string(parent->name);\n+\trte_trace_point_emit_string(parent->bus_info);\n+\trte_trace_point_emit_int(parent->numa_node);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_find_next_sibling,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id_start, uint16_t ref_port_id,\n+\t\tuint16_t ret),\n+\trte_trace_point_emit_u16(port_id_start);\n+\trte_trace_point_emit_u16(ref_port_id);\n+\trte_trace_point_emit_u16(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_is_valid_port,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int is_valid),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(is_valid);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_find_next_owned_by,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const uint64_t owner_id),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u64(owner_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_owner_get,\n+\tRTE_TRACE_POINT_ARGS(const uint16_t port_id,\n+\t\tconst struct rte_eth_dev_owner *owner),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u64(owner->id);\n+\trte_trace_point_emit_string(owner->name);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_get_sec_ctx,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const void *ctx),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_ptr(ctx);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_count_avail,\n+\tRTE_TRACE_POINT_ARGS(uint16_t count),\n+\trte_trace_point_emit_u16(count);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_count_total,\n+\tRTE_TRACE_POINT_ARGS(uint16_t count),\n+\trte_trace_point_emit_u16(count);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_get_name_by_port,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const char *name),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_string(name);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_get_port_by_name,\n+\tRTE_TRACE_POINT_ARGS(const char *name, uint16_t port_id),\n+\trte_trace_point_emit_string(name);\n+\trte_trace_point_emit_u16(port_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_ethdev_trace_is_removed,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_hairpin_get_peer_ports,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const uint16_t *peer_ports,\n+\t\tsize_t len, uint32_t direction, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_ptr(peer_ports);\n+\trte_trace_point_emit_size_t(len);\n+\trte_trace_point_emit_u32(direction);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_tx_buffer_init,\n+\tRTE_TRACE_POINT_ARGS(const struct rte_eth_dev_tx_buffer *buffer,\n+\t\tuint16_t size, int ret),\n+\trte_trace_point_emit_ptr(buffer);\n+\trte_trace_point_emit_u16(size);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_tx_done_cleanup,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,\n+\t\tuint32_t free_cnt, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(queue_id);\n+\trte_trace_point_emit_u32(free_cnt);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_promiscuous_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int promiscuous),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(promiscuous);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_allmulticast_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int all_multicast),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(all_multicast);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_link_get_nowait,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_eth_link *link),\n+\tuint8_t link_duplex = link->link_duplex;\n+\tuint8_t link_autoneg = link->link_autoneg;\n+\tuint8_t link_status = link->link_status;\n+\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u32(link->link_speed);\n+\trte_trace_point_emit_u8(link_duplex);\n+\trte_trace_point_emit_u8(link_autoneg);\n+\trte_trace_point_emit_u8(link_status);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_link_to_str,\n+\tRTE_TRACE_POINT_ARGS(size_t len, const struct rte_eth_link *link,\n+\t\tchar *str, int ret),\n+\tuint8_t link_duplex = link->link_duplex;\n+\tuint8_t link_autoneg = link->link_autoneg;\n+\tuint8_t link_status = link->link_status;\n+\n+\trte_trace_point_emit_size_t(len);\n+\trte_trace_point_emit_u32(link->link_speed);\n+\trte_trace_point_emit_u8(link_duplex);\n+\trte_trace_point_emit_u8(link_autoneg);\n+\trte_trace_point_emit_u8(link_status);\n+\trte_trace_point_emit_string(str);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_stats_reset,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n+\trte_trace_point_emit_u16(port_id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_get_id_by_name,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const char *xstat_name,\n+\t\tuint64_t id),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_string(xstat_name);\n+\trte_trace_point_emit_u64(id);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_get_names_by_id,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id,\n+\t\tconst struct rte_eth_xstat_name *xstats_names, uint64_t ids),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_string(xstats_names->name);\n+\trte_trace_point_emit_u64(ids);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_get_names,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int i,\n+\t\tstruct rte_eth_xstat_name xstats_names,\n+\t\tunsigned int size, int cnt_used_entries),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(i);\n+\trte_trace_point_emit_string(xstats_names.name);\n+\trte_trace_point_emit_u32(size);\n+\trte_trace_point_emit_int(cnt_used_entries);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_get_by_id,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const uint64_t *ids,\n+\t\tconst uint64_t *values, unsigned int size),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_ptr(ids);\n+\trte_trace_point_emit_ptr(values);\n+\trte_trace_point_emit_u32(size);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, struct rte_eth_xstat xstats),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u64(xstats.id);\n+\trte_trace_point_emit_u64(xstats.value);\n+)\n+\n+RTE_TRACE_POINT(\n+\trte_eth_trace_xstats_reset,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+/* Fast path trace points */\n+\n+/* Called in loop in examples/qos_sched and examples/distributor */\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_stats_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id,\n+\t\tconst struct rte_eth_stats *stats, int ret),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_ptr(stats);\n+\trte_trace_point_emit_u64(stats->rx_nombuf);\n+\trte_trace_point_emit_u64(stats->ipackets);\n+\trte_trace_point_emit_u64(stats->opackets);\n+\trte_trace_point_emit_u64(stats->ibytes);\n+\trte_trace_point_emit_u64(stats->obytes);\n+\trte_trace_point_emit_u64(stats->imissed);\n+\trte_trace_point_emit_u64(stats->ierrors);\n+\trte_trace_point_emit_u64(stats->oerrors);\n+\trte_trace_point_emit_int(ret);\n+)\n+\n+/* Called in loop in examples/ip_pipeline */\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_link_get,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, const struct rte_eth_link *link),\n+\tuint8_t link_duplex = link->link_duplex;\n+\tuint8_t link_autoneg = link->link_autoneg;\n+\tuint8_t link_status = link->link_status;\n+\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u32(link->link_speed);\n+\trte_trace_point_emit_u8(link_duplex);\n+\trte_trace_point_emit_u8(link_autoneg);\n+\trte_trace_point_emit_u8(link_status);\n+)\n+\n+/* Called in loop in examples/ip_pipeline */\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_link_speed_to_str,\n+\tRTE_TRACE_POINT_ARGS(uint32_t link_speed, const char *ret),\n+\trte_trace_point_emit_u32(link_speed);\n+\trte_trace_point_emit_string(ret);\n+)\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _RTE_ETHDEV_TRACE_H_ */\ndiff --git a/lib/ethdev/ethdev_trace_points.c b/lib/ethdev/ethdev_trace_points.c\nindex 2919409a15..3e58c679c3 100644\n--- a/lib/ethdev/ethdev_trace_points.c\n+++ b/lib/ethdev/ethdev_trace_points.c\n@@ -4,7 +4,8 @@\n \n #include <rte_trace_point_register.h>\n \n-#include <rte_ethdev_trace.h>\n+#include <ethdev_trace.h>\n+#include <rte_ethdev_trace_fp.h>\n \n RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_configure,\n \tlib.ethdev.configure)\n@@ -29,3 +30,195 @@ RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_burst,\n \n RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_burst,\n \tlib.ethdev.tx.burst)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_rx_callbacks,\n+\tlib.ethdev.call_rx_callbacks)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_call_tx_callbacks,\n+\tlib.ethdev.call_tx_callbacks)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_init,\n+\tlib.ethdev.iterator_init)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_next,\n+\tlib.ethdev.iterator_next)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_iterator_cleanup,\n+\tlib.ethdev.iterator_cleanup)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next,\n+\tlib.ethdev.find_next)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_of,\n+\tlib.ethdev.find_next_of)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_sibling,\n+\tlib.ethdev.find_next_sibling)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_is_valid_port,\n+\tlib.ethdev.is_valid_port)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_find_next_owned_by,\n+\tlib.ethdev.find_next_owned_by)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_new,\n+\tlib.ethdev.owner_new)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_set,\n+\tlib.ethdev.owner_set)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_unset,\n+\tlib.ethdev.owner_unset)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_delete,\n+\tlib.ethdev.owner_delete)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_owner_get,\n+\tlib.ethdev.owner_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_socket_id,\n+\tlib.ethdev.socket_id)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_sec_ctx,\n+\tlib.ethdev.get_sec_ctx)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_count_avail,\n+\tlib.ethdev.count_avail)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_count_total,\n+\tlib.ethdev.count_total)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_name_by_port,\n+\tlib.ethdev.get_name_by_port)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_get_port_by_name,\n+\tlib.ethdev.get_port_by_name)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_queue_start,\n+\tlib.ethdev.rx_queue_start)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_queue_stop,\n+\tlib.ethdev.rx_queue_stop)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_queue_start,\n+\tlib.ethdev.tx_queue_start)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_queue_stop,\n+\tlib.ethdev.tx_queue_stop)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_speed_bitflag,\n+\tlib.ethdev.speed_bitflag)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_rx_offload_name,\n+\tlib.ethdev.rx_offload_name)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_tx_offload_name,\n+\tlib.ethdev.tx_offload_name)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_capability_name,\n+\tlib.ethdev.capability_name)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_link_up,\n+\tlib.ethdev.set_link_up)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_link_down,\n+\tlib.ethdev.set_link_down)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_reset,\n+\tlib.ethdev.reset)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_is_removed,\n+\tlib.ethdev.is_removed)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_rx_hairpin_queue_setup,\n+\tlib.ethdev.rx_hairpin_queue_setup)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_hairpin_queue_setup,\n+\tlib.ethdev.tx_hairpin_queue_setup)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_bind,\n+\tlib.ethdev.hairpin_bind)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_unbind,\n+\tlib.ethdev.hairpin_unbind)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_hairpin_get_peer_ports,\n+\tlib.ethdev.hairpin_get_peer_ports)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_drop_callback,\n+\tlib.ethdev.tx_buffer_drop_callback)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_count_callback,\n+\tlib.ethdev.tx_buffer_count_callback)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_set_err_callback,\n+\tlib.ethdev.tx_buffer_set_err_callback)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_buffer_init,\n+\tlib.ethdev.tx_buffer_init)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_tx_done_cleanup,\n+\tlib.ethdev.tx_done_cleanup)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_enable,\n+\tlib.ethdev.promiscuous_enable)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_disable,\n+\tlib.ethdev.promiscuous_disable)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_promiscuous_get,\n+\tlib.ethdev.promiscuous_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_enable,\n+\tlib.ethdev.allmulticast_enable)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_disable,\n+\tlib.ethdev.allmulticast_disable)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_allmulticast_get,\n+\tlib.ethdev.allmulticast_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_get,\n+\tlib.ethdev.link_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_get_nowait,\n+\tlib.ethdev.link_get_nowait)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_speed_to_str,\n+\tlib.ethdev.link_speed_to_str)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_link_to_str,\n+\tlib.ethdev.link_to_str)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_stats_get,\n+\tlib.ethdev.stats_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_stats_reset,\n+\tlib.ethdev.stats_reset)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_id_by_name,\n+\tlib.ethdev.xstats_get_id_by_name)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_names_by_id,\n+\tlib.ethdev.xstats_get_names_by_id)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_names,\n+\tlib.ethdev.xstats_get_names)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get_by_id,\n+\tlib.ethdev.xstats_get_by_id)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_get,\n+\tlib.ethdev.xstats_get)\n+\n+RTE_TRACE_POINT_REGISTER(rte_eth_trace_xstats_reset,\n+\tlib.ethdev.xstats_reset)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_tx_queue_stats_mapping,\n+\tlib.ethdev.set_tx_queue_stats_mapping)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_set_rx_queue_stats_mapping,\n+\tlib.ethdev.set_rx_queue_stats_mapping)\n+\n+RTE_TRACE_POINT_REGISTER(rte_ethdev_trace_fw_version_get,\n+\tlib.ethdev.fw_version_get)\ndiff --git a/lib/ethdev/meson.build b/lib/ethdev/meson.build\nindex 39250b5da1..7835c96601 100644\n--- a/lib/ethdev/meson.build\n+++ b/lib/ethdev/meson.build\n@@ -22,7 +22,6 @@ sources = files(\n headers = files(\n         'rte_cman.h',\n         'rte_ethdev.h',\n-        'rte_ethdev_trace.h',\n         'rte_ethdev_trace_fp.h',\n         'rte_dev_info.h',\n         'rte_flow.h',\n@@ -41,6 +40,7 @@ indirect_headers += files(\n driver_sdk_headers += files(\n         'ethdev_driver.h',\n         'ethdev_pci.h',\n+        'ethdev_trace.h',\n         'ethdev_vdev.h',\n )\n \ndiff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c\nindex 5d5e18db1e..731ce7f27e 100644\n--- a/lib/ethdev/rte_ethdev.c\n+++ b/lib/ethdev/rte_ethdev.c\n@@ -27,11 +27,12 @@\n #include <rte_ether.h>\n #include <rte_telemetry.h>\n \n-#include \"rte_ethdev_trace.h\"\n #include \"rte_ethdev.h\"\n+#include \"rte_ethdev_trace_fp.h\"\n #include \"ethdev_driver.h\"\n #include \"ethdev_profile.h\"\n #include \"ethdev_private.h\"\n+#include \"ethdev_trace.h\"\n #include \"sff_telemetry.h\"\n \n struct rte_eth_dev rte_eth_devices[RTE_MAX_ETHPORTS];\n@@ -259,6 +260,9 @@ rte_eth_iterator_init(struct rte_dev_iterator *iter, const char *devargs_str)\n end:\n \titer->cls = rte_class_find_by_name(\"eth\");\n \trte_devargs_reset(&devargs);\n+\n+\trte_eth_trace_iterator_init(devargs_str);\n+\n \treturn 0;\n \n error:\n@@ -297,8 +301,13 @@ rte_eth_iterator_next(struct rte_dev_iterator *iter)\n \t\t/* A device is matching bus part, need to check ethdev part. */\n \t\titer->class_device = iter->cls->dev_iterate(\n \t\t\t\titer->class_device, iter->cls_str, iter);\n-\t\tif (iter->class_device != NULL)\n-\t\t\treturn eth_dev_to_id(iter->class_device); /* match */\n+\t\tif (iter->class_device != NULL) {\n+\t\t\tuint16_t id = eth_dev_to_id(iter->class_device);\n+\n+\t\t\trte_eth_trace_iterator_next(iter, id);\n+\n+\t\t\treturn id; /* match */\n+\t\t}\n \t} while (iter->bus != NULL); /* need to try next rte_device */\n \n \t/* No more ethdev port to iterate. */\n@@ -316,6 +325,9 @@ rte_eth_iterator_cleanup(struct rte_dev_iterator *iter)\n \n \tif (iter->bus_str == NULL)\n \t\treturn; /* nothing to free in pure class filter */\n+\n+\trte_eth_trace_iterator_cleanup(iter);\n+\n \tfree(RTE_CAST_FIELD(iter, bus_str, char *)); /* workaround const */\n \tfree(RTE_CAST_FIELD(iter, cls_str, char *)); /* workaround const */\n \tmemset(iter, 0, sizeof(*iter));\n@@ -331,6 +343,8 @@ rte_eth_find_next(uint16_t port_id)\n \tif (port_id >= RTE_MAX_ETHPORTS)\n \t\treturn RTE_MAX_ETHPORTS;\n \n+\trte_eth_trace_find_next(port_id);\n+\n \treturn port_id;\n }\n \n@@ -351,15 +365,23 @@ rte_eth_find_next_of(uint16_t port_id, const struct rte_device *parent)\n \t\t\trte_eth_devices[port_id].device != parent)\n \t\tport_id = rte_eth_find_next(port_id + 1);\n \n+\trte_eth_trace_find_next_of(port_id, parent);\n+\n \treturn port_id;\n }\n \n uint16_t\n rte_eth_find_next_sibling(uint16_t port_id, uint16_t ref_port_id)\n {\n+\tuint16_t ret;\n+\n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(ref_port_id, RTE_MAX_ETHPORTS);\n-\treturn rte_eth_find_next_of(port_id,\n+\tret = rte_eth_find_next_of(port_id,\n \t\t\trte_eth_devices[ref_port_id].device);\n+\n+\trte_eth_trace_find_next_sibling(port_id, ref_port_id, ret);\n+\n+\treturn ret;\n }\n \n static bool\n@@ -371,11 +393,17 @@ eth_dev_is_allocated(const struct rte_eth_dev *ethdev)\n int\n rte_eth_dev_is_valid_port(uint16_t port_id)\n {\n+\tint is_valid;\n+\n \tif (port_id >= RTE_MAX_ETHPORTS ||\n \t    (rte_eth_devices[port_id].state == RTE_ETH_DEV_UNUSED))\n-\t\treturn 0;\n+\t\tis_valid = 0;\n \telse\n-\t\treturn 1;\n+\t\tis_valid = 1;\n+\n+\trte_ethdev_trace_is_valid_port(port_id, is_valid);\n+\n+\treturn is_valid;\n }\n \n static int\n@@ -395,6 +423,8 @@ rte_eth_find_next_owned_by(uint16_t port_id, const uint64_t owner_id)\n \t\t\trte_eth_devices[port_id].data->owner.id != owner_id)\n \t\tport_id = rte_eth_find_next(port_id + 1);\n \n+\trte_eth_trace_find_next_owned_by(port_id, owner_id);\n+\n \treturn port_id;\n }\n \n@@ -413,6 +443,9 @@ rte_eth_dev_owner_new(uint64_t *owner_id)\n \t*owner_id = eth_dev_shared_data->next_owner_id++;\n \n \trte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);\n+\n+\trte_ethdev_trace_owner_new(*owner_id);\n+\n \treturn 0;\n }\n \n@@ -476,6 +509,9 @@ rte_eth_dev_owner_set(const uint16_t port_id,\n \tret = eth_dev_owner_set(port_id, RTE_ETH_DEV_NO_OWNER, owner);\n \n \trte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);\n+\n+\trte_ethdev_trace_owner_set(port_id, owner, ret);\n+\n \treturn ret;\n }\n \n@@ -493,6 +529,9 @@ rte_eth_dev_owner_unset(const uint16_t port_id, const uint64_t owner_id)\n \tret = eth_dev_owner_set(port_id, owner_id, &new_owner);\n \n \trte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);\n+\n+\trte_ethdev_trace_owner_unset(port_id, owner_id, ret);\n+\n \treturn ret;\n }\n \n@@ -526,6 +565,8 @@ rte_eth_dev_owner_delete(const uint64_t owner_id)\n \n \trte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);\n \n+\trte_ethdev_trace_owner_delete(owner_id, ret);\n+\n \treturn ret;\n }\n \n@@ -555,6 +596,8 @@ rte_eth_dev_owner_get(const uint16_t port_id, struct rte_eth_dev_owner *owner)\n \trte_memcpy(owner, &ethdev->data->owner, sizeof(*owner));\n \trte_spinlock_unlock(&eth_dev_shared_data->ownership_lock);\n \n+\trte_ethdev_trace_owner_get(port_id, owner);\n+\n \treturn 0;\n }\n \n@@ -570,14 +613,23 @@ rte_eth_dev_socket_id(uint16_t port_id)\n \t\tif (socket_id == SOCKET_ID_ANY)\n \t\t\trte_errno = 0;\n \t}\n+\n+\trte_ethdev_trace_socket_id(port_id, socket_id);\n+\n \treturn socket_id;\n }\n \n void *\n rte_eth_dev_get_sec_ctx(uint16_t port_id)\n {\n+\tvoid *ctx;\n+\n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, NULL);\n-\treturn rte_eth_devices[port_id].security_ctx;\n+\tctx = rte_eth_devices[port_id].security_ctx;\n+\n+\trte_ethdev_trace_get_sec_ctx(port_id, ctx);\n+\n+\treturn ctx;\n }\n \n uint16_t\n@@ -591,6 +643,8 @@ rte_eth_dev_count_avail(void)\n \tRTE_ETH_FOREACH_DEV(p)\n \t\tcount++;\n \n+\trte_ethdev_trace_count_avail(count);\n+\n \treturn count;\n }\n \n@@ -602,6 +656,8 @@ rte_eth_dev_count_total(void)\n \tRTE_ETH_FOREACH_VALID_DEV(port)\n \t\tcount++;\n \n+\trte_ethdev_trace_count_total(count);\n+\n \treturn count;\n }\n \n@@ -622,6 +678,9 @@ rte_eth_dev_get_name_by_port(uint16_t port_id, char *name)\n \t * because it might be overwritten by VDEV PMD */\n \ttmp = eth_dev_shared_data->data[port_id].name;\n \tstrcpy(name, tmp);\n+\n+\trte_ethdev_trace_get_name_by_port(port_id, name);\n+\n \treturn 0;\n }\n \n@@ -644,6 +703,9 @@ rte_eth_dev_get_port_by_name(const char *name, uint16_t *port_id)\n \tRTE_ETH_FOREACH_VALID_DEV(pid)\n \t\tif (!strcmp(name, eth_dev_shared_data->data[pid].name)) {\n \t\t\t*port_id = pid;\n+\n+\t\t\trte_ethdev_trace_get_port_by_name(name, *port_id);\n+\n \t\t\treturn 0;\n \t\t}\n \n@@ -745,7 +807,11 @@ rte_eth_dev_rx_queue_start(uint16_t port_id, uint16_t rx_queue_id)\n \t\treturn 0;\n \t}\n \n-\treturn eth_err(port_id, dev->dev_ops->rx_queue_start(dev, rx_queue_id));\n+\tret = eth_err(port_id, dev->dev_ops->rx_queue_start(dev, rx_queue_id));\n+\n+\trte_ethdev_trace_rx_queue_start(port_id, rx_queue_id, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -778,7 +844,11 @@ rte_eth_dev_rx_queue_stop(uint16_t port_id, uint16_t rx_queue_id)\n \t\treturn 0;\n \t}\n \n-\treturn eth_err(port_id, dev->dev_ops->rx_queue_stop(dev, rx_queue_id));\n+\tret = eth_err(port_id, dev->dev_ops->rx_queue_stop(dev, rx_queue_id));\n+\n+\trte_ethdev_trace_rx_queue_stop(port_id, rx_queue_id, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -818,7 +888,11 @@ rte_eth_dev_tx_queue_start(uint16_t port_id, uint16_t tx_queue_id)\n \t\treturn 0;\n \t}\n \n-\treturn eth_err(port_id, dev->dev_ops->tx_queue_start(dev, tx_queue_id));\n+\tret = eth_err(port_id, dev->dev_ops->tx_queue_start(dev, tx_queue_id));\n+\n+\trte_ethdev_trace_tx_queue_start(port_id, tx_queue_id, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -851,42 +925,65 @@ rte_eth_dev_tx_queue_stop(uint16_t port_id, uint16_t tx_queue_id)\n \t\treturn 0;\n \t}\n \n-\treturn eth_err(port_id, dev->dev_ops->tx_queue_stop(dev, tx_queue_id));\n+\tret = eth_err(port_id, dev->dev_ops->tx_queue_stop(dev, tx_queue_id));\n+\n+\trte_ethdev_trace_tx_queue_stop(port_id, tx_queue_id, ret);\n+\n+\treturn ret;\n }\n \n uint32_t\n rte_eth_speed_bitflag(uint32_t speed, int duplex)\n {\n+\tuint32_t ret;\n+\n \tswitch (speed) {\n \tcase RTE_ETH_SPEED_NUM_10M:\n-\t\treturn duplex ? RTE_ETH_LINK_SPEED_10M : RTE_ETH_LINK_SPEED_10M_HD;\n+\t\tret = duplex ? RTE_ETH_LINK_SPEED_10M : RTE_ETH_LINK_SPEED_10M_HD;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_100M:\n-\t\treturn duplex ? RTE_ETH_LINK_SPEED_100M : RTE_ETH_LINK_SPEED_100M_HD;\n+\t\tret = duplex ? RTE_ETH_LINK_SPEED_100M : RTE_ETH_LINK_SPEED_100M_HD;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_1G:\n-\t\treturn RTE_ETH_LINK_SPEED_1G;\n+\t\tret = RTE_ETH_LINK_SPEED_1G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_2_5G:\n-\t\treturn RTE_ETH_LINK_SPEED_2_5G;\n+\t\tret = RTE_ETH_LINK_SPEED_2_5G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_5G:\n-\t\treturn RTE_ETH_LINK_SPEED_5G;\n+\t\tret = RTE_ETH_LINK_SPEED_5G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_10G:\n-\t\treturn RTE_ETH_LINK_SPEED_10G;\n+\t\tret = RTE_ETH_LINK_SPEED_10G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_20G:\n-\t\treturn RTE_ETH_LINK_SPEED_20G;\n+\t\tret = RTE_ETH_LINK_SPEED_20G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_25G:\n-\t\treturn RTE_ETH_LINK_SPEED_25G;\n+\t\tret = RTE_ETH_LINK_SPEED_25G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_40G:\n-\t\treturn RTE_ETH_LINK_SPEED_40G;\n+\t\tret = RTE_ETH_LINK_SPEED_40G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_50G:\n-\t\treturn RTE_ETH_LINK_SPEED_50G;\n+\t\tret = RTE_ETH_LINK_SPEED_50G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_56G:\n-\t\treturn RTE_ETH_LINK_SPEED_56G;\n+\t\tret = RTE_ETH_LINK_SPEED_56G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_100G:\n-\t\treturn RTE_ETH_LINK_SPEED_100G;\n+\t\tret = RTE_ETH_LINK_SPEED_100G;\n+\t\tbreak;\n \tcase RTE_ETH_SPEED_NUM_200G:\n-\t\treturn RTE_ETH_LINK_SPEED_200G;\n+\t\tret = RTE_ETH_LINK_SPEED_200G;\n+\t\tbreak;\n \tdefault:\n-\t\treturn 0;\n+\t\tret = 0;\n \t}\n+\n+\trte_eth_trace_speed_bitflag(speed, duplex, ret);\n+\n+\treturn ret;\n }\n \n const char *\n@@ -902,6 +999,8 @@ rte_eth_dev_rx_offload_name(uint64_t offload)\n \t\t}\n \t}\n \n+\trte_ethdev_trace_rx_offload_name(offload, name);\n+\n \treturn name;\n }\n \n@@ -918,6 +1017,8 @@ rte_eth_dev_tx_offload_name(uint64_t offload)\n \t\t}\n \t}\n \n+\trte_ethdev_trace_tx_offload_name(offload, name);\n+\n \treturn name;\n }\n \n@@ -934,6 +1035,8 @@ rte_eth_dev_capability_name(uint64_t capability)\n \t\t}\n \t}\n \n+\trte_ethdev_trace_capability_name(capability, name);\n+\n \treturn name;\n }\n \n@@ -1554,26 +1657,36 @@ int\n rte_eth_dev_set_link_up(uint16_t port_id)\n {\n \tstruct rte_eth_dev *dev;\n+\tint ret;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n \n \tif (*dev->dev_ops->dev_set_link_up == NULL)\n \t\treturn -ENOTSUP;\n-\treturn eth_err(port_id, (*dev->dev_ops->dev_set_link_up)(dev));\n+\tret = eth_err(port_id, (*dev->dev_ops->dev_set_link_up)(dev));\n+\n+\trte_ethdev_trace_set_link_up(port_id, ret);\n+\n+\treturn ret;\n }\n \n int\n rte_eth_dev_set_link_down(uint16_t port_id)\n {\n \tstruct rte_eth_dev *dev;\n+\tint ret;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n \n \tif (*dev->dev_ops->dev_set_link_down == NULL)\n \t\treturn -ENOTSUP;\n-\treturn eth_err(port_id, (*dev->dev_ops->dev_set_link_down)(dev));\n+\tret = eth_err(port_id, (*dev->dev_ops->dev_set_link_down)(dev));\n+\n+\trte_ethdev_trace_set_link_down(port_id, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -1628,9 +1741,11 @@ rte_eth_dev_reset(uint16_t port_id)\n \t\t\t\"Failed to stop device (port %u) before reset: %s - ignore\\n\",\n \t\t\tport_id, rte_strerror(-ret));\n \t}\n-\tret = dev->dev_ops->dev_reset(dev);\n+\tret = eth_err(port_id, dev->dev_ops->dev_reset(dev));\n \n-\treturn eth_err(port_id, ret);\n+\trte_ethdev_trace_reset(port_id, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -1653,6 +1768,8 @@ rte_eth_dev_is_removed(uint16_t port_id)\n \t\t/* Device is physically removed. */\n \t\tdev->state = RTE_ETH_DEV_REMOVED;\n \n+\trte_ethdev_trace_is_removed(port_id, ret);\n+\n \treturn ret;\n }\n \n@@ -2151,7 +2268,12 @@ rte_eth_rx_hairpin_queue_setup(uint16_t port_id, uint16_t rx_queue_id,\n \tif (ret == 0)\n \t\tdev->data->rx_queue_state[rx_queue_id] =\n \t\t\tRTE_ETH_QUEUE_STATE_HAIRPIN;\n-\treturn eth_err(port_id, ret);\n+\tret = eth_err(port_id, ret);\n+\n+\trte_eth_trace_rx_hairpin_queue_setup(port_id, rx_queue_id, nb_rx_desc,\n+\t\t\t\t\t     conf, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -2340,7 +2462,12 @@ rte_eth_tx_hairpin_queue_setup(uint16_t port_id, uint16_t tx_queue_id,\n \tif (ret == 0)\n \t\tdev->data->tx_queue_state[tx_queue_id] =\n \t\t\tRTE_ETH_QUEUE_STATE_HAIRPIN;\n-\treturn eth_err(port_id, ret);\n+\tret = eth_err(port_id, ret);\n+\n+\trte_eth_trace_tx_hairpin_queue_setup(port_id, tx_queue_id, nb_tx_desc,\n+\t\t\t\t\t     conf, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -2365,6 +2492,8 @@ rte_eth_hairpin_bind(uint16_t tx_port, uint16_t rx_port)\n \t\t\t       \" to Rx %d (%d - all ports)\\n\",\n \t\t\t       tx_port, rx_port, RTE_MAX_ETHPORTS);\n \n+\trte_eth_trace_hairpin_bind(tx_port, rx_port, ret);\n+\n \treturn ret;\n }\n \n@@ -2390,6 +2519,8 @@ rte_eth_hairpin_unbind(uint16_t tx_port, uint16_t rx_port)\n \t\t\t       \" from Rx %d (%d - all ports)\\n\",\n \t\t\t       tx_port, rx_port, RTE_MAX_ETHPORTS);\n \n+\trte_eth_trace_hairpin_unbind(tx_port, rx_port, ret);\n+\n \treturn ret;\n }\n \n@@ -2426,6 +2557,9 @@ rte_eth_hairpin_get_peer_ports(uint16_t port_id, uint16_t *peer_ports,\n \t\tRTE_ETHDEV_LOG(ERR, \"Failed to get %d hairpin peer %s ports\\n\",\n \t\t\t       port_id, direction ? \"Rx\" : \"Tx\");\n \n+\trte_eth_trace_hairpin_get_peer_ports(port_id, peer_ports, len,\n+\t\t\t\t\t     direction, ret);\n+\n \treturn ret;\n }\n \n@@ -2434,6 +2568,8 @@ rte_eth_tx_buffer_drop_callback(struct rte_mbuf **pkts, uint16_t unsent,\n \t\tvoid *userdata __rte_unused)\n {\n \trte_pktmbuf_free_bulk(pkts, unsent);\n+\n+\trte_eth_trace_tx_buffer_drop_callback((void **)pkts, unsent);\n }\n \n void\n@@ -2444,6 +2580,8 @@ rte_eth_tx_buffer_count_callback(struct rte_mbuf **pkts, uint16_t unsent,\n \n \trte_pktmbuf_free_bulk(pkts, unsent);\n \t*count += unsent;\n+\n+\trte_eth_trace_tx_buffer_count_callback((void **)pkts, unsent, *count);\n }\n \n int\n@@ -2458,6 +2596,9 @@ rte_eth_tx_buffer_set_err_callback(struct rte_eth_dev_tx_buffer *buffer,\n \n \tbuffer->error_callback = cbfn;\n \tbuffer->error_userdata = userdata;\n+\n+\trte_eth_trace_tx_buffer_set_err_callback(buffer);\n+\n \treturn 0;\n }\n \n@@ -2477,6 +2618,8 @@ rte_eth_tx_buffer_init(struct rte_eth_dev_tx_buffer *buffer, uint16_t size)\n \t\t\tbuffer, rte_eth_tx_buffer_drop_callback, NULL);\n \t}\n \n+\trte_eth_trace_tx_buffer_init(buffer, size, ret);\n+\n \treturn ret;\n }\n \n@@ -2495,7 +2638,11 @@ rte_eth_tx_done_cleanup(uint16_t port_id, uint16_t queue_id, uint32_t free_cnt)\n \t/* Call driver to free pending mbufs. */\n \tret = (*dev->dev_ops->tx_done_cleanup)(dev->data->tx_queues[queue_id],\n \t\t\t\t\t       free_cnt);\n-\treturn eth_err(port_id, ret);\n+\tret = eth_err(port_id, ret);\n+\n+\trte_eth_trace_tx_done_cleanup(port_id, queue_id, free_cnt, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -2516,7 +2663,12 @@ rte_eth_promiscuous_enable(uint16_t port_id)\n \tdiag = (*dev->dev_ops->promiscuous_enable)(dev);\n \tdev->data->promiscuous = (diag == 0) ? 1 : 0;\n \n-\treturn eth_err(port_id, diag);\n+\tdiag = eth_err(port_id, diag);\n+\n+\trte_eth_trace_promiscuous_enable(port_id, dev->data->promiscuous,\n+\t\t\t\t\t diag);\n+\n+\treturn diag;\n }\n \n int\n@@ -2539,7 +2691,12 @@ rte_eth_promiscuous_disable(uint16_t port_id)\n \tif (diag != 0)\n \t\tdev->data->promiscuous = 1;\n \n-\treturn eth_err(port_id, diag);\n+\tdiag = eth_err(port_id, diag);\n+\n+\trte_eth_trace_promiscuous_disable(port_id, dev->data->promiscuous,\n+\t\t\t\t\t  diag);\n+\n+\treturn diag;\n }\n \n int\n@@ -2550,6 +2707,8 @@ rte_eth_promiscuous_get(uint16_t port_id)\n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n \n+\trte_eth_trace_promiscuous_get(port_id, dev->data->promiscuous);\n+\n \treturn dev->data->promiscuous;\n }\n \n@@ -2570,7 +2729,12 @@ rte_eth_allmulticast_enable(uint16_t port_id)\n \tdiag = (*dev->dev_ops->allmulticast_enable)(dev);\n \tdev->data->all_multicast = (diag == 0) ? 1 : 0;\n \n-\treturn eth_err(port_id, diag);\n+\tdiag = eth_err(port_id, diag);\n+\n+\trte_eth_trace_allmulticast_enable(port_id, dev->data->all_multicast,\n+\t\t\t\t\t  diag);\n+\n+\treturn diag;\n }\n \n int\n@@ -2592,7 +2756,12 @@ rte_eth_allmulticast_disable(uint16_t port_id)\n \tif (diag != 0)\n \t\tdev->data->all_multicast = 1;\n \n-\treturn eth_err(port_id, diag);\n+\tdiag = eth_err(port_id, diag);\n+\n+\trte_eth_trace_allmulticast_disable(port_id, dev->data->all_multicast,\n+\t\t\t\t\t   diag);\n+\n+\treturn diag;\n }\n \n int\n@@ -2603,6 +2772,8 @@ rte_eth_allmulticast_get(uint16_t port_id)\n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n \n+\trte_eth_trace_allmulticast_get(port_id, dev->data->all_multicast);\n+\n \treturn dev->data->all_multicast;\n }\n \n@@ -2629,6 +2800,8 @@ rte_eth_link_get(uint16_t port_id, struct rte_eth_link *eth_link)\n \t\t*eth_link = dev->data->dev_link;\n \t}\n \n+\trte_eth_trace_link_get(port_id, eth_link);\n+\n \treturn 0;\n }\n \n@@ -2655,35 +2828,76 @@ rte_eth_link_get_nowait(uint16_t port_id, struct rte_eth_link *eth_link)\n \t\t*eth_link = dev->data->dev_link;\n \t}\n \n+\trte_eth_trace_link_get_nowait(port_id, eth_link);\n+\n \treturn 0;\n }\n \n const char *\n rte_eth_link_speed_to_str(uint32_t link_speed)\n {\n+\tconst char *ret;\n+\n \tswitch (link_speed) {\n-\tcase RTE_ETH_SPEED_NUM_NONE: return \"None\";\n-\tcase RTE_ETH_SPEED_NUM_10M:  return \"10 Mbps\";\n-\tcase RTE_ETH_SPEED_NUM_100M: return \"100 Mbps\";\n-\tcase RTE_ETH_SPEED_NUM_1G:   return \"1 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_2_5G: return \"2.5 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_5G:   return \"5 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_10G:  return \"10 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_20G:  return \"20 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_25G:  return \"25 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_40G:  return \"40 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_50G:  return \"50 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_56G:  return \"56 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_100G: return \"100 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_200G: return \"200 Gbps\";\n-\tcase RTE_ETH_SPEED_NUM_UNKNOWN: return \"Unknown\";\n-\tdefault: return \"Invalid\";\n+\tcase RTE_ETH_SPEED_NUM_NONE:\n+\t\tret = \"None\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_10M:\n+\t\tret = \"10 Mbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_100M:\n+\t\tret = \"100 Mbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_1G:\n+\t\tret = \"1 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_2_5G:\n+\t\tret = \"2.5 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_5G:\n+\t\tret = \"5 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_10G:\n+\t\tret = \"10 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_20G:\n+\t\tret = \"20 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_25G:\n+\t\tret = \"25 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_40G:\n+\t\tret = \"40 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_50G:\n+\t\tret = \"50 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_56G:\n+\t\tret = \"56 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_100G:\n+\t\tret = \"100 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_200G:\n+\t\tret = \"200 Gbps\";\n+\t\tbreak;\n+\tcase RTE_ETH_SPEED_NUM_UNKNOWN:\n+\t\tret = \"Unknown\";\n+\t\tbreak;\n+\tdefault:\n+\t\tret = \"Invalid\";\n \t}\n+\n+\trte_eth_trace_link_speed_to_str(link_speed, ret);\n+\n+\treturn ret;\n }\n \n int\n rte_eth_link_to_str(char *str, size_t len, const struct rte_eth_link *eth_link)\n {\n+\tint ret;\n+\n \tif (str == NULL) {\n \t\tRTE_ETHDEV_LOG(ERR, \"Cannot convert link to NULL string\\n\");\n \t\treturn -EINVAL;\n@@ -2701,20 +2915,25 @@ rte_eth_link_to_str(char *str, size_t len, const struct rte_eth_link *eth_link)\n \t}\n \n \tif (eth_link->link_status == RTE_ETH_LINK_DOWN)\n-\t\treturn snprintf(str, len, \"Link down\");\n+\t\tret = snprintf(str, len, \"Link down\");\n \telse\n-\t\treturn snprintf(str, len, \"Link up at %s %s %s\",\n+\t\tret = snprintf(str, len, \"Link up at %s %s %s\",\n \t\t\trte_eth_link_speed_to_str(eth_link->link_speed),\n \t\t\t(eth_link->link_duplex == RTE_ETH_LINK_FULL_DUPLEX) ?\n \t\t\t\"FDX\" : \"HDX\",\n \t\t\t(eth_link->link_autoneg == RTE_ETH_LINK_AUTONEG) ?\n \t\t\t\"Autoneg\" : \"Fixed\");\n+\n+\trte_eth_trace_link_to_str(len, eth_link, str, ret);\n+\n+\treturn ret;\n }\n \n int\n rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats)\n {\n \tstruct rte_eth_dev *dev;\n+\tint ret;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n@@ -2730,7 +2949,11 @@ rte_eth_stats_get(uint16_t port_id, struct rte_eth_stats *stats)\n \tif (*dev->dev_ops->stats_get == NULL)\n \t\treturn -ENOTSUP;\n \tstats->rx_nombuf = dev->data->rx_mbuf_alloc_failed;\n-\treturn eth_err(port_id, (*dev->dev_ops->stats_get)(dev, stats));\n+\tret = eth_err(port_id, (*dev->dev_ops->stats_get)(dev, stats));\n+\n+\trte_eth_trace_stats_get(port_id, stats, ret);\n+\n+\treturn ret;\n }\n \n int\n@@ -2750,6 +2973,8 @@ rte_eth_stats_reset(uint16_t port_id)\n \n \tdev->data->rx_mbuf_alloc_failed = 0;\n \n+\trte_eth_trace_stats_reset(port_id);\n+\n \treturn 0;\n }\n \n@@ -2833,6 +3058,10 @@ rte_eth_xstats_get_id_by_name(uint16_t port_id, const char *xstat_name,\n \tfor (idx_xstat = 0; idx_xstat < cnt_xstats; idx_xstat++) {\n \t\tif (!strcmp(xstats_names[idx_xstat].name, xstat_name)) {\n \t\t\t*id = idx_xstat;\n+\n+\t\t\trte_eth_trace_xstats_get_id_by_name(port_id,\n+\t\t\t\t\t\t\t    xstat_name, *id);\n+\n \t\t\treturn 0;\n \t\t};\n \t}\n@@ -2986,6 +3215,9 @@ rte_eth_xstats_get_names_by_id(uint16_t port_id,\n \t\t\treturn -1;\n \t\t}\n \t\txstats_names[i] = xstats_names_copy[ids[i]];\n+\n+\t\trte_eth_trace_xstats_get_names_by_id(port_id, &xstats_names[i],\n+\t\t\t\t\t\t     ids[i]);\n \t}\n \n \tfree(xstats_names_copy);\n@@ -3025,6 +3257,10 @@ rte_eth_xstats_get_names(uint16_t port_id,\n \t\tcnt_used_entries += cnt_driver_entries;\n \t}\n \n+\tfor (int i = 0; i < cnt_used_entries; i++)\n+\t\trte_eth_trace_xstats_get_names(port_id, i, xstats_names[i],\n+\t\t\t\t\t       size, cnt_used_entries);\n+\n \treturn cnt_used_entries;\n }\n \n@@ -3174,6 +3410,9 @@ rte_eth_xstats_get_by_id(uint16_t port_id, const uint64_t *ids,\n \t\t}\n \t\tvalues[i] = xstats[ids[i]].value;\n \t}\n+\n+\trte_eth_trace_xstats_get_by_id(port_id, ids, values, size);\n+\n \treturn size;\n }\n \n@@ -3221,6 +3460,9 @@ rte_eth_xstats_get(uint16_t port_id, struct rte_eth_xstat *xstats,\n \tfor ( ; i < count + xcount; i++)\n \t\txstats[i].id += count;\n \n+\tfor (i = 0; i < n; i++)\n+\t\trte_eth_trace_xstats_get(port_id, xstats[i]);\n+\n \treturn count + xcount;\n }\n \n@@ -3234,8 +3476,13 @@ rte_eth_xstats_reset(uint16_t port_id)\n \tdev = &rte_eth_devices[port_id];\n \n \t/* implemented by the driver */\n-\tif (dev->dev_ops->xstats_reset != NULL)\n-\t\treturn eth_err(port_id, (*dev->dev_ops->xstats_reset)(dev));\n+\tif (dev->dev_ops->xstats_reset != NULL) {\n+\t\tint ret = eth_err(port_id, (*dev->dev_ops->xstats_reset)(dev));\n+\n+\t\trte_eth_trace_xstats_reset(port_id, ret);\n+\n+\t\treturn ret;\n+\t}\n \n \t/* fallback to default */\n \treturn rte_eth_stats_reset(port_id);\n@@ -3268,24 +3515,39 @@ int\n rte_eth_dev_set_tx_queue_stats_mapping(uint16_t port_id, uint16_t tx_queue_id,\n \t\tuint8_t stat_idx)\n {\n-\treturn eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,\n+\tint ret;\n+\n+\tret = eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,\n \t\t\t\t\t\ttx_queue_id,\n \t\t\t\t\t\tstat_idx, STAT_QMAP_TX));\n+\n+\trte_ethdev_trace_set_tx_queue_stats_mapping(port_id, tx_queue_id,\n+\t\t\t\t\t\t    stat_idx, ret);\n+\n+\treturn ret;\n }\n \n int\n rte_eth_dev_set_rx_queue_stats_mapping(uint16_t port_id, uint16_t rx_queue_id,\n \t\tuint8_t stat_idx)\n {\n-\treturn eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,\n+\tint ret;\n+\n+\tret = eth_err(port_id, eth_dev_set_queue_stats_mapping(port_id,\n \t\t\t\t\t\trx_queue_id,\n \t\t\t\t\t\tstat_idx, STAT_QMAP_RX));\n+\n+\trte_ethdev_trace_set_rx_queue_stats_mapping(port_id, rx_queue_id,\n+\t\t\t\t\t\t    stat_idx, ret);\n+\n+\treturn ret;\n }\n \n int\n rte_eth_dev_fw_version_get(uint16_t port_id, char *fw_version, size_t fw_size)\n {\n \tstruct rte_eth_dev *dev;\n+\tint ret;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n@@ -3299,8 +3561,12 @@ rte_eth_dev_fw_version_get(uint16_t port_id, char *fw_version, size_t fw_size)\n \n \tif (*dev->dev_ops->fw_version_get == NULL)\n \t\treturn -ENOTSUP;\n-\treturn eth_err(port_id, (*dev->dev_ops->fw_version_get)(dev,\n+\tret = eth_err(port_id, (*dev->dev_ops->fw_version_get)(dev,\n \t\t\t\t\t\t\tfw_version, fw_size));\n+\n+\trte_ethdev_trace_fw_version_get(port_id, fw_version, fw_size, ret);\n+\n+\treturn ret;\n }\n \n int\ndiff --git a/lib/ethdev/rte_ethdev_trace.h b/lib/ethdev/rte_ethdev_trace.h\ndeleted file mode 100644\nindex 1491c815c3..0000000000\n--- a/lib/ethdev/rte_ethdev_trace.h\n+++ /dev/null\n@@ -1,95 +0,0 @@\n-/* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright(C) 2020 Marvell International Ltd.\n- */\n-\n-#ifndef _RTE_ETHDEV_TRACE_H_\n-#define _RTE_ETHDEV_TRACE_H_\n-\n-/**\n- * @file\n- *\n- * API for ethdev trace support\n- */\n-\n-#ifdef __cplusplus\n-extern \"C\" {\n-#endif\n-\n-#include <rte_trace_point.h>\n-\n-#include \"rte_ethdev.h\"\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_configure,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t nb_rx_q,\n-\t\tuint16_t nb_tx_q, const struct rte_eth_conf *dev_conf, int rc),\n-\trte_trace_point_emit_u16(port_id);\n-\trte_trace_point_emit_u16(nb_rx_q);\n-\trte_trace_point_emit_u16(nb_tx_q);\n-\trte_trace_point_emit_u32(dev_conf->link_speeds);\n-\trte_trace_point_emit_u32(dev_conf->rxmode.mq_mode);\n-\trte_trace_point_emit_u32(dev_conf->rxmode.mtu);\n-\trte_trace_point_emit_u64(dev_conf->rxmode.offloads);\n-\trte_trace_point_emit_u32(dev_conf->txmode.mq_mode);\n-\trte_trace_point_emit_u64(dev_conf->txmode.offloads);\n-\trte_trace_point_emit_u32(dev_conf->lpbk_mode);\n-\trte_trace_point_emit_int(rc);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_rxq_setup,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t rx_queue_id,\n-\t\tuint16_t nb_rx_desc, void *mp,\n-\t\tconst struct rte_eth_rxconf *rx_conf, int rc),\n-\trte_trace_point_emit_u16(port_id);\n-\trte_trace_point_emit_u16(rx_queue_id);\n-\trte_trace_point_emit_u16(nb_rx_desc);\n-\trte_trace_point_emit_ptr(mp);\n-\trte_trace_point_emit_u8(rx_conf->rx_thresh.pthresh);\n-\trte_trace_point_emit_u8(rx_conf->rx_thresh.hthresh);\n-\trte_trace_point_emit_u8(rx_conf->rx_thresh.wthresh);\n-\trte_trace_point_emit_u8(rx_conf->rx_drop_en);\n-\trte_trace_point_emit_u8(rx_conf->rx_deferred_start);\n-\trte_trace_point_emit_u64(rx_conf->offloads);\n-\trte_trace_point_emit_int(rc);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_txq_setup,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t tx_queue_id,\n-\t\tuint16_t nb_tx_desc, const struct rte_eth_txconf *tx_conf),\n-\trte_trace_point_emit_u16(port_id);\n-\trte_trace_point_emit_u16(tx_queue_id);\n-\trte_trace_point_emit_u16(nb_tx_desc);\n-\trte_trace_point_emit_u8(tx_conf->tx_thresh.pthresh);\n-\trte_trace_point_emit_u8(tx_conf->tx_thresh.hthresh);\n-\trte_trace_point_emit_u8(tx_conf->tx_thresh.wthresh);\n-\trte_trace_point_emit_u8(tx_conf->tx_deferred_start);\n-\trte_trace_point_emit_u16(tx_conf->tx_free_thresh);\n-\trte_trace_point_emit_u64(tx_conf->offloads);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_start,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n-\trte_trace_point_emit_u16(port_id);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_stop,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id, int ret),\n-\trte_trace_point_emit_u16(port_id);\n-\trte_trace_point_emit_int(ret);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_ethdev_trace_close,\n-\tRTE_TRACE_POINT_ARGS(uint16_t port_id),\n-\trte_trace_point_emit_u16(port_id);\n-)\n-\n-#ifdef __cplusplus\n-}\n-#endif\n-\n-#endif /* _RTE_ETHDEV_TRACE_H_ */\ndiff --git a/lib/ethdev/rte_ethdev_trace_fp.h b/lib/ethdev/rte_ethdev_trace_fp.h\nindex 40084d1929..186271c9ff 100644\n--- a/lib/ethdev/rte_ethdev_trace_fp.h\n+++ b/lib/ethdev/rte_ethdev_trace_fp.h\n@@ -37,6 +37,42 @@ RTE_TRACE_POINT_FP(\n \trte_trace_point_emit_u16(nb_pkts);\n )\n \n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_call_rx_callbacks,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,\n+\t\tvoid **rx_pkts, uint16_t nb_rx, uint16_t nb_pkts),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(queue_id);\n+\trte_trace_point_emit_ptr(rx_pkts);\n+\trte_trace_point_emit_u16(nb_rx);\n+\trte_trace_point_emit_u16(nb_pkts);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_call_tx_callbacks,\n+\tRTE_TRACE_POINT_ARGS(uint16_t port_id, uint16_t queue_id,\n+\t\tvoid **tx_pkts, uint16_t nb_pkts),\n+\trte_trace_point_emit_u16(port_id);\n+\trte_trace_point_emit_u16(queue_id);\n+\trte_trace_point_emit_ptr(tx_pkts);\n+\trte_trace_point_emit_u16(nb_pkts);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_tx_buffer_drop_callback,\n+\tRTE_TRACE_POINT_ARGS(void **pkts, uint16_t unsent),\n+\trte_trace_point_emit_ptr(pkts);\n+\trte_trace_point_emit_u16(unsent);\n+)\n+\n+RTE_TRACE_POINT_FP(\n+\trte_eth_trace_tx_buffer_count_callback,\n+\tRTE_TRACE_POINT_ARGS(void **pkts, uint16_t unsent, uint64_t count),\n+\trte_trace_point_emit_ptr(pkts);\n+\trte_trace_point_emit_u16(unsent);\n+\trte_trace_point_emit_u64(count);\n+)\n+\n #ifdef __cplusplus\n }\n #endif\n",
    "prefixes": [
        "v9",
        "2/6"
    ]
}