get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 55483,
    "url": "http://patches.dpdk.org/api/patches/55483/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1561635235-22238-9-git-send-email-david.marchand@redhat.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": "<1561635235-22238-9-git-send-email-david.marchand@redhat.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1561635235-22238-9-git-send-email-david.marchand@redhat.com",
    "date": "2019-06-27T11:33:54",
    "name": "[8/9] remove experimental tags from all symbol definitions",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "f1b459adc17b6617234e05a0b878e53025f0cdd8",
    "submitter": {
        "id": 1173,
        "url": "http://patches.dpdk.org/api/people/1173/?format=api",
        "name": "David Marchand",
        "email": "david.marchand@redhat.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1561635235-22238-9-git-send-email-david.marchand@redhat.com/mbox/",
    "series": [
        {
            "id": 5197,
            "url": "http://patches.dpdk.org/api/series/5197/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=5197",
            "date": "2019-06-27T11:33:47",
            "name": "experimental tags fixes",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/5197/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/55483/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/55483/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 278755B3A;\n\tThu, 27 Jun 2019 13:35:04 +0200 (CEST)",
            "from mx1.redhat.com (mx1.redhat.com [209.132.183.28])\n\tby dpdk.org (Postfix) with ESMTP id E33CB4CA6\n\tfor <dev@dpdk.org>; Thu, 27 Jun 2019 13:35:01 +0200 (CEST)",
            "from smtp.corp.redhat.com\n\t(int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id DD08D308792D;\n\tThu, 27 Jun 2019 11:34:48 +0000 (UTC)",
            "from dmarchan.remote.csb (ovpn-204-76.brq.redhat.com\n\t[10.40.204.76])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 5C7AE1974B;\n\tThu, 27 Jun 2019 11:34:37 +0000 (UTC)"
        ],
        "From": "David Marchand <david.marchand@redhat.com>",
        "To": "dev@dpdk.org",
        "Cc": "nhorman@tuxdriver.com, aconole@redhat.com, thomas@monjalon.net,\n\tJohn McNamara <john.mcnamara@intel.com>,\n\tMarko Kovacevic <marko.kovacevic@intel.com>,\n\tHemant Agrawal <hemant.agrawal@nxp.com>,\n\tShreyansh Jain <shreyansh.jain@nxp.com>,\n\tWenzhuo Lu <wenzhuo.lu@intel.com>, \n\tKonstantin Ananyev <konstantin.ananyev@intel.com>,\n\tAmr Mokhtar <amr.mokhtar@intel.com>,\n\tFiona Trahe <fiona.trahe@intel.com>, \n\tPablo de Lara <pablo.de.lara.guarch@intel.com>,\n\tAshish Gupta <ashish.gupta@marvell.com>,\n\tDeclan Doherty <declan.doherty@intel.com>,\n\tAnatoly Burakov <anatoly.burakov@intel.com>,\n\tHarry van Haaren <harry.van.haaren@intel.com>,\n\tBruce Richardson <bruce.richardson@intel.com>,\n\tFerruh Yigit <ferruh.yigit@intel.com>,\n\tAndrew Rybchenko <arybchenko@solarflare.com>,\n\tAdrien Mazarguil <adrien.mazarguil@6wind.com>,\n\tCristian Dumitrescu <cristian.dumitrescu@intel.com>,\n\tNikhil Rao <nikhil.rao@intel.com>, Jerin Jacob <jerinj@marvell.com>, \n\tBernard Iremonger <bernard.iremonger@intel.com>,\n\tYipeng Wang <yipeng1.wang@intel.com>,\n\tSameh Gobriel <sameh.gobriel@intel.com>,\n\tOlivier Matz <olivier.matz@6wind.com>,\n\tDavid Hunt <david.hunt@intel.com>, \n\tHonnappa Nagarahalli <honnappa.nagarahalli@arm.com>,\n\tAkhil Goyal <akhil.goyal@nxp.com>, Kevin Laatz <kevin.laatz@intel.com>,\n\tRobert Sanford <rsanford@akamai.com>,\n\tErik Gabriel Carrillo <erik.g.carrillo@intel.com>,\n\tMaxime Coquelin <maxime.coquelin@redhat.com>,\n\tTiwei Bie <tiwei.bie@intel.com>, Zhihong Wang <zhihong.wang@intel.com>",
        "Date": "Thu, 27 Jun 2019 13:33:54 +0200",
        "Message-Id": "<1561635235-22238-9-git-send-email-david.marchand@redhat.com>",
        "In-Reply-To": "<1561635235-22238-1-git-send-email-david.marchand@redhat.com>",
        "References": "<1561635235-22238-1-git-send-email-david.marchand@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.84 on 10.5.11.23",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.45]); Thu, 27 Jun 2019 11:35:01 +0000 (UTC)",
        "Subject": "[dpdk-dev] [PATCH 8/9] remove experimental tags from all symbol\n\tdefinitions",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "We had some inconsistencies between functions prototypes and actual\ndefinitions.\nLet's avoid this by only adding the experimental tag to the prototypes.\nTests with gcc and clang show it is enough.\n\ngit grep -l __rte_experimental |grep \\.c$ |while read file; do\n\tsed -i -e '/^__rte_experimental$/d' $file;\n\tsed -i -e 's/  *__rte_experimental//' $file;\n\tsed -i -e 's/__rte_experimental  *//' $file;\ndone\n\nSigned-off-by: David Marchand <david.marchand@redhat.com>\n---\n devtools/checkpatches.sh                       | 32 ++++++++++++++++\n doc/guides/contributing/versioning.rst         |  6 +--\n drivers/net/dpaa2/dpaa2_ethdev.c               |  2 +-\n drivers/net/ixgbe/rte_pmd_ixgbe.c              | 10 ++---\n lib/librte_bbdev/rte_bbdev.c                   | 52 +++++++++++++-------------\n lib/librte_bpf/bpf.c                           |  4 +-\n lib/librte_bpf/bpf_exec.c                      |  4 +-\n lib/librte_bpf/bpf_load.c                      |  4 +-\n lib/librte_bpf/bpf_load_elf.c                  |  2 +-\n lib/librte_bpf/bpf_pkt.c                       |  8 ++--\n lib/librte_compressdev/rte_comp.c              | 12 +++---\n lib/librte_compressdev/rte_compressdev.c       | 50 ++++++++++++-------------\n lib/librte_compressdev/rte_compressdev_pmd.c   |  6 +--\n lib/librte_cryptodev/rte_cryptodev.c           | 28 +++++++-------\n lib/librte_eal/common/eal_common_class.c       |  6 +--\n lib/librte_eal/common/eal_common_dev.c         |  8 ++--\n lib/librte_eal/common/eal_common_fbarray.c     | 52 +++++++++++++-------------\n lib/librte_eal/common/eal_common_log.c         |  2 +-\n lib/librte_eal/common/eal_common_memory.c      | 48 ++++++++++++------------\n lib/librte_eal/common/eal_common_proc.c        | 12 +++---\n lib/librte_eal/common/eal_common_timer.c       |  2 +-\n lib/librte_eal/common/rte_malloc.c             |  2 +-\n lib/librte_eal/common/rte_option.c             |  1 -\n lib/librte_eal/common/rte_service.c            |  6 +--\n lib/librte_eal/freebsd/eal/eal.c               |  2 +-\n lib/librte_eal/freebsd/eal/eal_dev.c           |  8 ++--\n lib/librte_eal/freebsd/eal/eal_interrupts.c    |  2 +-\n lib/librte_eal/linux/eal/eal_dev.c             |  8 ++--\n lib/librte_eal/linux/eal/eal_interrupts.c      |  2 +-\n lib/librte_ethdev/rte_ethdev.c                 | 28 +++++++-------\n lib/librte_ethdev/rte_flow.c                   |  2 +-\n lib/librte_ethdev/rte_mtr.c                    | 24 ++++++------\n lib/librte_eventdev/rte_event_eth_rx_adapter.c |  4 +-\n lib/librte_flow_classify/rte_flow_classify.c   | 14 +++----\n lib/librte_hash/rte_cuckoo_hash.c              |  2 +-\n lib/librte_ip_frag/rte_ip_frag_common.c        |  2 +-\n lib/librte_ipsec/sa.c                          |  8 ++--\n lib/librte_ipsec/ses.c                         |  2 +-\n lib/librte_kni/rte_kni.c                       |  2 +-\n lib/librte_kvargs/rte_kvargs.c                 |  2 -\n lib/librte_mbuf/rte_mbuf.c                     |  1 -\n lib/librte_meter/rte_meter.c                   |  4 +-\n lib/librte_net/rte_arp.c                       |  2 +-\n lib/librte_net/rte_net.c                       |  2 +-\n lib/librte_power/rte_power_empty_poll.c        | 14 +++----\n lib/librte_rcu/rte_rcu_qsbr.c                  | 12 +++---\n lib/librte_sched/rte_sched.c                   |  2 +-\n lib/librte_security/rte_security.c             |  6 +--\n lib/librte_telemetry/rte_telemetry.c           |  6 +--\n lib/librte_telemetry/rte_telemetry_parser.c    |  2 +-\n lib/librte_timer/rte_timer.c                   | 16 ++++----\n lib/librte_vhost/vdpa.c                        |  2 +-\n lib/librte_vhost/vhost_crypto.c                | 10 ++---\n 53 files changed, 287 insertions(+), 263 deletions(-)",
    "diff": "diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh\nindex 6a01b39..7d61dbe 100755\n--- a/devtools/checkpatches.sh\n+++ b/devtools/checkpatches.sh\n@@ -79,6 +79,30 @@ check_forbidden_additions() { # <patch>\n \treturn $res\n }\n \n+check_experimental_tags() { # <patch>\n+\tres=0\n+\n+\tcat \"$1\" |awk '\n+\tBEGIN {\n+\t\tcurrent_file = \"\";\n+\t\tret = 0;\n+\t}\n+\t/^+++ b\\// {\n+\t\tcurrent_file = $2;\n+\t}\n+\t/^+.*__rte_experimental/ {\n+\t\tif (current_file ~ \".c$\" ) {\n+\t\t\tprint \"Please only put __rte_experimental tags in headers (\"current_file\")\";\n+\t\t\tret = 1;\n+\t\t}\n+\t}\n+\tEND {\n+\t\texit ret;\n+\t}' || res=1\n+\n+\treturn $res\n+}\n+\n number=0\n range='origin/master..'\n quiet=false\n@@ -151,6 +175,14 @@ check () { # <patch> <commit> <title>\n \t\tret=1\n \tfi\n \n+\t! $verbose || printf '\\nChecking __rte_experimental tags:\\n'\n+\treport=$(check_experimental_tags \"$tmpinput\")\n+\tif [ $? -ne 0 ] ; then\n+\t\t$headline_printed || print_headline \"$3\"\n+\t\tprintf '%s\\n' \"$report\"\n+\t\tret=1\n+\tfi\n+\n \tclean_tmp_files\n \t[ $ret -eq 0 ] && return 0\n \ndiff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst\nindex 5d93b18..3ab2c43 100644\n--- a/doc/guides/contributing/versioning.rst\n+++ b/doc/guides/contributing/versioning.rst\n@@ -149,9 +149,9 @@ Note that marking an API as experimental is a multi step process.\n To mark an API as experimental, the symbols which are desired to be exported\n must be placed in an EXPERIMENTAL version block in the corresponding libraries'\n version map script.\n-Secondly, the corresponding definitions of those exported functions, and\n-their forward declarations (in the development header files), must be marked\n-with the ``__rte_experimental`` tag (see ``rte_compat.h``).\n+Secondly, the corresponding prototypes of those exported functions (in the\n+development header files), must be marked with the ``__rte_experimental`` tag\n+(see ``rte_compat.h``).\n The DPDK build makefiles perform a check to ensure that the map file and the\n C code reflect the same list of symbols.\n This check can be circumvented by defining ``ALLOW_EXPERIMENTAL_API``\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex d668f3e..03f6959 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -102,7 +102,7 @@ static int dpaa2_dev_link_update(struct rte_eth_dev *dev,\n \n int dpaa2_logtype_pmd;\n \n-__rte_experimental void\n+void\n rte_pmd_dpaa2_set_timestamp(enum pmd_dpaa2_ts enable)\n {\n \tdpaa2_enable_ts = enable;\ndiff --git a/drivers/net/ixgbe/rte_pmd_ixgbe.c b/drivers/net/ixgbe/rte_pmd_ixgbe.c\nindex 077afab..9514f2c 100644\n--- a/drivers/net/ixgbe/rte_pmd_ixgbe.c\n+++ b/drivers/net/ixgbe/rte_pmd_ixgbe.c\n@@ -882,7 +882,7 @@\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_pmd_ixgbe_upd_fctrl_sbp(uint16_t port, int enable)\n {\n \tstruct ixgbe_hw *hw;\n@@ -1096,7 +1096,7 @@ STATIC void rte_pmd_ixgbe_release_swfw(struct ixgbe_hw *hw, u32 mask)\n \tixgbe_release_swfw_semaphore(hw, mask);\n }\n \n-int __rte_experimental\n+int\n rte_pmd_ixgbe_mdio_lock(uint16_t port)\n {\n \tstruct ixgbe_hw *hw;\n@@ -1123,7 +1123,7 @@ STATIC void rte_pmd_ixgbe_release_swfw(struct ixgbe_hw *hw, u32 mask)\n \treturn IXGBE_SUCCESS;\n }\n \n-int __rte_experimental\n+int\n rte_pmd_ixgbe_mdio_unlock(uint16_t port)\n {\n \tstruct rte_eth_dev *dev;\n@@ -1150,7 +1150,7 @@ STATIC void rte_pmd_ixgbe_release_swfw(struct ixgbe_hw *hw, u32 mask)\n \treturn IXGBE_SUCCESS;\n }\n \n-int __rte_experimental\n+int\n rte_pmd_ixgbe_mdio_unlocked_read(uint16_t port, uint32_t reg_addr,\n \t\t\t\t uint32_t dev_type, uint16_t *phy_data)\n {\n@@ -1197,7 +1197,7 @@ STATIC void rte_pmd_ixgbe_release_swfw(struct ixgbe_hw *hw, u32 mask)\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_pmd_ixgbe_mdio_unlocked_write(uint16_t port, uint32_t reg_addr,\n \t\t\t\t  uint32_t dev_type, uint16_t phy_data)\n {\ndiff --git a/lib/librte_bbdev/rte_bbdev.c b/lib/librte_bbdev/rte_bbdev.c\nindex a3ab5d9..0c35480 100644\n--- a/lib/librte_bbdev/rte_bbdev.c\n+++ b/lib/librte_bbdev/rte_bbdev.c\n@@ -173,7 +173,7 @@ struct rte_bbdev_callback {\n \treturn RTE_BBDEV_MAX_DEVS;\n }\n \n-struct rte_bbdev * __rte_experimental\n+struct rte_bbdev *\n rte_bbdev_allocate(const char *name)\n {\n \tint ret;\n@@ -232,7 +232,7 @@ struct rte_bbdev * __rte_experimental\n \treturn bbdev;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_release(struct rte_bbdev *bbdev)\n {\n \tuint16_t dev_id;\n@@ -266,7 +266,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-struct rte_bbdev * __rte_experimental\n+struct rte_bbdev *\n rte_bbdev_get_named_dev(const char *name)\n {\n \tunsigned int i;\n@@ -286,13 +286,13 @@ struct rte_bbdev * __rte_experimental\n \treturn NULL;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_bbdev_count(void)\n {\n \treturn num_devs;\n }\n \n-bool __rte_experimental\n+bool\n rte_bbdev_is_valid(uint16_t dev_id)\n {\n \tif ((dev_id < RTE_BBDEV_MAX_DEVS) &&\n@@ -301,7 +301,7 @@ struct rte_bbdev * __rte_experimental\n \treturn false;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_bbdev_find_next(uint16_t dev_id)\n {\n \tdev_id++;\n@@ -311,7 +311,7 @@ struct rte_bbdev * __rte_experimental\n \treturn dev_id;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_setup_queues(uint16_t dev_id, uint16_t num_queues, int socket_id)\n {\n \tunsigned int i;\n@@ -401,7 +401,7 @@ struct rte_bbdev * __rte_experimental\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_intr_enable(uint16_t dev_id)\n {\n \tint ret;\n@@ -433,7 +433,7 @@ struct rte_bbdev * __rte_experimental\n \treturn -ENOTSUP;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_configure(uint16_t dev_id, uint16_t queue_id,\n \t\tconst struct rte_bbdev_queue_conf *conf)\n {\n@@ -551,7 +551,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_start(uint16_t dev_id)\n {\n \tint i;\n@@ -583,7 +583,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_stop(uint16_t dev_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -604,7 +604,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_close(uint16_t dev_id)\n {\n \tint ret;\n@@ -649,7 +649,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_start(uint16_t dev_id, uint16_t queue_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -679,7 +679,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_stop(uint16_t dev_id, uint16_t queue_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -739,7 +739,7 @@ struct rte_bbdev * __rte_experimental\n \trte_bbdev_log_debug(\"Reset stats on %u\", dev->data->dev_id);\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_stats_get(uint16_t dev_id, struct rte_bbdev_stats *stats)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -762,7 +762,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_stats_reset(uint16_t dev_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -779,7 +779,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_info_get(uint16_t dev_id, struct rte_bbdev_info *dev_info)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -807,7 +807,7 @@ struct rte_bbdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_info_get(uint16_t dev_id, uint16_t queue_id,\n \t\tstruct rte_bbdev_queue_info *queue_info)\n {\n@@ -872,7 +872,7 @@ struct rte_bbdev * __rte_experimental\n \t}\n }\n \n-struct rte_mempool * __rte_experimental\n+struct rte_mempool *\n rte_bbdev_op_pool_create(const char *name, enum rte_bbdev_op_type type,\n \t\tunsigned int num_elements, unsigned int cache_size,\n \t\tint socket_id)\n@@ -919,7 +919,7 @@ struct rte_mempool * __rte_experimental\n \treturn mp;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_callback_register(uint16_t dev_id, enum rte_bbdev_event_type event,\n \t\trte_bbdev_cb_fn cb_fn, void *cb_arg)\n {\n@@ -964,7 +964,7 @@ struct rte_mempool * __rte_experimental\n \treturn (user_cb == NULL) ? -ENOMEM : 0;\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_callback_unregister(uint16_t dev_id, enum rte_bbdev_event_type event,\n \t\trte_bbdev_cb_fn cb_fn, void *cb_arg)\n {\n@@ -1009,7 +1009,7 @@ struct rte_mempool * __rte_experimental\n \treturn ret;\n }\n \n-void __rte_experimental\n+void\n rte_bbdev_pmd_callback_process(struct rte_bbdev *dev,\n \tenum rte_bbdev_event_type event, void *ret_param)\n {\n@@ -1051,7 +1051,7 @@ struct rte_mempool * __rte_experimental\n \trte_spinlock_unlock(&rte_bbdev_cb_lock);\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_intr_enable(uint16_t dev_id, uint16_t queue_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -1062,7 +1062,7 @@ struct rte_mempool * __rte_experimental\n \treturn dev->dev_ops->queue_intr_enable(dev, queue_id);\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_intr_disable(uint16_t dev_id, uint16_t queue_id)\n {\n \tstruct rte_bbdev *dev = get_dev(dev_id);\n@@ -1073,7 +1073,7 @@ struct rte_mempool * __rte_experimental\n \treturn dev->dev_ops->queue_intr_disable(dev, queue_id);\n }\n \n-int __rte_experimental\n+int\n rte_bbdev_queue_intr_ctl(uint16_t dev_id, uint16_t queue_id, int epfd, int op,\n \t\tvoid *data)\n {\n@@ -1110,7 +1110,7 @@ struct rte_mempool * __rte_experimental\n }\n \n \n-const char * __rte_experimental\n+const char *\n rte_bbdev_op_type_str(enum rte_bbdev_op_type op_type)\n {\n \tstatic const char * const op_types[] = {\ndiff --git a/lib/librte_bpf/bpf.c b/lib/librte_bpf/bpf.c\nindex f590c8c..cc963d5 100644\n--- a/lib/librte_bpf/bpf.c\n+++ b/lib/librte_bpf/bpf.c\n@@ -16,7 +16,7 @@\n \n int rte_bpf_logtype;\n \n-__rte_experimental void\n+void\n rte_bpf_destroy(struct rte_bpf *bpf)\n {\n \tif (bpf != NULL) {\n@@ -26,7 +26,7 @@\n \t}\n }\n \n-__rte_experimental int\n+int\n rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit)\n {\n \tif (bpf == NULL || jit == NULL)\ndiff --git a/lib/librte_bpf/bpf_exec.c b/lib/librte_bpf/bpf_exec.c\nindex 6a79139..1bb2266 100644\n--- a/lib/librte_bpf/bpf_exec.c\n+++ b/lib/librte_bpf/bpf_exec.c\n@@ -424,7 +424,7 @@\n \treturn 0;\n }\n \n-__rte_experimental uint32_t\n+uint32_t\n rte_bpf_exec_burst(const struct rte_bpf *bpf, void *ctx[], uint64_t rc[],\n \tuint32_t num)\n {\n@@ -443,7 +443,7 @@\n \treturn i;\n }\n \n-__rte_experimental uint64_t\n+uint64_t\n rte_bpf_exec(const struct rte_bpf *bpf, void *ctx)\n {\n \tuint64_t rc;\ndiff --git a/lib/librte_bpf/bpf_load.c b/lib/librte_bpf/bpf_load.c\nindex 194103e..2a3b901 100644\n--- a/lib/librte_bpf/bpf_load.c\n+++ b/lib/librte_bpf/bpf_load.c\n@@ -86,7 +86,7 @@\n \treturn 0;\n }\n \n-__rte_experimental struct rte_bpf *\n+struct rte_bpf *\n rte_bpf_load(const struct rte_bpf_prm *prm)\n {\n \tstruct rte_bpf *bpf;\n@@ -132,7 +132,7 @@\n }\n \n #ifndef RTE_LIBRTE_BPF_ELF\n-__rte_experimental struct rte_bpf *\n+struct rte_bpf *\n rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,\n \tconst char *sname)\n {\ndiff --git a/lib/librte_bpf/bpf_load_elf.c b/lib/librte_bpf/bpf_load_elf.c\nindex 926317b..2b11ade 100644\n--- a/lib/librte_bpf/bpf_load_elf.c\n+++ b/lib/librte_bpf/bpf_load_elf.c\n@@ -294,7 +294,7 @@\n \treturn bpf;\n }\n \n-__rte_experimental struct rte_bpf *\n+struct rte_bpf *\n rte_bpf_elf_load(const struct rte_bpf_prm *prm, const char *fname,\n \tconst char *sname)\n {\ndiff --git a/lib/librte_bpf/bpf_pkt.c b/lib/librte_bpf/bpf_pkt.c\nindex ab9daa5..6e8248f 100644\n--- a/lib/librte_bpf/bpf_pkt.c\n+++ b/lib/librte_bpf/bpf_pkt.c\n@@ -480,7 +480,7 @@ struct bpf_eth_cbh {\n }\n \n \n-__rte_experimental void\n+void\n rte_bpf_eth_rx_unload(uint16_t port, uint16_t queue)\n {\n \tstruct bpf_eth_cbh *cbh;\n@@ -491,7 +491,7 @@ struct bpf_eth_cbh {\n \trte_spinlock_unlock(&cbh->lock);\n }\n \n-__rte_experimental void\n+void\n rte_bpf_eth_tx_unload(uint16_t port, uint16_t queue)\n {\n \tstruct bpf_eth_cbh *cbh;\n@@ -572,7 +572,7 @@ struct bpf_eth_cbh {\n \treturn rc;\n }\n \n-__rte_experimental int\n+int\n rte_bpf_eth_rx_elf_load(uint16_t port, uint16_t queue,\n \tconst struct rte_bpf_prm *prm, const char *fname, const char *sname,\n \tuint32_t flags)\n@@ -588,7 +588,7 @@ struct bpf_eth_cbh {\n \treturn rc;\n }\n \n-__rte_experimental int\n+int\n rte_bpf_eth_tx_elf_load(uint16_t port, uint16_t queue,\n \tconst struct rte_bpf_prm *prm, const char *fname, const char *sname,\n \tuint32_t flags)\ndiff --git a/lib/librte_compressdev/rte_comp.c b/lib/librte_compressdev/rte_comp.c\nindex 06e3d44..3b0e46f 100644\n--- a/lib/librte_compressdev/rte_comp.c\n+++ b/lib/librte_compressdev/rte_comp.c\n@@ -6,7 +6,7 @@\n #include \"rte_compressdev.h\"\n #include \"rte_compressdev_internal.h\"\n \n-const char * __rte_experimental\n+const char *\n rte_comp_get_feature_name(uint64_t flag)\n {\n \tswitch (flag) {\n@@ -112,7 +112,7 @@ struct rte_comp_op_pool_private {\n \top->mempool = mempool;\n }\n \n-struct rte_mempool * __rte_experimental\n+struct rte_mempool *\n rte_comp_op_pool_create(const char *name,\n \t\tunsigned int nb_elts, unsigned int cache_size,\n \t\tuint16_t user_size, int socket_id)\n@@ -167,7 +167,7 @@ struct rte_mempool * __rte_experimental\n \treturn mp;\n }\n \n-struct rte_comp_op * __rte_experimental\n+struct rte_comp_op *\n rte_comp_op_alloc(struct rte_mempool *mempool)\n {\n \tstruct rte_comp_op *op = NULL;\n@@ -182,7 +182,7 @@ struct rte_comp_op * __rte_experimental\n \treturn op;\n }\n \n-int __rte_experimental\n+int\n rte_comp_op_bulk_alloc(struct rte_mempool *mempool,\n \t\tstruct rte_comp_op **ops, uint16_t nb_ops)\n {\n@@ -207,14 +207,14 @@ struct rte_comp_op * __rte_experimental\n  * @param op\n  *   Compress operation\n  */\n-void __rte_experimental\n+void\n rte_comp_op_free(struct rte_comp_op *op)\n {\n \tif (op != NULL && op->mempool != NULL)\n \t\trte_mempool_put(op->mempool, op);\n }\n \n-void __rte_experimental\n+void\n rte_comp_op_bulk_free(struct rte_comp_op **ops, uint16_t nb_ops)\n {\n \tuint16_t i;\ndiff --git a/lib/librte_compressdev/rte_compressdev.c b/lib/librte_compressdev/rte_compressdev.c\nindex afba584..b3c5651 100644\n--- a/lib/librte_compressdev/rte_compressdev.c\n+++ b/lib/librte_compressdev/rte_compressdev.c\n@@ -28,7 +28,7 @@\n \t\t.max_devs\t\t= RTE_COMPRESS_MAX_DEVS\n };\n \n-const struct rte_compressdev_capabilities * __rte_experimental\n+const struct rte_compressdev_capabilities *\n rte_compressdev_capability_get(uint8_t dev_id,\n \t\t\tenum rte_comp_algorithm algo)\n {\n@@ -51,7 +51,7 @@\n \treturn NULL;\n }\n \n-const char * __rte_experimental\n+const char *\n rte_compressdev_get_feature_name(uint64_t flag)\n {\n \tswitch (flag) {\n@@ -80,7 +80,7 @@\n \treturn &compressdev_globals.devs[dev_id];\n }\n \n-struct rte_compressdev * __rte_experimental\n+struct rte_compressdev *\n rte_compressdev_pmd_get_named_dev(const char *name)\n {\n \tstruct rte_compressdev *dev;\n@@ -116,7 +116,7 @@ struct rte_compressdev * __rte_experimental\n }\n \n \n-int __rte_experimental\n+int\n rte_compressdev_get_dev_id(const char *name)\n {\n \tunsigned int i;\n@@ -134,13 +134,13 @@ struct rte_compressdev * __rte_experimental\n \treturn -1;\n }\n \n-uint8_t __rte_experimental\n+uint8_t\n rte_compressdev_count(void)\n {\n \treturn compressdev_globals.nb_devs;\n }\n \n-uint8_t __rte_experimental\n+uint8_t\n rte_compressdev_devices_get(const char *driver_name, uint8_t *devices,\n \tuint8_t nb_devices)\n {\n@@ -165,7 +165,7 @@ struct rte_compressdev * __rte_experimental\n \treturn count;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_socket_id(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -222,7 +222,7 @@ struct rte_compressdev * __rte_experimental\n \treturn RTE_COMPRESS_MAX_DEVS;\n }\n \n-struct rte_compressdev * __rte_experimental\n+struct rte_compressdev *\n rte_compressdev_pmd_allocate(const char *name, int socket_id)\n {\n \tstruct rte_compressdev *compressdev;\n@@ -268,7 +268,7 @@ struct rte_compressdev * __rte_experimental\n \treturn compressdev;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_pmd_release_device(struct rte_compressdev *compressdev)\n {\n \tint ret;\n@@ -288,7 +288,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_compressdev_queue_pair_count(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -413,7 +413,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_configure(uint8_t dev_id, struct rte_compressdev_config *config)\n {\n \tstruct rte_compressdev *dev;\n@@ -447,7 +447,7 @@ struct rte_compressdev * __rte_experimental\n \treturn (*dev->dev_ops->dev_configure)(dev, config);\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_start(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -479,7 +479,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_compressdev_stop(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -503,7 +503,7 @@ struct rte_compressdev * __rte_experimental\n \tdev->data->dev_started = 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_close(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -538,7 +538,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n \t\tuint32_t max_inflight_ops, int socket_id)\n {\n@@ -573,7 +573,7 @@ struct rte_compressdev * __rte_experimental\n \t\t\tmax_inflight_ops, socket_id);\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_compressdev_dequeue_burst(uint8_t dev_id, uint16_t qp_id,\n \t\tstruct rte_comp_op **ops, uint16_t nb_ops)\n {\n@@ -585,7 +585,7 @@ struct rte_compressdev * __rte_experimental\n \treturn nb_ops;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,\n \t\tstruct rte_comp_op **ops, uint16_t nb_ops)\n {\n@@ -595,7 +595,7 @@ struct rte_compressdev * __rte_experimental\n \t\t\tdev->data->queue_pairs[qp_id], ops, nb_ops);\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_stats_get(uint8_t dev_id, struct rte_compressdev_stats *stats)\n {\n \tstruct rte_compressdev *dev;\n@@ -618,7 +618,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_compressdev_stats_reset(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev;\n@@ -635,7 +635,7 @@ struct rte_compressdev * __rte_experimental\n }\n \n \n-void __rte_experimental\n+void\n rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info)\n {\n \tstruct rte_compressdev *dev;\n@@ -655,7 +655,7 @@ struct rte_compressdev * __rte_experimental\n \tdev_info->driver_name = dev->device->driver->name;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_private_xform_create(uint8_t dev_id,\n \t\tconst struct rte_comp_xform *xform,\n \t\tvoid **priv_xform)\n@@ -680,7 +680,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_private_xform_free(uint8_t dev_id, void *priv_xform)\n {\n \tstruct rte_compressdev *dev;\n@@ -703,7 +703,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_stream_create(uint8_t dev_id,\n \t\tconst struct rte_comp_xform *xform,\n \t\tvoid **stream)\n@@ -729,7 +729,7 @@ struct rte_compressdev * __rte_experimental\n }\n \n \n-int __rte_experimental\n+int\n rte_compressdev_stream_free(uint8_t dev_id, void *stream)\n {\n \tstruct rte_compressdev *dev;\n@@ -752,7 +752,7 @@ struct rte_compressdev * __rte_experimental\n \treturn 0;\n }\n \n-const char * __rte_experimental\n+const char *\n rte_compressdev_name_get(uint8_t dev_id)\n {\n \tstruct rte_compressdev *dev = rte_compressdev_get_dev(dev_id);\ndiff --git a/lib/librte_compressdev/rte_compressdev_pmd.c b/lib/librte_compressdev/rte_compressdev_pmd.c\nindex cc51d69..46b2556 100644\n--- a/lib/librte_compressdev/rte_compressdev_pmd.c\n+++ b/lib/librte_compressdev/rte_compressdev_pmd.c\n@@ -48,7 +48,7 @@\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_pmd_parse_input_args(\n \t\tstruct rte_compressdev_pmd_init_params *params,\n \t\tconst char *args)\n@@ -84,7 +84,7 @@\n \treturn ret;\n }\n \n-struct rte_compressdev * __rte_experimental\n+struct rte_compressdev *\n rte_compressdev_pmd_create(const char *name,\n \t\tstruct rte_device *device,\n \t\tsize_t private_data_size,\n@@ -133,7 +133,7 @@ struct rte_compressdev * __rte_experimental\n \treturn compressdev;\n }\n \n-int __rte_experimental\n+int\n rte_compressdev_pmd_destroy(struct rte_compressdev *compressdev)\n {\n \tint retval;\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex 00c2cf4..be9f026 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -250,7 +250,7 @@ struct rte_cryptodev_sym_session_pool_private_data {\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_asym_get_xform_enum(enum rte_crypto_asym_xform_type *xform_enum,\n \t\tconst char *xform_string)\n {\n@@ -338,7 +338,7 @@ struct rte_cryptodev_sym_session_pool_private_data {\n \treturn -1;\n }\n \n-const struct rte_cryptodev_asymmetric_xform_capability * __rte_experimental\n+const struct rte_cryptodev_asymmetric_xform_capability *\n rte_cryptodev_asym_capability_get(uint8_t dev_id,\n \t\tconst struct rte_cryptodev_asym_capability_idx *idx)\n {\n@@ -411,7 +411,7 @@ struct rte_cryptodev_sym_session_pool_private_data {\n \n \treturn 0;\n }\n-int __rte_experimental\n+int\n rte_cryptodev_asym_xform_capability_check_optype(\n \tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n \tenum rte_crypto_asym_op_type op_type)\n@@ -422,7 +422,7 @@ struct rte_cryptodev_sym_session_pool_private_data {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_asym_xform_capability_check_modlen(\n \tconst struct rte_cryptodev_asymmetric_xform_capability *capability,\n \tuint16_t modlen)\n@@ -1235,7 +1235,7 @@ struct rte_cryptodev *\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_asym_session_init(uint8_t dev_id,\n \t\tstruct rte_cryptodev_asym_session *sess,\n \t\tstruct rte_crypto_asym_xform *xforms,\n@@ -1270,7 +1270,7 @@ struct rte_cryptodev *\n \treturn 0;\n }\n \n-struct rte_mempool * __rte_experimental\n+struct rte_mempool *\n rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,\n \tuint32_t elt_size, uint32_t cache_size, uint16_t user_data_size,\n \tint socket_id)\n@@ -1354,7 +1354,7 @@ struct rte_cryptodev_sym_session *\n \treturn sess;\n }\n \n-struct rte_cryptodev_asym_session * __rte_experimental\n+struct rte_cryptodev_asym_session *\n rte_cryptodev_asym_session_create(struct rte_mempool *mp)\n {\n \tstruct rte_cryptodev_asym_session *sess;\n@@ -1398,7 +1398,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_asym_session_clear(uint8_t dev_id,\n \t\tstruct rte_cryptodev_asym_session *sess)\n {\n@@ -1438,7 +1438,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_asym_session_free(struct rte_cryptodev_asym_session *sess)\n {\n \tuint8_t i;\n@@ -1478,7 +1478,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \t\t\trte_cryptodev_sym_session_data_size(&s));\n }\n \n-unsigned int __rte_experimental\n+unsigned int\n rte_cryptodev_sym_get_existing_header_session_size(\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n@@ -1489,7 +1489,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \t\t\t\trte_cryptodev_sym_session_data_size(sess));\n }\n \n-unsigned int __rte_experimental\n+unsigned int\n rte_cryptodev_asym_get_header_session_size(void)\n {\n \t/*\n@@ -1519,7 +1519,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \treturn priv_sess_size;\n }\n \n-unsigned int __rte_experimental\n+unsigned int\n rte_cryptodev_asym_get_private_session_size(uint8_t dev_id)\n {\n \tstruct rte_cryptodev *dev;\n@@ -1542,7 +1542,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \n }\n \n-int __rte_experimental\n+int\n rte_cryptodev_sym_session_set_user_data(\n \t\t\t\t\tstruct rte_cryptodev_sym_session *sess,\n \t\t\t\t\tvoid *data,\n@@ -1558,7 +1558,7 @@ struct rte_cryptodev_asym_session * __rte_experimental\n \treturn 0;\n }\n \n-void * __rte_experimental\n+void *\n rte_cryptodev_sym_session_get_user_data(\n \t\t\t\t\tstruct rte_cryptodev_sym_session *sess)\n {\ndiff --git a/lib/librte_eal/common/eal_common_class.c b/lib/librte_eal/common/eal_common_class.c\nindex d922266..0187076 100644\n--- a/lib/librte_eal/common/eal_common_class.c\n+++ b/lib/librte_eal/common/eal_common_class.c\n@@ -12,7 +12,7 @@\n static struct rte_class_list rte_class_list =\n \tTAILQ_HEAD_INITIALIZER(rte_class_list);\n \n-__rte_experimental void\n+void\n rte_class_register(struct rte_class *class)\n {\n \tRTE_VERIFY(class);\n@@ -22,14 +22,13 @@\n \tRTE_LOG(DEBUG, EAL, \"Registered [%s] device class.\\n\", class->name);\n }\n \n-__rte_experimental void\n+void\n rte_class_unregister(struct rte_class *class)\n {\n \tTAILQ_REMOVE(&rte_class_list, class, next);\n \tRTE_LOG(DEBUG, EAL, \"Unregistered [%s] device class.\\n\", class->name);\n }\n \n-__rte_experimental\n struct rte_class *\n rte_class_find(const struct rte_class *start, rte_class_cmp_t cmp,\n \t       const void *data)\n@@ -56,7 +55,6 @@ struct rte_class *\n \treturn strcmp(class->name, name);\n }\n \n-__rte_experimental\n struct rte_class *\n rte_class_find_by_name(const char *name)\n {\ndiff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c\nindex 824b8f9..86f801d 100644\n--- a/lib/librte_eal/common/eal_common_dev.c\n+++ b/lib/librte_eal/common/eal_common_dev.c\n@@ -422,7 +422,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_dev_event_callback_register(const char *device_name,\n \t\t\t\trte_dev_event_cb_fn cb_fn,\n \t\t\t\tvoid *cb_arg)\n@@ -488,7 +488,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_dev_event_callback_unregister(const char *device_name,\n \t\t\t\t  rte_dev_event_cb_fn cb_fn,\n \t\t\t\t  void *cb_arg)\n@@ -533,7 +533,7 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)\n \treturn ret;\n }\n \n-void __rte_experimental\n+void\n rte_dev_event_callback_process(const char *device_name,\n \t\t\t       enum rte_dev_event_type event)\n {\n@@ -559,7 +559,6 @@ static int cmp_dev_name(const struct rte_device *dev, const void *_name)\n \trte_spinlock_unlock(&dev_event_lock);\n }\n \n-__rte_experimental\n int\n rte_dev_iterator_init(struct rte_dev_iterator *it,\n \t\t      const char *dev_str)\n@@ -712,7 +711,6 @@ class_next_dev_cmp(const struct rte_class *cls,\n \tit->device = dev;\n \treturn dev == NULL;\n }\n-__rte_experimental\n struct rte_device *\n rte_dev_iterator_next(struct rte_dev_iterator *it)\n {\ndiff --git a/lib/librte_eal/common/eal_common_fbarray.c b/lib/librte_eal/common/eal_common_fbarray.c\nindex eb04a1e..b7ddb66 100644\n--- a/lib/librte_eal/common/eal_common_fbarray.c\n+++ b/lib/librte_eal/common/eal_common_fbarray.c\n@@ -709,7 +709,7 @@ struct used_mask {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_init(struct rte_fbarray *arr, const char *name, unsigned int len,\n \t\tunsigned int elt_sz)\n {\n@@ -833,7 +833,7 @@ struct used_mask {\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_attach(struct rte_fbarray *arr)\n {\n \tstruct mem_area *ma = NULL, *tmp = NULL;\n@@ -924,7 +924,7 @@ struct used_mask {\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_detach(struct rte_fbarray *arr)\n {\n \tstruct mem_area *tmp = NULL;\n@@ -978,7 +978,7 @@ struct used_mask {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_destroy(struct rte_fbarray *arr)\n {\n \tstruct mem_area *tmp = NULL;\n@@ -1060,7 +1060,7 @@ struct used_mask {\n \treturn ret;\n }\n \n-void * __rte_experimental\n+void *\n rte_fbarray_get(const struct rte_fbarray *arr, unsigned int idx)\n {\n \tvoid *ret = NULL;\n@@ -1079,19 +1079,19 @@ struct used_mask {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_set_used(struct rte_fbarray *arr, unsigned int idx)\n {\n \treturn set_used(arr, idx, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_set_free(struct rte_fbarray *arr, unsigned int idx)\n {\n \treturn set_used(arr, idx, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_is_used(struct rte_fbarray *arr, unsigned int idx)\n {\n \tstruct used_mask *msk;\n@@ -1160,25 +1160,25 @@ struct used_mask {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_next_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find(arr, start, true, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_next_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find(arr, start, true, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_prev_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find(arr, start, false, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_prev_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find(arr, start, false, true);\n@@ -1236,28 +1236,28 @@ struct used_mask {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_next_n_free(struct rte_fbarray *arr, unsigned int start,\n \t\tunsigned int n)\n {\n \treturn fbarray_find_n(arr, start, n, true, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_next_n_used(struct rte_fbarray *arr, unsigned int start,\n \t\tunsigned int n)\n {\n \treturn fbarray_find_n(arr, start, n, true, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_prev_n_free(struct rte_fbarray *arr, unsigned int start,\n \t\tunsigned int n)\n {\n \treturn fbarray_find_n(arr, start, n, false, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_prev_n_used(struct rte_fbarray *arr, unsigned int start,\n \t\tunsigned int n)\n {\n@@ -1400,56 +1400,56 @@ struct used_mask {\n \treturn biggest_idx;\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_biggest_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_biggest(arr, start, false, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_biggest_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_biggest(arr, start, true, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_rev_biggest_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_biggest(arr, start, false, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_rev_biggest_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_biggest(arr, start, true, true);\n }\n \n \n-int __rte_experimental\n+int\n rte_fbarray_find_contig_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_contig(arr, start, true, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_contig_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_contig(arr, start, true, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_rev_contig_free(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_contig(arr, start, false, false);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_rev_contig_used(struct rte_fbarray *arr, unsigned int start)\n {\n \treturn fbarray_find_contig(arr, start, false, true);\n }\n \n-int __rte_experimental\n+int\n rte_fbarray_find_idx(const struct rte_fbarray *arr, const void *elt)\n {\n \tvoid *end;\n@@ -1475,7 +1475,7 @@ struct used_mask {\n \treturn ret;\n }\n \n-void __rte_experimental\n+void\n rte_fbarray_dump_metadata(struct rte_fbarray *arr, FILE *f)\n {\n \tstruct used_mask *msk;\ndiff --git a/lib/librte_eal/common/eal_common_log.c b/lib/librte_eal/common/eal_common_log.c\nindex c714a4b..4f6f227 100644\n--- a/lib/librte_eal/common/eal_common_log.c\n+++ b/lib/librte_eal/common/eal_common_log.c\n@@ -268,7 +268,7 @@ int rte_log_cur_msg_logtype(void)\n }\n \n /* Register an extended log type and try to pick its level from EAL options */\n-int __rte_experimental\n+int\n rte_log_register_type_and_pick_level(const char *name, uint32_t level_def)\n {\n \tstruct rte_eal_opt_loglevel *opt_ll;\ndiff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c\nindex de6fc1b..858d563 100644\n--- a/lib/librte_eal/common/eal_common_memory.c\n+++ b/lib/librte_eal/common/eal_common_memory.c\n@@ -243,7 +243,7 @@\n \treturn msl;\n }\n \n-__rte_experimental struct rte_memseg_list *\n+struct rte_memseg_list *\n rte_mem_virt2memseg_list(const void *addr)\n {\n \treturn virt2memseg_list(addr);\n@@ -280,7 +280,7 @@ struct virtiova {\n \treturn 0;\n }\n \n-__rte_experimental void *\n+void *\n rte_mem_iova2virt(rte_iova_t iova)\n {\n \tstruct virtiova vi;\n@@ -299,7 +299,7 @@ struct virtiova {\n \treturn vi.virt;\n }\n \n-__rte_experimental struct rte_memseg *\n+struct rte_memseg *\n rte_mem_virt2memseg(const void *addr, const struct rte_memseg_list *msl)\n {\n \treturn virt2memseg(addr, msl != NULL ? msl :\n@@ -368,7 +368,7 @@ struct virtiova {\n  * Defining here because declared in rte_memory.h, but the actual implementation\n  * is in eal_common_memalloc.c, like all other memalloc internals.\n  */\n-int __rte_experimental\n+int\n rte_mem_event_callback_register(const char *name, rte_mem_event_callback_t clb,\n \t\tvoid *arg)\n {\n@@ -381,7 +381,7 @@ struct virtiova {\n \treturn eal_memalloc_mem_event_callback_register(name, clb, arg);\n }\n \n-int __rte_experimental\n+int\n rte_mem_event_callback_unregister(const char *name, void *arg)\n {\n \t/* FreeBSD boots with legacy mem enabled by default */\n@@ -393,7 +393,7 @@ struct virtiova {\n \treturn eal_memalloc_mem_event_callback_unregister(name, arg);\n }\n \n-int __rte_experimental\n+int\n rte_mem_alloc_validator_register(const char *name,\n \t\trte_mem_alloc_validator_t clb, int socket_id, size_t limit)\n {\n@@ -407,7 +407,7 @@ struct virtiova {\n \t\t\tlimit);\n }\n \n-int __rte_experimental\n+int\n rte_mem_alloc_validator_unregister(const char *name, int socket_id)\n {\n \t/* FreeBSD boots with legacy mem enabled by default */\n@@ -489,13 +489,13 @@ struct virtiova {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_mem_check_dma_mask(uint8_t maskbits)\n {\n \treturn check_dma_mask(maskbits, false);\n }\n \n-int __rte_experimental\n+int\n rte_mem_check_dma_mask_thread_unsafe(uint8_t maskbits)\n {\n \treturn check_dma_mask(maskbits, true);\n@@ -508,7 +508,7 @@ struct virtiova {\n  * initialization. PMDs should use rte_mem_check_dma_mask if addressing\n  * limitations by the device.\n  */\n-void __rte_experimental\n+void\n rte_mem_set_dma_mask(uint8_t maskbits)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -554,7 +554,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn mlock((void *)aligned, page_size);\n }\n \n-int __rte_experimental\n+int\n rte_memseg_contig_walk_thread_unsafe(rte_memseg_contig_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -593,7 +593,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_contig_walk(rte_memseg_contig_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -607,7 +607,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_walk_thread_unsafe(rte_memseg_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -635,7 +635,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_walk(rte_memseg_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -649,7 +649,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_list_walk_thread_unsafe(rte_memseg_list_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -668,7 +668,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_list_walk(rte_memseg_list_walk_t func, void *arg)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -682,7 +682,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -724,7 +724,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_get_fd(const struct rte_memseg *ms)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -737,7 +737,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,\n \t\tsize_t *offset)\n {\n@@ -780,7 +780,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_memseg_get_fd_offset(const struct rte_memseg *ms, size_t *offset)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -793,7 +793,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_extmem_register(void *va_addr, size_t len, rte_iova_t iova_addrs[],\n \t\tunsigned int n_pages, size_t page_sz)\n {\n@@ -842,7 +842,7 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_extmem_unregister(void *va_addr, size_t len)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\n@@ -899,13 +899,13 @@ unsigned rte_memory_get_nrank(void)\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_extmem_attach(void *va_addr, size_t len)\n {\n \treturn sync_memory(va_addr, len, true);\n }\n \n-int __rte_experimental\n+int\n rte_extmem_detach(void *va_addr, size_t len)\n {\n \treturn sync_memory(va_addr, len, false);\ndiff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c\nindex cfd571e..cbe8d10 100644\n--- a/lib/librte_eal/common/eal_common_proc.c\n+++ b/lib/librte_eal/common/eal_common_proc.c\n@@ -197,7 +197,7 @@ struct pending_request {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_mp_action_register(const char *name, rte_mp_t action)\n {\n \tstruct action_entry *entry;\n@@ -231,7 +231,7 @@ struct pending_request {\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_mp_action_unregister(const char *name)\n {\n \tstruct action_entry *entry;\n@@ -801,7 +801,7 @@ enum async_action {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_mp_sendmsg(struct rte_mp_msg *msg)\n {\n \tif (check_input(msg) != 0)\n@@ -948,7 +948,7 @@ enum async_action {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_mp_request_sync(struct rte_mp_msg *req, struct rte_mp_reply *reply,\n \t\tconst struct timespec *ts)\n {\n@@ -1044,7 +1044,7 @@ enum async_action {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_mp_request_async(struct rte_mp_msg *req, const struct timespec *ts,\n \t\trte_mp_async_reply_t clb)\n {\n@@ -1194,7 +1194,7 @@ enum async_action {\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_mp_reply(struct rte_mp_msg *msg, const char *peer)\n {\n \tRTE_LOG(DEBUG, EAL, \"reply: %s\\n\", msg->name);\ndiff --git a/lib/librte_eal/common/eal_common_timer.c b/lib/librte_eal/common/eal_common_timer.c\nindex 68d67e6..145543d 100644\n--- a/lib/librte_eal/common/eal_common_timer.c\n+++ b/lib/librte_eal/common/eal_common_timer.c\n@@ -33,7 +33,7 @@\n \t\trte_pause();\n }\n \n-void __rte_experimental\n+void\n rte_delay_us_sleep(unsigned int us)\n {\n \tstruct timespec wait[2];\ndiff --git a/lib/librte_eal/common/rte_malloc.c b/lib/librte_eal/common/rte_malloc.c\nindex 54792ea..b119eba 100644\n--- a/lib/librte_eal/common/rte_malloc.c\n+++ b/lib/librte_eal/common/rte_malloc.c\n@@ -196,7 +196,7 @@ void rte_free(void *addr)\n /*\n  * Function to dump contents of all heaps\n  */\n-void __rte_experimental\n+void\n rte_malloc_dump_heaps(FILE *f)\n {\n \tstruct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config;\ndiff --git a/lib/librte_eal/common/rte_option.c b/lib/librte_eal/common/rte_option.c\nindex fe7f2ab..6f8bd6e 100644\n--- a/lib/librte_eal/common/rte_option.c\n+++ b/lib/librte_eal/common/rte_option.c\n@@ -38,7 +38,6 @@ struct rte_option_list rte_option_list =\n \treturn -1;\n }\n \n-__rte_experimental\n int\n rte_option_register(struct rte_option *opt)\n {\ndiff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c\nindex 5f75e5a..c3653eb 100644\n--- a/lib/librte_eal/common/rte_service.c\n+++ b/lib/librte_eal/common/rte_service.c\n@@ -378,7 +378,7 @@ int32_t rte_service_init(void)\n \treturn 0;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_service_may_be_active(uint32_t id)\n {\n \tuint32_t ids[RTE_MAX_LCORE] = {0};\n@@ -754,7 +754,7 @@ int32_t rte_service_run_iter_on_app_lcore(uint32_t id,\n \t}\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_service_lcore_attr_get(uint32_t lcore, uint32_t attr_id,\n \t\t\t   uint64_t *attr_value)\n {\n@@ -814,7 +814,7 @@ int32_t rte_service_run_iter_on_app_lcore(uint32_t id,\n \treturn 0;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_service_lcore_attr_reset_all(uint32_t lcore)\n {\n \tstruct core_state *cs;\ndiff --git a/lib/librte_eal/freebsd/eal/eal.c b/lib/librte_eal/freebsd/eal/eal.c\nindex 97633a5..0938a52 100644\n--- a/lib/librte_eal/freebsd/eal/eal.c\n+++ b/lib/librte_eal/freebsd/eal/eal.c\n@@ -883,7 +883,7 @@ static void rte_eal_init_alert(const char *msg)\n \treturn fctret;\n }\n \n-int __rte_experimental\n+int\n rte_eal_cleanup(void)\n {\n \trte_service_finalize();\ndiff --git a/lib/librte_eal/freebsd/eal/eal_dev.c b/lib/librte_eal/freebsd/eal/eal_dev.c\nindex 255d611..8e06e70 100644\n--- a/lib/librte_eal/freebsd/eal/eal_dev.c\n+++ b/lib/librte_eal/freebsd/eal/eal_dev.c\n@@ -6,28 +6,28 @@\n #include <rte_compat.h>\n #include <rte_dev.h>\n \n-int __rte_experimental\n+int\n rte_dev_event_monitor_start(void)\n {\n \tRTE_LOG(ERR, EAL, \"Device event is not supported for FreeBSD\\n\");\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_dev_event_monitor_stop(void)\n {\n \tRTE_LOG(ERR, EAL, \"Device event is not supported for FreeBSD\\n\");\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_dev_hotplug_handle_enable(void)\n {\n \tRTE_LOG(ERR, EAL, \"Device event is not supported for FreeBSD\\n\");\n \treturn -1;\n }\n \n-int __rte_experimental\n+int\n rte_dev_hotplug_handle_disable(void)\n {\n \tRTE_LOG(ERR, EAL, \"Device event is not supported for FreeBSD\\n\");\ndiff --git a/lib/librte_eal/freebsd/eal/eal_interrupts.c b/lib/librte_eal/freebsd/eal/eal_interrupts.c\nindex 4a9aedd..10375bd 100644\n--- a/lib/librte_eal/freebsd/eal/eal_interrupts.c\n+++ b/lib/librte_eal/freebsd/eal/eal_interrupts.c\n@@ -193,7 +193,7 @@ struct rte_intr_source {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle,\n \t\t\t\trte_intr_callback_fn cb_fn, void *cb_arg,\n \t\t\t\trte_intr_unregister_callback_fn ucb_fn)\ndiff --git a/lib/librte_eal/linux/eal/eal_dev.c b/lib/librte_eal/linux/eal/eal_dev.c\nindex c418093..83c9cd6 100644\n--- a/lib/librte_eal/linux/eal/eal_dev.c\n+++ b/lib/librte_eal/linux/eal/eal_dev.c\n@@ -285,7 +285,7 @@ static int cmp_dev_name(const struct rte_device *dev,\n \trte_spinlock_unlock(&failure_handle_lock);\n }\n \n-int __rte_experimental\n+int\n rte_dev_event_monitor_start(void)\n {\n \tint ret;\n@@ -312,7 +312,7 @@ static int cmp_dev_name(const struct rte_device *dev,\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_dev_event_monitor_stop(void)\n {\n \tint ret;\n@@ -365,7 +365,7 @@ static int cmp_dev_name(const struct rte_device *dev,\n \treturn rte_errno;\n }\n \n-int __rte_experimental\n+int\n rte_dev_hotplug_handle_enable(void)\n {\n \tint ret = 0;\n@@ -380,7 +380,7 @@ static int cmp_dev_name(const struct rte_device *dev,\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_dev_hotplug_handle_disable(void)\n {\n \tint ret = 0;\ndiff --git a/lib/librte_eal/linux/eal/eal_interrupts.c b/lib/librte_eal/linux/eal/eal_interrupts.c\nindex be0dd44..79ad5e8 100644\n--- a/lib/librte_eal/linux/eal/eal_interrupts.c\n+++ b/lib/librte_eal/linux/eal/eal_interrupts.c\n@@ -522,7 +522,7 @@ struct rte_intr_source {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_intr_callback_unregister_pending(const struct rte_intr_handle *intr_handle,\n \t\t\t\trte_intr_callback_fn cb_fn, void *cb_arg,\n \t\t\t\trte_intr_unregister_callback_fn ucb_fn)\ndiff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c\nindex 8ac3016..31f02ec 100644\n--- a/lib/librte_ethdev/rte_ethdev.c\n+++ b/lib/librte_ethdev/rte_ethdev.c\n@@ -601,7 +601,7 @@ struct rte_eth_dev *\n \treturn port_id;\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_owner_new(uint64_t *owner_id)\n {\n \trte_eth_dev_shared_data_prepare();\n@@ -654,7 +654,7 @@ struct rte_eth_dev *\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_owner_set(const uint16_t port_id,\n \t\t      const struct rte_eth_dev_owner *owner)\n {\n@@ -670,7 +670,7 @@ struct rte_eth_dev *\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_owner_unset(const uint16_t port_id, const uint64_t owner_id)\n {\n \tconst struct rte_eth_dev_owner new_owner = (struct rte_eth_dev_owner)\n@@ -687,7 +687,7 @@ struct rte_eth_dev *\n \treturn ret;\n }\n \n-void __rte_experimental\n+void\n rte_eth_dev_owner_delete(const uint64_t owner_id)\n {\n \tuint16_t port_id;\n@@ -713,7 +713,7 @@ struct rte_eth_dev *\n \trte_spinlock_unlock(&rte_eth_dev_shared_data->ownership_lock);\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_owner_get(const uint16_t port_id, struct rte_eth_dev_owner *owner)\n {\n \tint ret = 0;\n@@ -1535,7 +1535,7 @@ struct rte_eth_dev *\n \treturn eth_err(port_id, ret);\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_is_removed(uint16_t port_id)\n {\n \tstruct rte_eth_dev *dev;\n@@ -3592,7 +3592,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id)\n {\n \tstruct rte_intr_handle *intr_handle;\n@@ -3654,7 +3654,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,\n \t\t\tRTE_MEMZONE_IOVA_CONTIG, align);\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_create(struct rte_device *device, const char *name,\n \tsize_t priv_data_size,\n \tethdev_bus_specific_init ethdev_bus_specific_init,\n@@ -3717,7 +3717,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,\n \treturn retval;\n }\n \n-int  __rte_experimental\n+int\n rte_eth_dev_destroy(struct rte_eth_dev *ethdev,\n \tethdev_uninit_t ethdev_uninit)\n {\n@@ -4238,7 +4238,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,\n \treturn eth_err(port_id, (*dev->dev_ops->set_eeprom)(dev, info));\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_get_module_info(uint16_t port_id,\n \t\t\t    struct rte_eth_dev_module_info *modinfo)\n {\n@@ -4251,7 +4251,7 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,\n \treturn (*dev->dev_ops->get_module_info)(dev, modinfo);\n }\n \n-int __rte_experimental\n+int\n rte_eth_dev_get_module_eeprom(uint16_t port_id,\n \t\t\t      struct rte_dev_eeprom_info *info)\n {\n@@ -4407,7 +4407,7 @@ enum rte_eth_switch_domain_state {\n \tenum rte_eth_switch_domain_state state;\n } rte_eth_switch_domains[RTE_MAX_ETHPORTS];\n \n-int __rte_experimental\n+int\n rte_eth_switch_domain_alloc(uint16_t *domain_id)\n {\n \tunsigned int i;\n@@ -4428,7 +4428,7 @@ enum rte_eth_switch_domain_state {\n \treturn -ENOSPC;\n }\n \n-int __rte_experimental\n+int\n rte_eth_switch_domain_free(uint16_t domain_id)\n {\n \tif (domain_id == RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID ||\n@@ -4508,7 +4508,7 @@ enum rte_eth_switch_domain_state {\n \t}\n }\n \n-int __rte_experimental\n+int\n rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_da)\n {\n \tstruct rte_kvargs args;\ndiff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c\nindex 3277be1..5c49522 100644\n--- a/lib/librte_ethdev/rte_flow.c\n+++ b/lib/librte_ethdev/rte_flow.c\n@@ -899,7 +899,7 @@ enum rte_flow_conv_item_spec_type {\n  * Expand RSS flows into several possible flows according to the RSS hash\n  * fields requested and the driver capabilities.\n  */\n-int __rte_experimental\n+int\n rte_flow_expand_rss(struct rte_flow_expand_rss *buf, size_t size,\n \t\t    const struct rte_flow_item *pattern, uint64_t types,\n \t\t    const struct rte_flow_expand_node graph[],\ndiff --git a/lib/librte_ethdev/rte_mtr.c b/lib/librte_ethdev/rte_mtr.c\nindex 12b8154..3073ac0 100644\n--- a/lib/librte_ethdev/rte_mtr.c\n+++ b/lib/librte_ethdev/rte_mtr.c\n@@ -58,7 +58,7 @@\n })\n \n /* MTR capabilities get */\n-int __rte_experimental\n+int\n rte_mtr_capabilities_get(uint16_t port_id,\n \tstruct rte_mtr_capabilities *cap,\n \tstruct rte_mtr_error *error)\n@@ -69,7 +69,7 @@\n }\n \n /* MTR meter profile add */\n-int __rte_experimental\n+int\n rte_mtr_meter_profile_add(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_meter_profile *profile,\n@@ -81,7 +81,7 @@\n }\n \n /** MTR meter profile delete */\n-int __rte_experimental\n+int\n rte_mtr_meter_profile_delete(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_error *error)\n@@ -92,7 +92,7 @@\n }\n \n /** MTR object create */\n-int __rte_experimental\n+int\n rte_mtr_create(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_params *params,\n@@ -105,7 +105,7 @@\n }\n \n /** MTR object destroy */\n-int __rte_experimental\n+int\n rte_mtr_destroy(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -116,7 +116,7 @@\n }\n \n /** MTR object meter enable */\n-int __rte_experimental\n+int\n rte_mtr_meter_enable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -127,7 +127,7 @@\n }\n \n /** MTR object meter disable */\n-int __rte_experimental\n+int\n rte_mtr_meter_disable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -138,7 +138,7 @@\n }\n \n /** MTR object meter profile update */\n-int __rte_experimental\n+int\n rte_mtr_meter_profile_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t meter_profile_id,\n@@ -150,7 +150,7 @@\n }\n \n /** MTR object meter DSCP table update */\n-int __rte_experimental\n+int\n rte_mtr_meter_dscp_table_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tenum rte_color *dscp_table,\n@@ -162,7 +162,7 @@\n }\n \n /** MTR object policer action update */\n-int __rte_experimental\n+int\n rte_mtr_policer_actions_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t action_mask,\n@@ -175,7 +175,7 @@\n }\n \n /** MTR object enabled stats update */\n-int __rte_experimental\n+int\n rte_mtr_stats_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint64_t stats_mask,\n@@ -187,7 +187,7 @@\n }\n \n /** MTR object stats read */\n-int __rte_experimental\n+int\n rte_mtr_stats_read(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_stats *stats,\ndiff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c\nindex a97d198..dd251cc 100644\n--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c\n+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c\n@@ -2297,7 +2297,7 @@ static int rxa_sw_add(struct rte_event_eth_rx_adapter *rx_adapter,\n \treturn rxa_ctrl(id, 0);\n }\n \n-int __rte_experimental\n+int\n rte_event_eth_rx_adapter_stats_get(uint8_t id,\n \t\t\t       struct rte_event_eth_rx_adapter_stats *stats)\n {\n@@ -2384,7 +2384,7 @@ static int rxa_sw_add(struct rte_event_eth_rx_adapter *rx_adapter,\n \treturn rx_adapter->service_inited ? 0 : -ESRCH;\n }\n \n-int __rte_experimental\n+int\n rte_event_eth_rx_adapter_cb_register(uint8_t id,\n \t\t\t\t\tuint16_t eth_dev_id,\n \t\t\t\t\trte_event_eth_rx_adapter_cb_fn cb_fn,\ndiff --git a/lib/librte_flow_classify/rte_flow_classify.c b/lib/librte_flow_classify/rte_flow_classify.c\nindex 24f7f7a..5ff5858 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.c\n+++ b/lib/librte_flow_classify/rte_flow_classify.c\n@@ -89,7 +89,7 @@ struct rte_flow_classify_rule {\n \tvoid *entry_ptr; /* handle to the table entry for rule meta data */\n };\n \n-int __rte_experimental\n+int\n rte_flow_classify_validate(\n \t\t   struct rte_flow_classifier *cls,\n \t\t   const struct rte_flow_attr *attr,\n@@ -258,7 +258,7 @@ struct rte_flow_classify_rule {\n \treturn 0;\n }\n \n-struct rte_flow_classifier * __rte_experimental\n+struct rte_flow_classifier *\n rte_flow_classifier_create(struct rte_flow_classifier_params *params)\n {\n \tstruct rte_flow_classifier *cls;\n@@ -300,7 +300,7 @@ struct rte_flow_classifier * __rte_experimental\n \t\ttable->ops.f_free(table->h_table);\n }\n \n-int __rte_experimental\n+int\n rte_flow_classifier_free(struct rte_flow_classifier *cls)\n {\n \tuint32_t i;\n@@ -372,7 +372,7 @@ struct rte_flow_classifier * __rte_experimental\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_flow_classify_table_create(struct rte_flow_classifier *cls,\n \tstruct rte_flow_classify_table_params *params)\n {\n@@ -482,7 +482,7 @@ struct rte_flow_classifier * __rte_experimental\n \treturn rule;\n }\n \n-struct rte_flow_classify_rule * __rte_experimental\n+struct rte_flow_classify_rule *\n rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,\n \t\tconst struct rte_flow_attr *attr,\n \t\tconst struct rte_flow_item pattern[],\n@@ -564,7 +564,7 @@ struct rte_flow_classify_rule * __rte_experimental\n \treturn NULL;\n }\n \n-int __rte_experimental\n+int\n rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls,\n \t\tstruct rte_flow_classify_rule *rule)\n {\n@@ -642,7 +642,7 @@ struct rte_flow_classify_rule * __rte_experimental\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_flow_classifier_query(struct rte_flow_classifier *cls,\n \t\tstruct rte_mbuf **pkts,\n \t\tconst uint16_t nb_pkts,\ndiff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c\nindex 953928f..51198b4 100644\n--- a/lib/librte_hash/rte_cuckoo_hash.c\n+++ b/lib/librte_hash/rte_cuckoo_hash.c\n@@ -1583,7 +1583,7 @@ struct rte_hash *\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_hash_free_key_with_position(const struct rte_hash *h,\n \t\t\t\tconst int32_t position)\n {\ndiff --git a/lib/librte_ip_frag/rte_ip_frag_common.c b/lib/librte_ip_frag/rte_ip_frag_common.c\nindex a23f6f2..6b29e9d 100644\n--- a/lib/librte_ip_frag/rte_ip_frag_common.c\n+++ b/lib/librte_ip_frag/rte_ip_frag_common.c\n@@ -123,7 +123,7 @@ struct rte_ip_frag_tbl *\n }\n \n /* Delete expired fragments */\n-void __rte_experimental\n+void\n rte_frag_table_del_expired_entries(struct rte_ip_frag_tbl *tbl,\n \tstruct rte_ip_frag_death_row *dr, uint64_t tms)\n {\ndiff --git a/lib/librte_ipsec/sa.c b/lib/librte_ipsec/sa.c\nindex 1cb71ca..81e3437 100644\n--- a/lib/librte_ipsec/sa.c\n+++ b/lib/librte_ipsec/sa.c\n@@ -77,7 +77,7 @@ struct crypto_xform {\n \treturn 0;\n }\n \n-uint64_t __rte_experimental\n+uint64_t\n rte_ipsec_sa_type(const struct rte_ipsec_sa *sa)\n {\n \treturn sa->type;\n@@ -149,7 +149,7 @@ struct crypto_xform {\n \treturn sz;\n }\n \n-void __rte_experimental\n+void\n rte_ipsec_sa_fini(struct rte_ipsec_sa *sa)\n {\n \tmemset(sa, 0, sa->size);\n@@ -405,7 +405,7 @@ struct crypto_xform {\n \t\t\t((uintptr_t)sa->sqn.inb.rsn[0] + rsn_size(nb_bucket));\n }\n \n-int __rte_experimental\n+int\n rte_ipsec_sa_size(const struct rte_ipsec_sa_prm *prm)\n {\n \tuint64_t type;\n@@ -425,7 +425,7 @@ struct crypto_xform {\n \treturn ipsec_sa_size(type, &wsz, &nb);\n }\n \n-int __rte_experimental\n+int\n rte_ipsec_sa_init(struct rte_ipsec_sa *sa, const struct rte_ipsec_sa_prm *prm,\n \tuint32_t size)\n {\ndiff --git a/lib/librte_ipsec/ses.c b/lib/librte_ipsec/ses.c\nindex 1158097..82c765a 100644\n--- a/lib/librte_ipsec/ses.c\n+++ b/lib/librte_ipsec/ses.c\n@@ -27,7 +27,7 @@\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_ipsec_session_prepare(struct rte_ipsec_session *ss)\n {\n \tint32_t rc;\ndiff --git a/lib/librte_kni/rte_kni.c b/lib/librte_kni/rte_kni.c\nindex e29d0cc..00104a3 100644\n--- a/lib/librte_kni/rte_kni.c\n+++ b/lib/librte_kni/rte_kni.c\n@@ -709,7 +709,7 @@ struct rte_kni *\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_kni_update_link(struct rte_kni *kni, unsigned int linkup)\n {\n \tchar path[64];\ndiff --git a/lib/librte_kvargs/rte_kvargs.c b/lib/librte_kvargs/rte_kvargs.c\nindex f7030c6..d393329 100644\n--- a/lib/librte_kvargs/rte_kvargs.c\n+++ b/lib/librte_kvargs/rte_kvargs.c\n@@ -186,7 +186,6 @@ struct rte_kvargs *\n \treturn kvlist;\n }\n \n-__rte_experimental\n struct rte_kvargs *\n rte_kvargs_parse_delim(const char *args, const char * const valid_keys[],\n \t\t       const char *valid_ends)\n@@ -211,7 +210,6 @@ struct rte_kvargs *\n \treturn kvlist;\n }\n \n-__rte_experimental\n int\n rte_kvargs_strcmp(const char *key __rte_unused,\n \t\t  const char *value, void *opaque)\ndiff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c\nindex 21f6f74..37718d4 100644\n--- a/lib/librte_mbuf/rte_mbuf.c\n+++ b/lib/librte_mbuf/rte_mbuf.c\n@@ -177,7 +177,6 @@ struct rte_mempool *\n \t\trte_panic(\"%s\\n\", reason);\n }\n \n-__rte_experimental\n int rte_mbuf_check(const struct rte_mbuf *m, int is_header,\n \t\t   const char **reason)\n {\ndiff --git a/lib/librte_meter/rte_meter.c b/lib/librte_meter/rte_meter.c\nindex 4567944..da01429 100644\n--- a/lib/librte_meter/rte_meter.c\n+++ b/lib/librte_meter/rte_meter.c\n@@ -119,7 +119,7 @@\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_meter_trtcm_rfc4115_profile_config(\n \tstruct rte_meter_trtcm_rfc4115_profile *p,\n \tstruct rte_meter_trtcm_rfc4115_params *params)\n@@ -144,7 +144,7 @@\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_meter_trtcm_rfc4115_config(\n \tstruct rte_meter_trtcm_rfc4115 *m,\n \tstruct rte_meter_trtcm_rfc4115_profile *p)\ndiff --git a/lib/librte_net/rte_arp.c b/lib/librte_net/rte_arp.c\nindex cfd6e03..784b7f4 100644\n--- a/lib/librte_net/rte_arp.c\n+++ b/lib/librte_net/rte_arp.c\n@@ -7,7 +7,7 @@\n #include <rte_arp.h>\n \n #define RARP_PKT_SIZE\t64\n-struct rte_mbuf * __rte_experimental\n+struct rte_mbuf *\n rte_net_make_rarp_packet(struct rte_mempool *mpool,\n \t\tconst struct rte_ether_addr *mac)\n {\ndiff --git a/lib/librte_net/rte_net.c b/lib/librte_net/rte_net.c\nindex 6515909..dfccbbf 100644\n--- a/lib/librte_net/rte_net.c\n+++ b/lib/librte_net/rte_net.c\n@@ -179,7 +179,7 @@\n }\n \n /* parse ipv6 extended headers, update offset and return next proto */\n-int __rte_experimental\n+int\n rte_net_skip_ip6_ext(uint16_t proto, const struct rte_mbuf *m, uint32_t *off,\n \tint *frag)\n {\ndiff --git a/lib/librte_power/rte_power_empty_poll.c b/lib/librte_power/rte_power_empty_poll.c\nindex 15d4f05..0a8024d 100644\n--- a/lib/librte_power/rte_power_empty_poll.c\n+++ b/lib/librte_power/rte_power_empty_poll.c\n@@ -361,7 +361,7 @@ static inline void  __attribute__((always_inline))\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_empty_poll_detection(struct rte_timer *tim, void *arg)\n {\n \n@@ -402,7 +402,7 @@ static inline void  __attribute__((always_inline))\n \n }\n \n-int __rte_experimental\n+int\n rte_power_empty_poll_stat_init(struct ep_params **eptr, uint8_t *freq_tlb,\n \t\tstruct ep_policy *policy)\n {\n@@ -461,7 +461,7 @@ static inline void  __attribute__((always_inline))\n \treturn 0;\n }\n \n-void __rte_experimental\n+void\n rte_power_empty_poll_stat_free(void)\n {\n \n@@ -471,7 +471,7 @@ static inline void  __attribute__((always_inline))\n \t\trte_free(ep_params);\n }\n \n-int __rte_experimental\n+int\n rte_power_empty_poll_stat_update(unsigned int lcore_id)\n {\n \tstruct priority_worker *poll_stats;\n@@ -489,7 +489,7 @@ static inline void  __attribute__((always_inline))\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_power_poll_stat_update(unsigned int lcore_id, uint8_t nb_pkt)\n {\n \n@@ -509,7 +509,7 @@ static inline void  __attribute__((always_inline))\n }\n \n \n-uint64_t __rte_experimental\n+uint64_t\n rte_power_empty_poll_stat_fetch(unsigned int lcore_id)\n {\n \tstruct priority_worker *poll_stats;\n@@ -525,7 +525,7 @@ static inline void  __attribute__((always_inline))\n \treturn poll_stats->empty_dequeues;\n }\n \n-uint64_t __rte_experimental\n+uint64_t\n rte_power_poll_stat_fetch(unsigned int lcore_id)\n {\n \tstruct priority_worker *poll_stats;\ndiff --git a/lib/librte_rcu/rte_rcu_qsbr.c b/lib/librte_rcu/rte_rcu_qsbr.c\nindex de25464..ce7f93d 100644\n--- a/lib/librte_rcu/rte_rcu_qsbr.c\n+++ b/lib/librte_rcu/rte_rcu_qsbr.c\n@@ -23,7 +23,7 @@\n #include \"rte_rcu_qsbr.h\"\n \n /* Get the memory size of QSBR variable */\n-size_t __rte_experimental\n+size_t\n rte_rcu_qsbr_get_memsize(uint32_t max_threads)\n {\n \tsize_t sz;\n@@ -49,7 +49,7 @@\n }\n \n /* Initialize a quiescent state variable */\n-int __rte_experimental\n+int\n rte_rcu_qsbr_init(struct rte_rcu_qsbr *v, uint32_t max_threads)\n {\n \tsize_t sz;\n@@ -80,7 +80,7 @@\n /* Register a reader thread to report its quiescent state\n  * on a QS variable.\n  */\n-int __rte_experimental\n+int\n rte_rcu_qsbr_thread_register(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n \tunsigned int i, id, success;\n@@ -132,7 +132,7 @@\n /* Remove a reader thread, from the list of threads reporting their\n  * quiescent state on a QS variable.\n  */\n-int __rte_experimental\n+int\n rte_rcu_qsbr_thread_unregister(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n \tunsigned int i, id, success;\n@@ -186,7 +186,7 @@\n }\n \n /* Wait till the reader threads have entered quiescent state. */\n-void __rte_experimental\n+void\n rte_rcu_qsbr_synchronize(struct rte_rcu_qsbr *v, unsigned int thread_id)\n {\n \tuint64_t t;\n@@ -206,7 +206,7 @@\n }\n \n /* Dump the details of a single quiescent state variable to a file. */\n-int __rte_experimental\n+int\n rte_rcu_qsbr_dump(FILE *f, struct rte_rcu_qsbr *v)\n {\n \tuint64_t bmap;\ndiff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c\nindex a60ddf9..bc06bc3 100644\n--- a/lib/librte_sched/rte_sched.c\n+++ b/lib/librte_sched/rte_sched.c\n@@ -953,7 +953,7 @@ struct rte_sched_port *\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_sched_port_pipe_profile_add(struct rte_sched_port *port,\n \tstruct rte_sched_pipe_params *params,\n \tuint32_t *pipe_profile_id)\ndiff --git a/lib/librte_security/rte_security.c b/lib/librte_security/rte_security.c\nindex a222b33..bc81ce1 100644\n--- a/lib/librte_security/rte_security.c\n+++ b/lib/librte_security/rte_security.c\n@@ -33,7 +33,7 @@ struct rte_security_session *\n \treturn sess;\n }\n \n-int __rte_experimental\n+int\n rte_security_session_update(struct rte_security_ctx *instance,\n \t\t\t    struct rte_security_session *sess,\n \t\t\t    struct rte_security_session_conf *conf)\n@@ -49,7 +49,7 @@ struct rte_security_session *\n \treturn instance->ops->session_get_size(instance->device);\n }\n \n-int __rte_experimental\n+int\n rte_security_session_stats_get(struct rte_security_ctx *instance,\n \t\t\t       struct rte_security_session *sess,\n \t\t\t       struct rte_security_stats *stats)\n@@ -86,7 +86,7 @@ struct rte_security_session *\n \t\t\t\t\t       sess, m, params);\n }\n \n-void * __rte_experimental\n+void *\n rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md)\n {\n \tvoid *userdata = NULL;\ndiff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c\nindex a4b82c9..33e9820 100644\n--- a/lib/librte_telemetry/rte_telemetry.c\n+++ b/lib/librte_telemetry/rte_telemetry.c\n@@ -970,7 +970,7 @@ struct json_data {\n \treturn -1;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_telemetry_init()\n {\n \tint ret;\n@@ -1038,7 +1038,7 @@ struct json_data {\n \treturn 0;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_telemetry_cleanup(void)\n {\n \tint ret;\n@@ -1284,7 +1284,7 @@ struct json_data {\n \treturn sockfd;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_telemetry_selftest(void)\n {\n \tconst char *invalid_client_path = SELFTEST_INVALID_CLIENT;\ndiff --git a/lib/librte_telemetry/rte_telemetry_parser.c b/lib/librte_telemetry/rte_telemetry_parser.c\nindex e76382a..f0cd14b 100644\n--- a/lib/librte_telemetry/rte_telemetry_parser.c\n+++ b/lib/librte_telemetry/rte_telemetry_parser.c\n@@ -605,7 +605,7 @@ struct rte_telemetry_command {\n \treturn -1;\n }\n \n-int32_t __rte_experimental\n+int32_t\n rte_telemetry_parse(struct telemetry_impl *telemetry, char *socket_rx_data)\n {\n \tint ret, action_int;\ndiff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c\nindex dd79539..eaeafd7 100644\n--- a/lib/librte_timer/rte_timer.c\n+++ b/lib/librte_timer/rte_timer.c\n@@ -92,7 +92,7 @@ struct rte_timer_data {\n \ttimer_data = &rte_timer_data_arr[id];\t\t\t\t\\\n } while (0)\n \n-int __rte_experimental\n+int\n rte_timer_data_alloc(uint32_t *id_ptr)\n {\n \tint i;\n@@ -116,7 +116,7 @@ struct rte_timer_data {\n \treturn -ENOSPC;\n }\n \n-int __rte_experimental\n+int\n rte_timer_data_dealloc(uint32_t id)\n {\n \tstruct rte_timer_data *timer_data;\n@@ -204,7 +204,7 @@ struct rte_timer_data {\n \t\t  rte_timer_subsystem_init_v1905);\n BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);\n \n-void __rte_experimental\n+void\n rte_timer_subsystem_finalize(void)\n {\n \tif (!rte_timer_subsystem_initialized)\n@@ -573,7 +573,7 @@ struct rte_timer_data {\n \t\t  rte_timer_reset_v1905);\n BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);\n \n-int __rte_experimental\n+int\n rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,\n \t\t    uint64_t ticks, enum rte_timer_type type,\n \t\t    unsigned int tim_lcore, rte_timer_cb_t fct, void *arg)\n@@ -657,7 +657,7 @@ struct rte_timer_data {\n \t\t  rte_timer_stop_v1905);\n BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);\n \n-int __rte_experimental\n+int\n rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)\n {\n \tstruct rte_timer_data *timer_data;\n@@ -822,7 +822,7 @@ struct rte_timer_data {\n MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);\n BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);\n \n-int __rte_experimental\n+int\n rte_timer_alt_manage(uint32_t timer_data_id,\n \t\t     unsigned int *poll_lcores,\n \t\t     int nb_poll_lcores,\n@@ -995,7 +995,7 @@ struct rte_timer_data {\n }\n \n /* Walk pending lists, stopping timers and calling user-specified function */\n-int __rte_experimental\n+int\n rte_timer_stop_all(uint32_t timer_data_id, unsigned int *walk_lcores,\n \t\t   int nb_walk_lcores,\n \t\t   rte_timer_stop_all_cb_t f, void *f_arg)\n@@ -1074,7 +1074,7 @@ struct rte_timer_data {\n \t\t  rte_timer_dump_stats_v1905);\n BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);\n \n-int __rte_experimental\n+int\n rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)\n {\n \tstruct rte_timer_data *timer_data;\ndiff --git a/lib/librte_vhost/vdpa.c b/lib/librte_vhost/vdpa.c\nindex 24a6698..8e45ce9 100644\n--- a/lib/librte_vhost/vdpa.c\n+++ b/lib/librte_vhost/vdpa.c\n@@ -126,7 +126,7 @@ struct rte_vdpa_device *\n \treturn vdpa_device_num;\n }\n \n-int __rte_experimental\n+int\n rte_vdpa_relay_vring_used(int vid, uint16_t qid, void *vring_m)\n {\n \tstruct virtio_net *dev = get_device(vid);\ndiff --git a/lib/librte_vhost/vhost_crypto.c b/lib/librte_vhost/vhost_crypto.c\nindex 8652a77..684fddc 100644\n--- a/lib/librte_vhost/vhost_crypto.c\n+++ b/lib/librte_vhost/vhost_crypto.c\n@@ -1347,7 +1347,7 @@ struct vhost_crypto_data_req {\n \treturn processed;\n }\n \n-int __rte_experimental\n+int\n rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,\n \t\tstruct rte_mempool *sess_pool,\n \t\tstruct rte_mempool *sess_priv_pool,\n@@ -1440,7 +1440,7 @@ struct vhost_crypto_data_req {\n \treturn ret;\n }\n \n-int __rte_experimental\n+int\n rte_vhost_crypto_free(int vid)\n {\n \tstruct virtio_net *dev = get_device(vid);\n@@ -1469,7 +1469,7 @@ struct vhost_crypto_data_req {\n \treturn 0;\n }\n \n-int __rte_experimental\n+int\n rte_vhost_crypto_set_zero_copy(int vid, enum rte_vhost_crypto_zero_copy option)\n {\n \tstruct virtio_net *dev = get_device(vid);\n@@ -1524,7 +1524,7 @@ struct vhost_crypto_data_req {\n \treturn 0;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_vhost_crypto_fetch_requests(int vid, uint32_t qid,\n \t\tstruct rte_crypto_op **ops, uint16_t nb_ops)\n {\n@@ -1634,7 +1634,7 @@ struct vhost_crypto_data_req {\n \treturn i;\n }\n \n-uint16_t __rte_experimental\n+uint16_t\n rte_vhost_crypto_finalize_requests(struct rte_crypto_op **ops,\n \t\tuint16_t nb_ops, int *callfds, uint16_t *nb_callfds)\n {\n",
    "prefixes": [
        "8/9"
    ]
}