get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 32045,
    "url": "http://patches.dpdk.org/api/patches/32045/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20171208171435.29875-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": "<20171208171435.29875-5-nhorman@tuxdriver.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20171208171435.29875-5-nhorman@tuxdriver.com",
    "date": "2017-12-08T17:14:35",
    "name": "[dpdk-dev,PATCHv2,4/4] dpdk: add __experimental tag to appropriate api calls",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "f06383574eeb9676beb55e2beaa87e7a5201277f",
    "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/20171208171435.29875-5-nhorman@tuxdriver.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/32045/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/32045/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 C81EB1B1EC;\n\tFri,  8 Dec 2017 18:15:44 +0100 (CET)",
            "from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58])\n\tby dpdk.org (Postfix) with ESMTP id 8464B1B1C5\n\tfor <dev@dpdk.org>; Fri,  8 Dec 2017 18:15:41 +0100 (CET)",
            "from cpe-2606-a000-111b-423c-e874-da8e-c543-d863.dyn6.twc.com\n\t([2606:a000:111b:423c:e874:da8e:c543:d863]\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 1eNMFB-0002qJ-5S; Fri, 08 Dec 2017 12:15:37 -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\tvB8HEpQ3030005; Fri, 8 Dec 2017 12:14:51 -0500",
            "(from nhorman@localhost)\n\tby hmswarspite.think-freely.org (8.15.2/8.15.2/Submit) id\n\tvB8HEpGX030004; Fri, 8 Dec 2017 12:14:51 -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>",
        "Date": "Fri,  8 Dec 2017 12:14:35 -0500",
        "Message-Id": "<20171208171435.29875-5-nhorman@tuxdriver.com>",
        "X-Mailer": "git-send-email 2.14.3",
        "In-Reply-To": "<20171208171435.29875-1-nhorman@tuxdriver.com>",
        "References": "<20171201185628.16261-1-nhorman@tuxdriver.com>\n\t<20171208171435.29875-1-nhorman@tuxdriver.com>",
        "X-Spam-Score": "-2.9 (--)",
        "X-Spam-Status": "No",
        "Subject": "[dpdk-dev] [PATCHv2 4/4] dpdk: add __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": "<http://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": "<http://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 __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>\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..ee866ddd2 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 __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 __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..8e46d54bd 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 __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 __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 __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..ddb0a09a7 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 __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 __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..e4c10b6c5 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 __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 __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 __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 927244065..da10d17ea 100644\n--- a/lib/librte_eal/common/include/rte_service.h\n+++ b/lib/librte_eal/common/include/rte_service.h\n@@ -84,7 +84,7 @@ extern \"C\" {\n  *\n  * @return The number of services registered.\n  */\n-uint32_t rte_service_get_count(void);\n+uint32_t __experimental rte_service_get_count(void);\n \n /**\n  * @warning\n@@ -111,7 +111,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 __experimental rte_service_get_by_name(const char *name,\n+\t\t\t\t\t       uint32_t *service_id);\n \n /**\n  * @warning\n@@ -122,7 +123,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 __experimental *rte_service_get_name(uint32_t id);\n \n /**\n  * @warning\n@@ -135,7 +136,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 __experimental rte_service_probe_capability(uint32_t id,\n+\t\t\t\t\t\t    uint32_t capability);\n \n /**\n  * @warning\n@@ -159,8 +161,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 __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@@ -175,7 +177,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 __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@@ -192,7 +195,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 __experimental rte_service_runstate_set(uint32_t id, uint32_t runstate);\n \n /**\n  * @warning\n@@ -210,7 +213,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 __experimental rte_service_runstate_get(uint32_t id);\n \n /**\n  * @warning\n@@ -226,7 +229,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 __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@@ -264,7 +268,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 __experimental rte_service_run_iter_on_app_lcore(uint32_t id,\n \t\tuint32_t serialize_multithread_unsafe);\n \n /**\n@@ -280,7 +284,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 __experimental rte_service_lcore_start(uint32_t lcore_id);\n \n /**\n  * @warning\n@@ -299,7 +303,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 __experimental rte_service_lcore_stop(uint32_t lcore_id);\n \n /**\n  * @warning\n@@ -315,7 +319,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 __experimental rte_service_lcore_add(uint32_t lcore);\n \n /**\n  * @warning\n@@ -329,7 +333,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 __experimental rte_service_lcore_del(uint32_t lcore);\n \n /**\n  * @warning\n@@ -346,7 +350,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 __experimental rte_service_lcore_count(void);\n \n /**\n  * @warning\n@@ -358,7 +362,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 __experimental rte_service_lcore_reset_all(void);\n \n /**\n  * @warning\n@@ -372,7 +376,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 __experimental rte_service_set_stats_enable(uint32_t id,\n+\t\t\t\t\t\t    int32_t enable);\n \n /**\n  * @warning\n@@ -393,7 +398,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 __experimental rte_service_lcore_list(uint32_t array[], uint32_t n);\n \n /**\n  * @warning\n@@ -406,7 +411,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 __experimental rte_service_lcore_count_services(uint32_t lcore);\n \n /**\n  * @warning\n@@ -418,7 +423,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 __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 ac965cb48..a129258eb 100644\n--- a/lib/librte_eal/common/include/rte_service_component.h\n+++ b/lib/librte_eal/common/include/rte_service_component.h\n@@ -37,7 +37,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@@ -101,8 +101,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 __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@@ -116,7 +117,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 __experimental rte_service_component_unregister(uint32_t id);\n \n /**\n  * @warning\n@@ -134,7 +135,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 __experimental rte_service_start_with_defaults(void);\n \n /**\n  * @warning\n@@ -151,7 +152,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 __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 ae97e6b7f..178354323 100644\n--- a/lib/librte_eal/common/rte_service.c\n+++ b/lib/librte_eal/common/rte_service.c\n@@ -38,6 +38,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@@ -168,7 +169,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 __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@@ -181,7 +183,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 __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@@ -194,13 +197,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 __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 __experimental\n+rte_service_get_by_name(const char *name, uint32_t *service_id)\n {\n \tif (!service_id)\n \t\treturn -EINVAL;\n@@ -217,7 +221,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 * __experimental\n rte_service_get_name(uint32_t id)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -225,7 +229,7 @@ rte_service_get_name(uint32_t id)\n \treturn s->spec.name;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_probe_capability(uint32_t id, uint32_t capability)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -233,7 +237,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 __experimental\n rte_service_component_register(const struct rte_service_spec *spec,\n \t\t\t       uint32_t *id_ptr)\n {\n@@ -266,7 +270,7 @@ rte_service_component_register(const struct rte_service_spec *spec,\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_component_unregister(uint32_t id)\n {\n \tuint32_t i;\n@@ -287,7 +291,7 @@ rte_service_component_unregister(uint32_t id)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_component_runstate_set(uint32_t id, uint32_t runstate)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -302,7 +306,7 @@ rte_service_component_runstate_set(uint32_t id, uint32_t runstate)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_runstate_set(uint32_t id, uint32_t runstate)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -317,7 +321,7 @@ rte_service_runstate_set(uint32_t id, uint32_t runstate)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_runstate_get(uint32_t id)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -378,7 +382,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 __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@@ -434,7 +438,7 @@ rte_service_runner_func(void *arg)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_count(void)\n {\n \tint32_t count = 0;\n@@ -444,7 +448,7 @@ rte_service_lcore_count(void)\n \treturn count;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_list(uint32_t array[], uint32_t n)\n {\n \tuint32_t count = rte_service_lcore_count();\n@@ -467,7 +471,7 @@ rte_service_lcore_list(uint32_t array[], uint32_t n)\n \treturn count;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_count_services(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -480,7 +484,7 @@ rte_service_lcore_count_services(uint32_t lcore)\n \treturn __builtin_popcountll(cs->service_mask);\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_start_with_defaults(void)\n {\n \t/* create a default mapping from cores to services, then start the\n@@ -562,7 +566,7 @@ service_update(struct rte_service_spec *service, uint32_t lcore,\n \treturn 0;\n }\n \n-int32_t\n+int32_t __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@@ -571,7 +575,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 __experimental\n rte_service_map_lcore_get(uint32_t id, uint32_t lcore)\n {\n \tstruct rte_service_spec_impl *s;\n@@ -583,7 +587,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 __experimental rte_service_lcore_reset_all(void)\n {\n \t/* loop over cores, reset all to mask 0 */\n \tuint32_t i;\n@@ -614,7 +618,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 __experimental\n rte_service_lcore_add(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -633,7 +637,7 @@ rte_service_lcore_add(uint32_t lcore)\n \treturn rte_eal_wait_lcore(lcore);\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_del(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -652,7 +656,7 @@ rte_service_lcore_del(uint32_t lcore)\n \treturn 0;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_start(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -675,7 +679,7 @@ rte_service_lcore_start(uint32_t lcore)\n \treturn ret;\n }\n \n-int32_t\n+int32_t __experimental\n rte_service_lcore_stop(uint32_t lcore)\n {\n \tif (lcore >= RTE_MAX_LCORE)\n@@ -745,7 +749,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 __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 4f56f8714..2cbe0bb5a 100644\n--- a/lib/librte_ether/rte_mtr.c\n+++ b/lib/librte_ether/rte_mtr.c\n@@ -34,6 +34,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@@ -86,7 +87,7 @@ rte_mtr_ops_get(uint16_t port_id, struct rte_mtr_error *error)\n })\n \n /* MTR capabilities get */\n-int\n+int __experimental\n rte_mtr_capabilities_get(uint16_t port_id,\n \tstruct rte_mtr_capabilities *cap,\n \tstruct rte_mtr_error *error)\n@@ -97,7 +98,7 @@ rte_mtr_capabilities_get(uint16_t port_id,\n }\n \n /* MTR meter profile add */\n-int\n+int __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@@ -109,7 +110,7 @@ rte_mtr_meter_profile_add(uint16_t port_id,\n }\n \n /** MTR meter profile delete */\n-int\n+int __experimental\n rte_mtr_meter_profile_delete(uint16_t port_id,\n \tuint32_t meter_profile_id,\n \tstruct rte_mtr_error *error)\n@@ -120,7 +121,7 @@ rte_mtr_meter_profile_delete(uint16_t port_id,\n }\n \n /** MTR object create */\n-int\n+int __experimental\n rte_mtr_create(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_params *params,\n@@ -133,7 +134,7 @@ rte_mtr_create(uint16_t port_id,\n }\n \n /** MTR object destroy */\n-int\n+int __experimental\n rte_mtr_destroy(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -144,7 +145,7 @@ rte_mtr_destroy(uint16_t port_id,\n }\n \n /** MTR object meter enable */\n-int\n+int __experimental\n rte_mtr_meter_enable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -155,7 +156,7 @@ rte_mtr_meter_enable(uint16_t port_id,\n }\n \n /** MTR object meter disable */\n-int\n+int __experimental\n rte_mtr_meter_disable(uint16_t port_id,\n \tuint32_t mtr_id,\n \tstruct rte_mtr_error *error)\n@@ -166,7 +167,7 @@ rte_mtr_meter_disable(uint16_t port_id,\n }\n \n /** MTR object meter profile update */\n-int\n+int __experimental\n rte_mtr_meter_profile_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t meter_profile_id,\n@@ -178,7 +179,7 @@ rte_mtr_meter_profile_update(uint16_t port_id,\n }\n \n /** MTR object meter DSCP table update */\n-int\n+int __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@@ -190,7 +191,7 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,\n }\n \n /** MTR object policer action update */\n-int\n+int __experimental\n rte_mtr_policer_actions_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint32_t action_mask,\n@@ -203,7 +204,7 @@ rte_mtr_policer_actions_update(uint16_t port_id,\n }\n \n /** MTR object enabled stats update */\n-int\n+int __experimental\n rte_mtr_stats_update(uint16_t port_id,\n \tuint32_t mtr_id,\n \tuint64_t stats_mask,\n@@ -215,7 +216,7 @@ rte_mtr_stats_update(uint16_t port_id,\n }\n \n /** MTR object stats read */\n-int\n+int __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..fd8361998 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 __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 __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 __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 __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 __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 __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 __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 __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 __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 __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 __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 __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 e6f448643..6716672fc 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.c\n+++ b/lib/librte_flow_classify/rte_flow_classify.c\n@@ -31,6 +31,7 @@\n  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\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@@ -245,7 +246,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 * __experimental\n rte_flow_classifier_create(struct rte_flow_classifier_params *params)\n {\n \tstruct rte_flow_classifier *cls;\n@@ -291,7 +292,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 __experimental\n rte_flow_classifier_free(struct rte_flow_classifier *cls)\n {\n \tuint32_t i;\n@@ -369,7 +370,7 @@ rte_table_check_params(struct rte_flow_classifier *cls,\n \treturn 0;\n }\n \n-int\n+int __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@@ -483,7 +484,7 @@ allocate_acl_ipv4_5tuple_rule(void)\n \treturn rule;\n }\n \n-struct rte_flow_classify_rule *\n+struct rte_flow_classify_rule * __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@@ -582,7 +583,7 @@ rte_flow_classify_table_entry_add(struct rte_flow_classifier *cls,\n \treturn rule;\n }\n \n-int\n+int __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@@ -659,7 +660,7 @@ action_apply(struct rte_flow_classifier *cls,\n \treturn ret;\n }\n \n-int\n+int __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 1211873a1..cd9516f9e 100644\n--- a/lib/librte_flow_classify/rte_flow_classify.h\n+++ b/lib/librte_flow_classify/rte_flow_classify.h\n@@ -70,6 +70,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@@ -176,7 +177,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 * __experimental\n rte_flow_classifier_create(struct rte_flow_classifier_params *params);\n \n /**\n@@ -187,7 +188,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 __experimental\n rte_flow_classifier_free(struct rte_flow_classifier *cls);\n \n /**\n@@ -203,7 +204,7 @@ rte_flow_classifier_free(struct rte_flow_classifier *cls);\n  * @return\n  *   0 on success, error code otherwise\n  */\n-int\n+int __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@@ -250,7 +251,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 __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@@ -274,7 +275,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 __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..958b7273e 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+__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 __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 __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 __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 __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 * __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 * __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..176378e78 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 * __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 __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 __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 __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 __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 * __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 __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 __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 __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 * __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 * __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",
        "PATCHv2",
        "4/4"
    ]
}