get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 34207,
    "url": "http://patches.dpdk.org/api/patches/34207/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180122014807.24654-5-nhorman@tuxdriver.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": "<20180122014807.24654-5-nhorman@tuxdriver.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180122014807.24654-5-nhorman@tuxdriver.com",
    "date": "2018-01-22T01:48:06",
    "name": "[dpdk-dev,[PATCH,v5] 4/5] dpdk: add __rte_experimental tag to appropriate api calls",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "173fdeda21224afdaa3e2b4fa8213d62a66fc37a",
    "submitter": {
        "id": 32,
        "url": "http://patches.dpdk.org/api/people/32/?format=api",
        "name": "Neil Horman",
        "email": "nhorman@tuxdriver.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180122014807.24654-5-nhorman@tuxdriver.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/34207/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/34207/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 2C51E1B1AF;\n\tMon, 22 Jan 2018 02:49:09 +0100 (CET)",
            "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 318B5A495\n\tfor <dev@dpdk.org>; Mon, 22 Jan 2018 02:49:06 +0100 (CET)",
            "from cpe-2606-a000-111b-4011-eaa3-4b92-4a68-8f24.dyn6.twc.com\n\t([2606:a000:111b:4011:eaa3:4b92:4a68:8f24]\n\thelo=hmswarspite.think-freely.org)\n\tby smtp.tuxdriver.com with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.63)\n\t(envelope-from <nhorman@tuxdriver.com>)\n\tid 1edRE5-00068A-HX; Sun, 21 Jan 2018 20:49:04 -0500",
            "from hmswarspite.think-freely.org (localhost [127.0.0.1])\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2) with ESMTP id\n\tw0M1mDcK024815; Sun, 21 Jan 2018 20:48:13 -0500",
            "(from nhorman@localhost)\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2/Submit) id\n\tw0M1mDVD024814; Sun, 21 Jan 2018 20:48:13 -0500"
        ],
        "From": "Neil Horman <nhorman@tuxdriver.com>",
        "To": "dev@dpdk.org",
        "Cc": "Neil Horman <nhorman@tuxdriver.com>,\n\tThomas Monjalon <thomas@monjalon.net>, \n\t\"Mcnamara, John\" <john.mcnamara@intel.com>,\n\tBruce Richardson <bruce.richardson@intel.com>",
        "Date": "Sun, 21 Jan 2018 20:48:06 -0500",
        "Message-Id": "<20180122014807.24654-5-nhorman@tuxdriver.com>",
        "X-Mailer": "git-send-email 2.14.3",
        "In-Reply-To": "<20180122014807.24654-1-nhorman@tuxdriver.com>",
        "References": "<20171201185628.16261-1-nhorman@tuxdriver.com>\n\t<20180122014807.24654-1-nhorman@tuxdriver.com>",
        "X-Spam-Score": "-2.9 (--)",
        "X-Spam-Status": "No",
        "Subject": "[dpdk-dev] [[PATCH v5] 4/5] dpdk: add __rte_experimental tag to\n\tappropriate api calls",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Append the __rte_experimental tag to api calls appearing in the EXPERIMENTAL\nsection of their libraries version map\n\nSigned-off-by: Neil Horman <nhorman@tuxdriver.com>\nCC: Thomas Monjalon <thomas@monjalon.net>\nCC: \"Mcnamara, John\" <john.mcnamara@intel.com>\nCC: Bruce Richardson <bruce.richardson@intel.com>\n---\n lib/librte_eal/common/eal_common_dev.c             |  6 ++-\n lib/librte_eal/common/eal_common_devargs.c         |  7 +--\n lib/librte_eal/common/include/rte_dev.h            |  6 ++-\n lib/librte_eal/common/include/rte_devargs.h        |  8 ++--\n lib/librte_eal/common/include/rte_service.h        | 47 ++++++++++---------\n .../common/include/rte_service_component.h         | 14 +++---\n lib/librte_eal/common/rte_service.c                | 52 ++++++++++++----------\n lib/librte_eal/linuxapp/eal/eal.c                  |  1 +\n lib/librte_ether/rte_mtr.c                         | 25 ++++++-----\n lib/librte_ether/rte_mtr.h                         | 26 +++++------\n lib/librte_flow_classify/rte_flow_classify.c       | 13 +++---\n lib/librte_flow_classify/rte_flow_classify.h       | 11 ++---\n lib/librte_security/rte_security.c                 | 16 +++----\n lib/librte_security/rte_security.h                 | 23 +++++-----\n 14 files changed, 139 insertions(+), 116 deletions(-)",
    "diff": "diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c\nindex dda8f5835..0de1c5d62 100644\n--- a/lib/librte_eal/common/eal_common_dev.c\n+++ b/lib/librte_eal/common/eal_common_dev.c\n@@ -37,6 +37,7 @@\n #include <inttypes.h>\n #include <sys/queue.h>\n \n+#include <rte_compat.h>\n #include <rte_bus.h>\n #include <rte_dev.h>\n #include <rte_devargs.h>\n@@ -133,7 +134,7 @@ full_dev_name(const char *bus, const char *dev, const char *args)\n \treturn name;\n }\n \n-int rte_eal_hotplug_add(const char *busname, const char *devname,\n+int __rte_experimental rte_eal_hotplug_add(const char *busname, const char *devname,\n \t\t\tconst char *devargs)\n {\n \tstruct rte_bus *bus;\n@@ -203,7 +204,8 @@ int rte_eal_hotplug_add(const char *busname, const char *devname,\n \treturn ret;\n }\n \n-int rte_eal_hotplug_remove(const char *busname, const char *devname)\n+int __rte_experimental\n+rte_eal_hotplug_remove(const char *busname, const char *devname)\n {\n \tstruct rte_bus *bus;\n \tstruct rte_device *dev;\ndiff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c\nindex 6ac88d6ab..3db07ee99 100644\n--- a/lib/librte_eal/common/eal_common_devargs.c\n+++ b/lib/librte_eal/common/eal_common_devargs.c\n@@ -40,6 +40,7 @@\n #include <stdio.h>\n #include <string.h>\n \n+#include <rte_compat.h>\n #include <rte_dev.h>\n #include <rte_devargs.h>\n #include <rte_tailq.h>\n@@ -85,7 +86,7 @@ bus_name_cmp(const struct rte_bus *bus, const void *name)\n \treturn strncmp(bus->name, name, strlen(bus->name));\n }\n \n-int\n+int __rte_experimental\n rte_eal_devargs_parse(const char *dev, struct rte_devargs *da)\n {\n \tstruct rte_bus *bus = NULL;\n@@ -139,7 +140,7 @@ rte_eal_devargs_parse(const char *dev, struct rte_devargs *da)\n \treturn 0;\n }\n \n-int\n+int __rte_experimental\n rte_eal_devargs_insert(struct rte_devargs *da)\n {\n \tint ret;\n@@ -188,7 +189,7 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)\n \treturn -1;\n }\n \n-int\n+int __rte_experimental\n rte_eal_devargs_remove(const char *busname, const char *devname)\n {\n \tstruct rte_devargs *d;\ndiff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h\nindex 9342e0cbd..9fee224f2 100644\n--- a/lib/librte_eal/common/include/rte_dev.h\n+++ b/lib/librte_eal/common/include/rte_dev.h\n@@ -49,6 +49,7 @@ extern \"C\" {\n #include <stdio.h>\n #include <sys/queue.h>\n \n+#include <rte_compat.h>\n #include <rte_log.h>\n \n __attribute__((format(printf, 2, 0)))\n@@ -209,7 +210,7 @@ int rte_eal_dev_detach(struct rte_device *dev);\n  * @return\n  *   0 on success, negative on error.\n  */\n-int rte_eal_hotplug_add(const char *busname, const char *devname,\n+int __rte_experimental rte_eal_hotplug_add(const char *busname, const char *devname,\n \t\t\tconst char *devargs);\n \n /**\n@@ -225,7 +226,8 @@ int rte_eal_hotplug_add(const char *busname, const char *devname,\n  * @return\n  *   0 on success, negative on error.\n  */\n-int rte_eal_hotplug_remove(const char *busname, const char *devname);\n+int __rte_experimental rte_eal_hotplug_remove(const char *busname,\n+\t\t\t\t\t  const char *devname);\n \n /**\n  * Device comparison function.\ndiff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h\nindex 58d585df6..e7579f82a 100644\n--- a/lib/librte_eal/common/include/rte_devargs.h\n+++ b/lib/librte_eal/common/include/rte_devargs.h\n@@ -50,6 +50,7 @@ extern \"C\" {\n \n #include <stdio.h>\n #include <sys/queue.h>\n+#include <rte_compat.h>\n #include <rte_bus.h>\n \n /**\n@@ -136,7 +137,7 @@ int rte_eal_parse_devargs_str(const char *devargs_str,\n  *   - 0 on success.\n  *   - Negative errno on error.\n  */\n-int\n+int __rte_experimental\n rte_eal_devargs_parse(const char *dev,\n \t\t      struct rte_devargs *da);\n \n@@ -150,7 +151,7 @@ rte_eal_devargs_parse(const char *dev,\n  *   - 0 on success\n  *   - Negative on error.\n  */\n-int\n+int __rte_experimental\n rte_eal_devargs_insert(struct rte_devargs *da);\n \n /**\n@@ -193,7 +194,8 @@ int rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str);\n  *   <0 on error.\n  *   >0 if the devargs was not within the user device list.\n  */\n-int rte_eal_devargs_remove(const char *busname, const char *devname);\n+int __rte_experimental rte_eal_devargs_remove(const char *busname,\n+\t\t\t\t\t  const char *devname);\n \n /**\n  * Count the number of user devices of a specified type\ndiff --git a/lib/librte_eal/common/include/rte_service.h b/lib/librte_eal/common/include/rte_service.h\nindex 5a763831e..ed95d025d 100644\n--- a/lib/librte_eal/common/include/rte_service.h\n+++ b/lib/librte_eal/common/include/rte_service.h\n@@ -56,7 +56,7 @@ extern \"C\" {\n  *\n  * @return The number of services registered.\n  */\n-uint32_t rte_service_get_count(void);\n+uint32_t __rte_experimental rte_service_get_count(void);\n \n /**\n  * @warning\n@@ -83,7 +83,8 @@ uint32_t rte_service_get_count(void);\n  * @retval -EINVAL Null *service_id* pointer provided\n  * @retval -ENODEV No such service registered\n  */\n-int32_t rte_service_get_by_name(const char *name, uint32_t *service_id);\n+int32_t __rte_experimental rte_service_get_by_name(const char *name,\n+\t\t\t\t\t       uint32_t *service_id);\n \n /**\n  * @warning\n@@ -94,7 +95,7 @@ int32_t rte_service_get_by_name(const char *name, uint32_t *service_id);\n  * @return A pointer to the name of the service. The returned pointer remains\n  *         in ownership of the service, and the application must not free it.\n  */\n-const char *rte_service_get_name(uint32_t id);\n+const char __rte_experimental *rte_service_get_name(uint32_t id);\n \n /**\n  * @warning\n@@ -107,7 +108,8 @@ const char *rte_service_get_name(uint32_t id);\n  * @retval 1 Capability supported by this service instance\n  * @retval 0 Capability not supported by this service instance\n  */\n-int32_t rte_service_probe_capability(uint32_t id, uint32_t capability);\n+int32_t __rte_experimental rte_service_probe_capability(uint32_t id,\n+\t\t\t\t\t\t    uint32_t capability);\n \n /**\n  * @warning\n@@ -131,8 +133,8 @@ int32_t rte_service_probe_capability(uint32_t id, uint32_t capability);\n  * @retval 0 lcore map updated successfully\n  * @retval -EINVAL An invalid service or lcore was provided.\n  */\n-int32_t rte_service_map_lcore_set(uint32_t service_id, uint32_t lcore,\n-\t\t\t\t  uint32_t enable);\n+int32_t __rte_experimental rte_service_map_lcore_set(uint32_t service_id,\n+\t\t\t\t  uint32_t lcore, uint32_t enable);\n \n /**\n  * @warning\n@@ -147,7 +149,8 @@ int32_t rte_service_map_lcore_set(uint32_t service_id, uint32_t lcore,\n  * @retval 0 lcore is not mapped to service\n  * @retval -EINVAL An invalid service or lcore was provided.\n  */\n-int32_t rte_service_map_lcore_get(uint32_t service_id, uint32_t lcore);\n+int32_t __rte_experimental rte_service_map_lcore_get(uint32_t service_id,\n+\t\t\t\t\t\t uint32_t lcore);\n \n /**\n  * @warning\n@@ -164,7 +167,7 @@ int32_t rte_service_map_lcore_get(uint32_t service_id, uint32_t lcore);\n  * @retval 0 The service was successfully started\n  * @retval -EINVAL Invalid service id\n  */\n-int32_t rte_service_runstate_set(uint32_t id, uint32_t runstate);\n+int32_t __rte_experimental rte_service_runstate_set(uint32_t id, uint32_t runstate);\n \n /**\n  * @warning\n@@ -182,7 +185,7 @@ int32_t rte_service_runstate_set(uint32_t id, uint32_t runstate);\n  * @retval 0 Service is stopped\n  * @retval -EINVAL Invalid service id\n  */\n-int32_t rte_service_runstate_get(uint32_t id);\n+int32_t __rte_experimental rte_service_runstate_get(uint32_t id);\n \n /**\n  * @warning\n@@ -198,7 +201,8 @@ int32_t rte_service_runstate_get(uint32_t id);\n  * @retval 0 Success\n  * @retval -EINVAL Invalid service ID\n  */\n-int32_t rte_service_set_runstate_mapped_check(uint32_t id, int32_t enable);\n+int32_t __rte_experimental rte_service_set_runstate_mapped_check(uint32_t id,\n+\t\t\t\t\t\t\t     int32_t enable);\n \n /**\n  * @warning\n@@ -236,7 +240,7 @@ int32_t rte_service_set_runstate_mapped_check(uint32_t id, int32_t enable);\n  * @retval -ENOEXEC Service is not in a run-able state\n  * @retval -EINVAL Invalid service id\n  */\n-int32_t rte_service_run_iter_on_app_lcore(uint32_t id,\n+int32_t __rte_experimental rte_service_run_iter_on_app_lcore(uint32_t id,\n \t\tuint32_t serialize_multithread_unsafe);\n \n /**\n@@ -252,7 +256,7 @@ int32_t rte_service_run_iter_on_app_lcore(uint32_t id,\n  * @retval -EINVAL Failed to start core. The *lcore_id* passed in is not\n  *          currently assigned to be a service core.\n  */\n-int32_t rte_service_lcore_start(uint32_t lcore_id);\n+int32_t __rte_experimental rte_service_lcore_start(uint32_t lcore_id);\n \n /**\n  * @warning\n@@ -271,7 +275,7 @@ int32_t rte_service_lcore_start(uint32_t lcore_id);\n  *          The application must stop the service first, and then stop the\n  *          lcore.\n  */\n-int32_t rte_service_lcore_stop(uint32_t lcore_id);\n+int32_t __rte_experimental rte_service_lcore_stop(uint32_t lcore_id);\n \n /**\n  * @warning\n@@ -287,7 +291,7 @@ int32_t rte_service_lcore_stop(uint32_t lcore_id);\n  * @retval -EALREADY lcore is already added to the service core list\n  * @retval -EINVAL Invalid lcore provided\n  */\n-int32_t rte_service_lcore_add(uint32_t lcore);\n+int32_t __rte_experimental rte_service_lcore_add(uint32_t lcore);\n \n /**\n  * @warning\n@@ -301,7 +305,7 @@ int32_t rte_service_lcore_add(uint32_t lcore);\n  * @retval -EBUSY Lcore is not stopped, stop service core before removing.\n  * @retval -EINVAL failed to add lcore to service core mask.\n  */\n-int32_t rte_service_lcore_del(uint32_t lcore);\n+int32_t __rte_experimental rte_service_lcore_del(uint32_t lcore);\n \n /**\n  * @warning\n@@ -318,7 +322,7 @@ int32_t rte_service_lcore_del(uint32_t lcore);\n  *\n  * @return The number of service cores currently configured.\n  */\n-int32_t rte_service_lcore_count(void);\n+int32_t __rte_experimental rte_service_lcore_count(void);\n \n /**\n  * @warning\n@@ -330,7 +334,7 @@ int32_t rte_service_lcore_count(void);\n  *\n  * @retval 0 Success\n  */\n-int32_t rte_service_lcore_reset_all(void);\n+int32_t __rte_experimental rte_service_lcore_reset_all(void);\n \n /**\n  * @warning\n@@ -344,7 +348,8 @@ int32_t rte_service_lcore_reset_all(void);\n  * @retval 0 Success\n  * @retval -EINVAL Invalid service pointer passed\n  */\n-int32_t rte_service_set_stats_enable(uint32_t id, int32_t enable);\n+int32_t __rte_experimental rte_service_set_stats_enable(uint32_t id,\n+\t\t\t\t\t\t    int32_t enable);\n \n /**\n  * @warning\n@@ -365,7 +370,7 @@ int32_t rte_service_set_stats_enable(uint32_t id, int32_t enable);\n  *          service core list. No items have been populated, call this function\n  *          with a size of at least *rte_service_core_count* items.\n  */\n-int32_t rte_service_lcore_list(uint32_t array[], uint32_t n);\n+int32_t __rte_experimental rte_service_lcore_list(uint32_t array[], uint32_t n);\n \n /**\n  * @warning\n@@ -378,7 +383,7 @@ int32_t rte_service_lcore_list(uint32_t array[], uint32_t n);\n  * @retval -EINVAL Invalid lcore provided\n  * @retval -ENOTSUP The provided lcore is not a service core.\n  */\n-int32_t rte_service_lcore_count_services(uint32_t lcore);\n+int32_t __rte_experimental rte_service_lcore_count_services(uint32_t lcore);\n \n /**\n  * @warning\n@@ -390,7 +395,7 @@ int32_t rte_service_lcore_count_services(uint32_t lcore);\n  * @retval 0 Statistics have been successfully dumped\n  * @retval -EINVAL Invalid service id provided\n  */\n-int32_t rte_service_dump(FILE *f, uint32_t id);\n+int32_t __rte_experimental rte_service_dump(FILE *f, uint32_t id);\n \n #ifdef __cplusplus\n }\ndiff --git a/lib/librte_eal/common/include/rte_service_component.h b/lib/librte_eal/common/include/rte_service_component.h\nindex 849c71d4a..1fe44f172 100644\n--- a/lib/librte_eal/common/include/rte_service_component.h\n+++ b/lib/librte_eal/common/include/rte_service_component.h\n@@ -9,7 +9,7 @@\n  * Include this file if you are writing a component that requires CPU cycles to\n  * operate, and you wish to run the component using service cores\n  */\n-\n+#include <rte_compat.h>\n #include <rte_service.h>\n \n /**\n@@ -73,8 +73,9 @@ struct rte_service_spec {\n  *         -EINVAL Attempted to register an invalid service (eg, no callback\n  *         set)\n  */\n-int32_t rte_service_component_register(const struct rte_service_spec *spec,\n-\t\t\t\t       uint32_t *service_id);\n+int32_t __rte_experimental\n+rte_service_component_register(const struct rte_service_spec *spec,\n+\t\t\t       uint32_t *service_id);\n \n /**\n  * @warning\n@@ -88,7 +89,7 @@ int32_t rte_service_component_register(const struct rte_service_spec *spec,\n  * @retval -EBUSY The service is currently running, stop the service before\n  *          calling unregister. No action has been taken.\n  */\n-int32_t rte_service_component_unregister(uint32_t id);\n+int32_t __rte_experimental rte_service_component_unregister(uint32_t id);\n \n /**\n  * @warning\n@@ -106,7 +107,7 @@ int32_t rte_service_component_unregister(uint32_t id);\n  * @retval -ENODEV Error in enabling service lcore on a service\n  * @retval -ENOEXEC Error when starting services\n  */\n-int32_t rte_service_start_with_defaults(void);\n+int32_t __rte_experimental rte_service_start_with_defaults(void);\n \n /**\n  * @warning\n@@ -123,7 +124,8 @@ int32_t rte_service_start_with_defaults(void);\n  *\n  * @retval 0 Success\n  */\n-int32_t rte_service_component_runstate_set(uint32_t id, uint32_t runstate);\n+int32_t __rte_experimental rte_service_component_runstate_set(uint32_t id,\n+\t\t\t\t\t\t\t  uint32_t runstate);\n \n /**\n  * @warning\ndiff --git a/lib/librte_eal/common/rte_service.c b/lib/librte_eal/common/rte_service.c\nindex 372d0bbb3..1b0be108b 100644\n--- a/lib/librte_eal/common/rte_service.c\n+++ b/lib/librte_eal/common/rte_service.c\n@@ -9,6 +9,7 @@\n #include <string.h>\n #include <dirent.h>\n \n+#include <rte_compat.h>\n #include <rte_service.h>\n #include \"include/rte_service_component.h\"\n \n@@ -139,7 +140,8 @@ service_mt_safe(struct rte_service_spec_impl *s)\n \treturn !!(s->spec.capabilities & RTE_SERVICE_CAP_MT_SAFE);\n }\n \n-int32_t rte_service_set_stats_enable(uint32_t id, int32_t enabled)\n+int32_t __rte_experimental\n+rte_service_set_stats_enable(uint32_t id, int32_t enabled)\n {\n \tstruct rte_service_spec_impl *s;\n \tSERVICE_VALID_GET_OR_ERR_RET(id, s, 0);\n@@ -152,7 +154,8 @@ int32_t rte_service_set_stats_enable(uint32_t id, int32_t enabled)\n \treturn 0;\n }\n \n-int32_t rte_service_set_runstate_mapped_check(uint32_t id, int32_t enabled)\n+int32_t __rte_experimental\n+rte_service_set_runstate_mapped_check(uint32_t id, int32_t enabled)\n {\n \tstruct rte_service_spec_impl *s;\n \tSERVICE_VALID_GET_OR_ERR_RET(id, s, 0);\n@@ -165,13 +168,14 @@ int32_t rte_service_set_runstate_mapped_check(uint32_t id, int32_t enabled)\n \treturn 0;\n }\n \n-uint32_t\n+uint32_t __rte_experimental\n rte_service_get_count(void)\n {\n \treturn rte_service_count;\n }\n \n-int32_t rte_service_get_by_name(const char *name, uint32_t *service_id)\n+int32_t __rte_experimental\n+rte_service_get_by_name(const char *name, uint32_t *service_id)\n {\n \tif (!service_id)\n \t\treturn -EINVAL;\n@@ -188,7 +192,7 @@ int32_t rte_service_get_by_name(const char *name, uint32_t *service_id)\n \treturn -ENODEV;\n }\n \n-const char *\n+const char * __rte_experimental\n rte_service_get_name(uint32_t id)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -196,7 +200,7 @@ rte_service_get_name(uint32_t id)\n \treturn s->spec.name;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_probe_capability(uint32_t id, uint32_t capability)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -204,7 +208,7 @@ rte_service_probe_capability(uint32_t id, uint32_t capability)\n \treturn !!(s->spec.capabilities & capability);\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_component_register(const struct rte_service_spec *spec,\n \t\t\t       uint32_t *id_ptr)\n {\n@@ -237,7 +241,7 @@ rte_service_component_register(const struct rte_service_spec *spec,\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_component_unregister(uint32_t id)\n {\n \tuint32_t i;\n@@ -258,7 +262,7 @@ rte_service_component_unregister(uint32_t id)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_component_runstate_set(uint32_t id, uint32_t runstate)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -273,7 +277,7 @@ rte_service_component_runstate_set(uint32_t id, uint32_t runstate)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_runstate_set(uint32_t id, uint32_t runstate)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -288,7 +292,7 @@ rte_service_runstate_set(uint32_t id, uint32_t runstate)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_runstate_get(uint32_t id)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -349,7 +353,7 @@ service_run(uint32_t i, struct core_state *cs, uint64_t service_mask)\n \treturn 0;\n }\n \n-int32_t rte_service_run_iter_on_app_lcore(uint32_t id,\n+int32_t __rte_experimental rte_service_run_iter_on_app_lcore(uint32_t id,\n \t\tuint32_t serialize_mt_unsafe)\n {\n \t/* run service on calling core, using all-ones as the service mask */\n@@ -405,7 +409,7 @@ rte_service_runner_func(void *arg)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_count(void)\n {\n \tint32_t count = 0;\n@@ -415,7 +419,7 @@ rte_service_lcore_count(void)\n \treturn count;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_list(uint32_t array[], uint32_t n)\n {\n \tuint32_t count = rte_service_lcore_count();\n@@ -438,7 +442,7 @@ rte_service_lcore_list(uint32_t array[], uint32_t n)\n \treturn count;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_count_services(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -451,7 +455,7 @@ rte_service_lcore_count_services(uint32_t lcore)\n \treturn __builtin_popcountll(cs->service_mask);\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_start_with_defaults(void)\n {\n \t/* create a default mapping from cores to services, then start the\n@@ -533,7 +537,7 @@ service_update(struct rte_service_spec *service, uint32_t lcore,\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_map_lcore_set(uint32_t id, uint32_t lcore, uint32_t enabled)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -542,7 +546,7 @@ rte_service_map_lcore_set(uint32_t id, uint32_t lcore, uint32_t enabled)\n \treturn service_update(&s->spec, lcore, &on, 0);\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_map_lcore_get(uint32_t id, uint32_t lcore)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -554,7 +558,7 @@ rte_service_map_lcore_get(uint32_t id, uint32_t lcore)\n \treturn ret;\n }\n \n-int32_t rte_service_lcore_reset_all(void)\n+int32_t __rte_experimental rte_service_lcore_reset_all(void)\n {\n \t/* loop over cores, reset all to mask 0 */\n \tuint32_t i;\n@@ -585,7 +589,7 @@ set_lcore_state(uint32_t lcore, int32_t state)\n \tlcore_states[lcore].is_service_core = (state == ROLE_SERVICE);\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_add(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -604,7 +608,7 @@ rte_service_lcore_add(uint32_t lcore)\n \treturn rte_eal_wait_lcore(lcore);\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_del(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -623,7 +627,7 @@ rte_service_lcore_del(uint32_t lcore)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_start(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -646,7 +650,7 @@ rte_service_lcore_start(uint32_t lcore)\n \treturn ret;\n }\n \n-int32_t\n+int32_t __rte_experimental\n rte_service_lcore_stop(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -716,7 +720,7 @@ service_dump_calls_per_lcore(FILE *f, uint32_t lcore, uint32_t reset)\n \tfprintf(f, \"\\n\");\n }\n \n-int32_t rte_service_dump(FILE *f, uint32_t id)\n+int32_t __rte_experimental rte_service_dump(FILE *f, uint32_t id)\n {\n \tuint32_t i;\n \tint print_one = (id != UINT32_MAX);\ndiff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c\nindex 229eec9f1..73a0da22c 100644\n--- a/lib/librte_eal/linuxapp/eal/eal.c\n+++ b/lib/librte_eal/linuxapp/eal/eal.c\n@@ -53,6 +53,7 @@\n #include <sys/io.h>\n #endif\n \n+#include <rte_compat.h>\n #include <rte_common.h>\n #include <rte_debug.h>\n #include <rte_memory.h>\ndiff --git a/lib/librte_ether/rte_mtr.c b/lib/librte_ether/rte_mtr.c\nindex a80f19a5b..1046cb5fd 100644\n--- a/lib/librte_ether/rte_mtr.c\n+++ b/lib/librte_ether/rte_mtr.c\n@@ -5,6 +5,7 @@\n #include <stdint.h>\n \n #include <rte_errno.h>\n+#include \"rte_compat.h\"\n #include \"rte_ethdev.h\"\n #include \"rte_mtr_driver.h\"\n #include \"rte_mtr.h\"\n@@ -57,7 +58,7 @@ rte_mtr_ops_get(uint16_t port_id, struct rte_mtr_error *error)\n })\n \n /* MTR capabilities get */\n-int\n+int __rte_experimental\n rte_mtr_capabilities_get(uint16_t port_id,\n \tstruct rte_mtr_capabilities *cap,\n \tstruct rte_mtr_error *error)\n@@ -68,7 +69,7 @@ rte_mtr_capabilities_get(uint16_t port_id,\n }\n \n /* MTR meter profile add */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_add(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_meter_profile *profile,\n@@ -80,7 +81,7 @@ rte_mtr_meter_profile_add(uint16_t port_id,\n }\n \n /** MTR meter profile delete */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_delete(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_error *error)\n@@ -91,7 +92,7 @@ rte_mtr_meter_profile_delete(uint16_t port_id,\n }\n \n /** MTR object create */\n-int\n+int __rte_experimental\n rte_mtr_create(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_params *params,\n@@ -104,7 +105,7 @@ rte_mtr_create(uint16_t port_id,\n }\n \n /** MTR object destroy */\n-int\n+int __rte_experimental\n rte_mtr_destroy(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -115,7 +116,7 @@ rte_mtr_destroy(uint16_t port_id,\n }\n \n /** MTR object meter enable */\n-int\n+int __rte_experimental\n rte_mtr_meter_enable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -126,7 +127,7 @@ rte_mtr_meter_enable(uint16_t port_id,\n }\n \n /** MTR object meter disable */\n-int\n+int __rte_experimental\n rte_mtr_meter_disable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -137,7 +138,7 @@ rte_mtr_meter_disable(uint16_t port_id,\n }\n \n /** MTR object meter profile update */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t meter_profile_id,\n@@ -149,7 +150,7 @@ rte_mtr_meter_profile_update(uint16_t port_id,\n }\n \n /** MTR object meter DSCP table update */\n-int\n+int __rte_experimental\n rte_mtr_meter_dscp_table_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tenum rte_mtr_color *dscp_table,\n@@ -161,7 +162,7 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,\n }\n \n /** MTR object policer action update */\n-int\n+int __rte_experimental\n rte_mtr_policer_actions_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t action_mask,\n@@ -174,7 +175,7 @@ rte_mtr_policer_actions_update(uint16_t port_id,\n }\n \n /** MTR object enabled stats update */\n-int\n+int __rte_experimental\n rte_mtr_stats_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint64_t stats_mask,\n@@ -186,7 +187,7 @@ rte_mtr_stats_update(uint16_t port_id,\n }\n \n /** MTR object stats read */\n-int\n+int __rte_experimental\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_ether/rte_mtr.h b/lib/librte_ether/rte_mtr.h\nindex f6b6ef3b6..c4819b274 100644\n--- a/lib/librte_ether/rte_mtr.h\n+++ b/lib/librte_ether/rte_mtr.h\n@@ -74,7 +74,7 @@\n  * @b EXPERIMENTAL: this API may change without prior notice\n  */\n #include <stdint.h>\n-\n+#include <rte_compat.h>\n #include <rte_common.h>\n \n #ifdef __cplusplus\n@@ -447,7 +447,7 @@ struct rte_mtr_error {\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_capabilities_get(uint16_t port_id,\n \tstruct rte_mtr_capabilities *cap,\n \tstruct rte_mtr_error *error);\n@@ -470,7 +470,7 @@ rte_mtr_capabilities_get(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_add(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_meter_profile *profile,\n@@ -491,7 +491,7 @@ rte_mtr_meter_profile_add(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_delete(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_error *error);\n@@ -519,7 +519,7 @@ rte_mtr_meter_profile_delete(uint16_t port_id,\n  *\n  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER\n  */\n-int\n+int __rte_experimental\n rte_mtr_create(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_params *params,\n@@ -542,7 +542,7 @@ rte_mtr_create(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_destroy(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error);\n@@ -569,7 +569,7 @@ rte_mtr_destroy(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_disable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error);\n@@ -590,7 +590,7 @@ rte_mtr_meter_disable(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_enable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error);\n@@ -609,7 +609,7 @@ rte_mtr_meter_enable(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_profile_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t meter_profile_id,\n@@ -633,7 +633,7 @@ rte_mtr_meter_profile_update(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_meter_dscp_table_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tenum rte_mtr_color *dscp_table,\n@@ -659,7 +659,7 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,\n  * @return\n  *   0 on success, non-zero error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_mtr_policer_actions_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t action_mask,\n@@ -684,7 +684,7 @@ rte_mtr_policer_actions_update(uint16_t port_id,\n  *\n  * @see enum rte_mtr_stats_type\n  */\n-int\n+int __rte_experimental\n rte_mtr_stats_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint64_t stats_mask,\n@@ -715,7 +715,7 @@ rte_mtr_stats_update(uint16_t port_id,\n  *\n  * @see enum rte_mtr_stats_type\n  */\n-int\n+int __rte_experimental\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_flow_classify/rte_flow_classify.c b/lib/librte_flow_classify/rte_flow_classify.c\nindex 65d0a7514..6a4d1eb3d 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.c\n+++ b/lib/librte_flow_classify/rte_flow_classify.c\n@@ -2,6 +2,7 @@\n  * Copyright(c) 2017 Intel Corporation\n  */\n \n+#include <rte_compat.h>\n #include <rte_flow_classify.h>\n #include \"rte_flow_classify_parse.h\"\n #include <rte_flow_driver.h>\n@@ -216,7 +217,7 @@ rte_flow_classifier_check_params(struct rte_flow_classifier_params *params)\n \treturn 0;\n }\n \n-struct rte_flow_classifier *\n+struct rte_flow_classifier * __rte_experimental\n rte_flow_classifier_create(struct rte_flow_classifier_params *params)\n {\n \tstruct rte_flow_classifier *cls;\n@@ -262,7 +263,7 @@ rte_flow_classify_table_free(struct rte_table *table)\n \t\ttable->ops.f_free(table->h_table);\n }\n \n-int\n+int __rte_experimental\n rte_flow_classifier_free(struct rte_flow_classifier *cls)\n {\n \tuint32_t i;\n@@ -340,7 +341,7 @@ rte_table_check_params(struct rte_flow_classifier *cls,\n \treturn 0;\n }\n \n-int\n+int __rte_experimental\n rte_flow_classify_table_create(struct rte_flow_classifier *cls,\n \tstruct rte_flow_classify_table_params *params,\n \tuint32_t *table_id)\n@@ -454,7 +455,7 @@ allocate_acl_ipv4_5tuple_rule(void)\n \treturn rule;\n }\n \n-struct rte_flow_classify_rule *\n+struct rte_flow_classify_rule * __rte_experimental\n rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,\n \t\tuint32_t table_id,\n \t\tint *key_found,\n@@ -553,7 +554,7 @@ rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,\n \treturn rule;\n }\n \n-int\n+int __rte_experimental\n rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls,\n \t\tuint32_t table_id,\n \t\tstruct rte_flow_classify_rule *rule)\n@@ -630,7 +631,7 @@ action_apply(struct rte_flow_classifier *cls,\n \treturn ret;\n }\n \n-int\n+int __rte_experimental\n rte_flow_classifier_query(struct rte_flow_classifier *cls,\n \t\tuint32_t table_id,\n \t\tstruct rte_mbuf **pkts,\ndiff --git a/lib/librte_flow_classify/rte_flow_classify.h b/lib/librte_flow_classify/rte_flow_classify.h\nindex e5f3e61d9..084cb4fa4 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.h\n+++ b/lib/librte_flow_classify/rte_flow_classify.h\n@@ -41,6 +41,7 @@\n  *    with rte_flow_classifier_free()\n  */\n \n+#include <rte_compat.h>\n #include <rte_ethdev.h>\n #include <rte_ether.h>\n #include <rte_flow.h>\n@@ -147,7 +148,7 @@ struct rte_flow_classify_ipv4_5tuple_stats {\n  * @return\n  *   Handle to flow classifier instance on success or NULL otherwise\n  */\n-struct rte_flow_classifier *\n+struct rte_flow_classifier * __rte_experimental\n rte_flow_classifier_create(struct rte_flow_classifier_params *params);\n \n /**\n@@ -158,7 +159,7 @@ rte_flow_classifier_create(struct rte_flow_classifier_params *params);\n  * @return\n  *   0 on success, error code otherwise\n  */\n-int\n+int __rte_experimental\n rte_flow_classifier_free(struct rte_flow_classifier *cls);\n \n /**\n@@ -174,7 +175,7 @@ rte_flow_classifier_free(struct rte_flow_classifier *cls);\n  * @return\n  *   0 on success, error code otherwise\n  */\n-int\n+int __rte_experimental\n rte_flow_classify_table_create(struct rte_flow_classifier *cls,\n \t\tstruct rte_flow_classify_table_params *params,\n \t\tuint32_t *table_id);\n@@ -221,7 +222,7 @@ rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,\n  * @return\n  *   0 on success, error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls,\n \t\tuint32_t table_id,\n \t\tstruct rte_flow_classify_rule *rule);\n@@ -245,7 +246,7 @@ rte_flow_classify_table_entry_delete(struct rte_flow_classifier *cls,\n  * @return\n  *   0 on success, error code otherwise.\n  */\n-int\n+int __rte_experimental\n rte_flow_classifier_query(struct rte_flow_classifier *cls,\n \t\tuint32_t table_id,\n \t\tstruct rte_mbuf **pkts,\ndiff --git a/lib/librte_security/rte_security.c b/lib/librte_security/rte_security.c\nindex 1227fca8a..0a5409ed8 100644\n--- a/lib/librte_security/rte_security.c\n+++ b/lib/librte_security/rte_security.c\n@@ -33,12 +33,12 @@\n \n #include <rte_malloc.h>\n #include <rte_dev.h>\n-\n+#include \"rte_compat.h\"\n #include \"rte_security.h\"\n #include \"rte_security_driver.h\"\n \n struct rte_security_session *\n-rte_security_session_create(struct rte_security_ctx *instance,\n+__rte_experimental rte_security_session_create(struct rte_security_ctx *instance,\n \t\t\t    struct rte_security_session_conf *conf,\n \t\t\t    struct rte_mempool *mp)\n {\n@@ -61,7 +61,7 @@ rte_security_session_create(struct rte_security_ctx *instance,\n \treturn sess;\n }\n \n-int\n+int __rte_experimental\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@@ -70,7 +70,7 @@ rte_security_session_update(struct rte_security_ctx *instance,\n \treturn instance->ops->session_update(instance->device, sess, conf);\n }\n \n-int\n+int __rte_experimental\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@@ -79,7 +79,7 @@ rte_security_session_stats_get(struct rte_security_ctx *instance,\n \treturn instance->ops->session_stats_get(instance->device, sess, stats);\n }\n \n-int\n+int __rte_experimental\n rte_security_session_destroy(struct rte_security_ctx *instance,\n \t\t\t     struct rte_security_session *sess)\n {\n@@ -98,7 +98,7 @@ rte_security_session_destroy(struct rte_security_ctx *instance,\n \treturn ret;\n }\n \n-int\n+int __rte_experimental\n rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n \t\t\t      struct rte_security_session *sess,\n \t\t\t      struct rte_mbuf *m, void *params)\n@@ -108,14 +108,14 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n \t\t\t\t\t       sess, m, params);\n }\n \n-const struct rte_security_capability *\n+const struct rte_security_capability * __rte_experimental\n rte_security_capabilities_get(struct rte_security_ctx *instance)\n {\n \tRTE_FUNC_PTR_OR_ERR_RET(*instance->ops->capabilities_get, NULL);\n \treturn instance->ops->capabilities_get(instance->device);\n }\n \n-const struct rte_security_capability *\n+const struct rte_security_capability * __rte_experimental\n rte_security_capability_get(struct rte_security_ctx *instance,\n \t\t\t    struct rte_security_capability_idx *idx)\n {\ndiff --git a/lib/librte_security/rte_security.h b/lib/librte_security/rte_security.h\nindex 653929b99..9fa8bc3f3 100644\n--- a/lib/librte_security/rte_security.h\n+++ b/lib/librte_security/rte_security.h\n@@ -52,6 +52,7 @@ extern \"C\" {\n #include <netinet/ip.h>\n #include <netinet/ip6.h>\n \n+#include <rte_compat.h>\n #include <rte_common.h>\n #include <rte_crypto.h>\n #include <rte_mbuf.h>\n@@ -291,7 +292,7 @@ struct rte_security_session {\n  *  - On success, pointer to session\n  *  - On failure, NULL\n  */\n-struct rte_security_session *\n+struct rte_security_session * __rte_experimental\n rte_security_session_create(struct rte_security_ctx *instance,\n \t\t\t    struct rte_security_session_conf *conf,\n \t\t\t    struct rte_mempool *mp);\n@@ -306,7 +307,7 @@ rte_security_session_create(struct rte_security_ctx *instance,\n  *  - On success returns 0\n  *  - On failure return errno\n  */\n-int\n+int __rte_experimental\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@@ -323,7 +324,7 @@ rte_security_session_update(struct rte_security_ctx *instance,\n  *  - -EINVAL if session is NULL.\n  *  - -EBUSY if not all device private data has been freed.\n  */\n-int\n+int __rte_experimental\n rte_security_session_destroy(struct rte_security_ctx *instance,\n \t\t\t     struct rte_security_session *sess);\n \n@@ -340,7 +341,7 @@ rte_security_session_destroy(struct rte_security_ctx *instance,\n  *  - On success, zero.\n  *  - On failure, a negative value.\n  */\n-int\n+int __rte_experimental\n rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n \t\t\t      struct rte_security_session *sess,\n \t\t\t      struct rte_mbuf *mb, void *params);\n@@ -351,7 +352,7 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n  * @param\tsym_op\tcrypto operation\n  * @param\tsess\tsecurity session\n  */\n-static inline int\n+static inline int __rte_experimental\n __rte_security_attach_session(struct rte_crypto_sym_op *sym_op,\n \t\t\t      struct rte_security_session *sess)\n {\n@@ -360,13 +361,13 @@ __rte_security_attach_session(struct rte_crypto_sym_op *sym_op,\n \treturn 0;\n }\n \n-static inline void *\n+static inline void * __rte_experimental\n get_sec_session_private_data(const struct rte_security_session *sess)\n {\n \treturn sess->sess_private_data;\n }\n \n-static inline void\n+static inline void __rte_experimental\n set_sec_session_private_data(struct rte_security_session *sess,\n \t\t\t     void *private_data)\n {\n@@ -382,7 +383,7 @@ set_sec_session_private_data(struct rte_security_session *sess,\n  * @param\top\tcrypto operation\n  * @param\tsess\tsecurity session\n  */\n-static inline int\n+static inline int __rte_experimental\n rte_security_attach_session(struct rte_crypto_op *op,\n \t\t\t    struct rte_security_session *sess)\n {\n@@ -424,7 +425,7 @@ struct rte_security_stats {\n  *  - On success return 0\n  *  - On failure errno\n  */\n-int\n+int __rte_experimental\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@@ -507,7 +508,7 @@ struct rte_security_capability_idx {\n  *   - Returns array of security capabilities.\n  *   - Return NULL if no capabilities available.\n  */\n-const struct rte_security_capability *\n+const struct rte_security_capability * __rte_experimental\n rte_security_capabilities_get(struct rte_security_ctx *instance);\n \n /**\n@@ -521,7 +522,7 @@ rte_security_capabilities_get(struct rte_security_ctx *instance);\n  *     index criteria.\n  *   - Return NULL if the capability not matched on security instance.\n  */\n-const struct rte_security_capability *\n+const struct rte_security_capability * __rte_experimental\n rte_security_capability_get(struct rte_security_ctx *instance,\n \t\t\t    struct rte_security_capability_idx *idx);\n \n",
    "prefixes": [
        "dpdk-dev",
        "[PATCH",
        "v5"
    ]
}