get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 52838,
    "url": "https://patches.dpdk.org/api/patches/52838/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20190417003627.24607-1-thomas@monjalon.net/",
    "project": {
        "id": 1,
        "url": "https://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": "<20190417003627.24607-1-thomas@monjalon.net>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190417003627.24607-1-thomas@monjalon.net",
    "date": "2019-04-17T00:36:27",
    "name": "ethdev: deprecate legacy filter API",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b09bd5a5a754d5e37d6e339d8632956dd9c18c52",
    "submitter": {
        "id": 685,
        "url": "https://patches.dpdk.org/api/people/685/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas@monjalon.net"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20190417003627.24607-1-thomas@monjalon.net/mbox/",
    "series": [
        {
            "id": 4337,
            "url": "https://patches.dpdk.org/api/series/4337/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=4337",
            "date": "2019-04-17T00:36:27",
            "name": "ethdev: deprecate legacy filter API",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/4337/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/52838/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/52838/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 460C11B55B;\n\tWed, 17 Apr 2019 02:36:57 +0200 (CEST)",
            "from new1-smtp.messagingengine.com (new1-smtp.messagingengine.com\n\t[66.111.4.221]) by dpdk.org (Postfix) with ESMTP id BCF321B559\n\tfor <dev@dpdk.org>; Wed, 17 Apr 2019 02:36:55 +0200 (CEST)",
            "from compute1.internal (compute1.nyi.internal [10.202.2.41])\n\tby mailnew.nyi.internal (Postfix) with ESMTP id C61D39807;\n\tTue, 16 Apr 2019 20:36:54 -0400 (EDT)",
            "from mailfrontend1 ([10.202.2.162])\n\tby compute1.internal (MEProxy); Tue, 16 Apr 2019 20:36:54 -0400",
            "from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184])\n\tby mail.messagingengine.com (Postfix) with ESMTPA id E07B0E4122;\n\tTue, 16 Apr 2019 20:36:50 -0400 (EDT)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h=\n\tfrom:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding; s=mesmtp; bh=6b8YyHh6Sjcn+9Wsf0sxwJp\n\to/88+p9uqOwHXaygJGq8=; b=ra1pFTCzv/HLgyRbEPXLpVC7LltVqXBo76iqWcm\n\tIo5IFA3MtoE8VQdYCGH/Fe5cEDjzC9uCiLUQh1tLSJnyYNCw0vbNYWW+uWQk+/zR\n\t+nu4rPahZIRph42zgGWYzlyl61rRlYy0rKsmyAvy7EnHqLjWDbFDOhiJ4D2Nqe3T\n\t9Gu4=",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n\tmessagingengine.com; h=cc:content-transfer-encoding:date:from\n\t:message-id:mime-version:subject:to:x-me-proxy:x-me-proxy\n\t:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=6b8YyHh6Sjcn+9Wsf\n\t0sxwJpo/88+p9uqOwHXaygJGq8=; b=ipopIJrKZnNgjaS3oGopW9FJZUxlVbJAr\n\taZ3rcZlIgA9lJHc1GVaxanZ2wxpjg+JzUtftUviA/CBl9xVcbaoVrQmIlKjZronT\n\tFQG010Aut5QreTtRr/DtuS2BgQfVukZ/WvM4MGS9WiOrBRlst5NvMgbmqa5+Ca6O\n\tAKzzNzGC0VL+K0cwjAtpuqLwOSws+C44E3P6gTvgkD+4IJbk1Z8Fvsx79bETaFnf\n\tQlReB9IAWqM1VMY1fFuOan8jqV8kjPBYpE/+f7fr8WKRsRUsw30KDsk/Lm2aqXPy\n\tgd2hZLZIWVHX6CIL1fQMP/53WumrGpBW8VJ/p0zmoEqMJyYtQJugg=="
        ],
        "X-ME-Sender": "<xms:JXW2XBeE8eot5736cbJoc_KSxtD7ESZVgcIywaFRsPWr7h3j_6B1rw>",
        "X-ME-Proxy-Cause": "gggruggvucftvghtrhhoucdtuddrgeduuddrfedvgdefgecutefuodetggdotefrodftvf\n\tcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu\n\tuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc\n\tfjughrpefhvffufffkofgggfestdekredtredttdenucfhrhhomhepvfhhohhmrghsucfo\n\tohhnjhgrlhhonhcuoehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtqeenucffohhmrg\n\thinhepvgigthgrphhprdhmkhenucfkphepjeejrddufeegrddvtdefrddukeegnecurfgr\n\trhgrmhepmhgrihhlfhhrohhmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvghtnecuve\n\thluhhsthgvrhfuihiivgeptd",
        "X-ME-Proxy": "<xmx:JXW2XGFjFyf-WBJR3EvpXibz8ol3QmXnv4Mct9CRRgFWLEXUj7pRHA>\n\t<xmx:JXW2XHf3O26qSRHqX5dlT0ObT5OWmwVq1F29exOgZtqSeRJEHs1FRA>\n\t<xmx:JXW2XIFRZJEIeu_xGXQ73o51arY03mCZzeIc1DRqbUkHyztvOvwYuQ>\n\t<xmx:JnW2XA4mJsYQS_MGi1lA-6NR7G9sUY7oyOXzWzMpwEJGoxMaqo8hcw>",
        "From": "Thomas Monjalon <thomas@monjalon.net>",
        "To": "Wenzhuo Lu <wenzhuo.lu@intel.com>, Jingjing Wu <jingjing.wu@intel.com>, \n\tBernard Iremonger <bernard.iremonger@intel.com>,\n\tAdrien Mazarguil <adrien.mazarguil@6wind.com>,\n\tHemant Agrawal <hemant.agrawal@nxp.com>,\n\tShreyansh Jain <shreyansh.jain@nxp.com>,\n\tJohn Daley <johndale@cisco.com>, Hyong Youb Kim <hyonkim@cisco.com>,\n\tGaetan Rivet <gaetan.rivet@6wind.com>, \n\tBeilei Xing <beilei.xing@intel.com>, Qi Zhang <qi.z.zhang@intel.com>, \n\tMatan Azrad <matan@mellanox.com>, Shahaf Shuler <shahafs@mellanox.com>,\n\tYongseok Koh <yskoh@mellanox.com>,\n\tAndrew Rybchenko <arybchenko@solarflare.com>,\n\tJohn McNamara <john.mcnamara@intel.com>,\n\tPablo de Lara <pablo.de.lara.guarch@intel.com>,\n\tBruce Richardson <bruce.richardson@intel.com>,\n\tHarry van Haaren <harry.van.haaren@intel.com>,\n\tXiaoyun Li <xiaoyun.li@intel.com>, Ferruh Yigit <ferruh.yigit@intel.com>",
        "Cc": "dev@dpdk.org",
        "Date": "Wed, 17 Apr 2019 02:36:27 +0200",
        "Message-Id": "<20190417003627.24607-1-thomas@monjalon.net>",
        "X-Mailer": "git-send-email 2.21.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH] ethdev: deprecate legacy filter API",
        "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": "As stated in the deprecation notice from December 2016,\n\"the legacy filter API, including rte_eth_dev_filter_supported(),\nrte_eth_dev_filter_ctrl() as well as filter types MACVLAN, ETHERTYPE,\nFLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, HASH and L2_TUNNEL, is superseded\nby the generic flow API (rte_flow)\".\n\nAfter a long wait of more than two years, the legacy filter API\nis marked as deprecated, while still tested with testpmd and\nthe tep_termination example.\n\nThe next step will be to announce a deadline for complete removal.\nAs preparation of the removal of rte_eth_ctrl.h,\nRTE_ETH_FLOW_*, RTE_TUNNEL_TYPE_* and RTE_ETH_HASH_FUNCTION_* definitions\nare moved to rte_ethdev.h and rte_flow.h.\n\nSigned-off-by: Thomas Monjalon <thomas@monjalon.net>\n---\n app/test-pmd/cmdline.c               |  1 -\n app/test-pmd/cmdline_flow.c          |  1 -\n drivers/net/dpaa2/dpaa2_flow.c       |  1 -\n drivers/net/dpaa2/dpaa2_mux.c        |  1 -\n drivers/net/enic/enic_clsf.c         |  1 -\n drivers/net/failsafe/failsafe_ops.c  | 20 +--------\n drivers/net/i40e/i40e_ethdev.c       |  1 -\n drivers/net/i40e/i40e_ethdev.h       |  1 -\n drivers/net/i40e/i40e_flow.c         |  1 -\n drivers/net/mlx4/mlx4_flow.c         |  1 -\n drivers/net/mlx4/mlx4_flow.h         |  1 -\n drivers/net/mlx5/mlx5_flow.c         |  1 -\n drivers/net/mlx5/mlx5_flow_dv.c      |  1 -\n drivers/net/mlx5/mlx5_flow_verbs.c   |  1 -\n drivers/net/sfc/sfc_flow.c           |  1 -\n examples/tep_termination/Makefile    |  2 +\n examples/tep_termination/meson.build |  1 +\n lib/librte_ethdev/rte_eth_ctrl.h     | 64 +---------------------------\n lib/librte_ethdev/rte_ethdev.h       | 62 +++++++++++++++++++++++++--\n lib/librte_ethdev/rte_flow.h         | 11 ++++-\n 20 files changed, 75 insertions(+), 99 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\nindex 2ab03c111..3e405d262 100644\n--- a/app/test-pmd/cmdline.c\n+++ b/app/test-pmd/cmdline.c\n@@ -44,7 +44,6 @@\n #include <rte_ethdev.h>\n #include <rte_string_fns.h>\n #include <rte_devargs.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_flow.h>\n #include <rte_gro.h>\n \ndiff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex 54ff1753c..3070e0e0d 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -15,7 +15,6 @@\n \n #include <rte_string_fns.h>\n #include <rte_common.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev.h>\n #include <rte_byteorder.h>\n #include <cmdline_parse.h>\ndiff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c\nindex c94c7ef6b..98f68139b 100644\n--- a/drivers/net/dpaa2/dpaa2_flow.c\n+++ b/drivers/net/dpaa2/dpaa2_flow.c\n@@ -12,7 +12,6 @@\n \n #include <rte_ethdev.h>\n #include <rte_log.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_malloc.h>\n #include <rte_flow_driver.h>\n #include <rte_tailq.h>\ndiff --git a/drivers/net/dpaa2/dpaa2_mux.c b/drivers/net/dpaa2/dpaa2_mux.c\nindex 1d043dcdc..e487c6b54 100644\n--- a/drivers/net/dpaa2/dpaa2_mux.c\n+++ b/drivers/net/dpaa2/dpaa2_mux.c\n@@ -12,7 +12,6 @@\n \n #include <rte_ethdev.h>\n #include <rte_log.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_malloc.h>\n #include <rte_flow_driver.h>\n #include <rte_tailq.h>\ndiff --git a/drivers/net/enic/enic_clsf.c b/drivers/net/enic/enic_clsf.c\nindex 48c8e6264..53f57b01a 100644\n--- a/drivers/net/enic/enic_clsf.c\n+++ b/drivers/net/enic/enic_clsf.c\n@@ -11,7 +11,6 @@\n #include <rte_tcp.h>\n #include <rte_udp.h>\n #include <rte_sctp.h>\n-#include <rte_eth_ctrl.h>\n \n #include \"enic_compat.h\"\n #include \"enic.h\"\ndiff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c\nindex 65957a2e5..43d6a828f 100644\n--- a/drivers/net/failsafe/failsafe_ops.c\n+++ b/drivers/net/failsafe/failsafe_ops.c\n@@ -1208,33 +1208,17 @@ fs_rss_hash_update(struct rte_eth_dev *dev,\n }\n \n static int\n-fs_filter_ctrl(struct rte_eth_dev *dev,\n+fs_filter_ctrl(struct rte_eth_dev *dev __rte_unused,\n \t\tenum rte_filter_type type,\n \t\tenum rte_filter_op op,\n \t\tvoid *arg)\n {\n-\tstruct sub_device *sdev;\n-\tuint8_t i;\n-\tint ret;\n-\n \tif (type == RTE_ETH_FILTER_GENERIC &&\n \t    op == RTE_ETH_FILTER_GET) {\n \t\t*(const void **)arg = &fs_flow_ops;\n \t\treturn 0;\n \t}\n-\tfs_lock(dev, 0);\n-\tFOREACH_SUBDEV_STATE(sdev, i, dev, DEV_ACTIVE) {\n-\t\tDEBUG(\"Calling rte_eth_dev_filter_ctrl on sub_device %d\", i);\n-\t\tret = rte_eth_dev_filter_ctrl(PORT_ID(sdev), type, op, arg);\n-\t\tif ((ret = fs_err(sdev, ret))) {\n-\t\t\tERROR(\"Operation rte_eth_dev_filter_ctrl failed for sub_device %d\"\n-\t\t\t      \" with error %d\", i, ret);\n-\t\t\tfs_unlock(dev, 0);\n-\t\t\treturn ret;\n-\t\t}\n-\t}\n-\tfs_unlock(dev, 0);\n-\treturn 0;\n+\treturn -ENOTSUP;\n }\n \n const struct eth_dev_ops failsafe_ops = {\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 5b01dc1f0..f6fc0056c 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -24,7 +24,6 @@\n #include <rte_memcpy.h>\n #include <rte_alarm.h>\n #include <rte_dev.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_tailq.h>\n #include <rte_hash_crc.h>\n \ndiff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h\nindex 930eb9aba..98550380e 100644\n--- a/drivers/net/i40e/i40e_ethdev.h\n+++ b/drivers/net/i40e/i40e_ethdev.h\n@@ -7,7 +7,6 @@\n \n #include <stdint.h>\n \n-#include <rte_eth_ctrl.h>\n #include <rte_time.h>\n #include <rte_kvargs.h>\n #include <rte_hash.h>\ndiff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c\nindex 3694df255..5447e4ea5 100644\n--- a/drivers/net/i40e/i40e_flow.c\n+++ b/drivers/net/i40e/i40e_flow.c\n@@ -15,7 +15,6 @@\n #include <rte_ethdev_driver.h>\n #include <rte_log.h>\n #include <rte_malloc.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_tailq.h>\n #include <rte_flow_driver.h>\n \ndiff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c\nindex 038dc71d3..1dcdb31a0 100644\n--- a/drivers/net/mlx4/mlx4_flow.c\n+++ b/drivers/net/mlx4/mlx4_flow.c\n@@ -28,7 +28,6 @@\n \n #include <rte_byteorder.h>\n #include <rte_errno.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev_driver.h>\n #include <rte_ether.h>\n #include <rte_flow.h>\ndiff --git a/drivers/net/mlx4/mlx4_flow.h b/drivers/net/mlx4/mlx4_flow.h\nindex 03a4bd05e..26465c66a 100644\n--- a/drivers/net/mlx4/mlx4_flow.h\n+++ b/drivers/net/mlx4/mlx4_flow.h\n@@ -18,7 +18,6 @@\n #pragma GCC diagnostic error \"-Wpedantic\"\n #endif\n \n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev_driver.h>\n #include <rte_flow.h>\n #include <rte_flow_driver.h>\ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex 1c78a5f8e..63420fc3e 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -21,7 +21,6 @@\n \n #include <rte_common.h>\n #include <rte_ether.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev_driver.h>\n #include <rte_flow.h>\n #include <rte_flow_driver.h>\ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex ccb2f7593..04c969b73 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -19,7 +19,6 @@\n \n #include <rte_common.h>\n #include <rte_ether.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev_driver.h>\n #include <rte_flow.h>\n #include <rte_flow_driver.h>\ndiff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c\nindex 3956df1a7..dc074bfb3 100644\n--- a/drivers/net/mlx5/mlx5_flow_verbs.c\n+++ b/drivers/net/mlx5/mlx5_flow_verbs.c\n@@ -20,7 +20,6 @@\n \n #include <rte_common.h>\n #include <rte_ether.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ethdev_driver.h>\n #include <rte_flow.h>\n #include <rte_flow_driver.h>\ndiff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c\nindex cffcd9a4c..944296d7d 100644\n--- a/drivers/net/sfc/sfc_flow.c\n+++ b/drivers/net/sfc/sfc_flow.c\n@@ -11,7 +11,6 @@\n #include <rte_tailq.h>\n #include <rte_common.h>\n #include <rte_ethdev_driver.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_ether.h>\n #include <rte_flow.h>\n #include <rte_flow_driver.h>\ndiff --git a/examples/tep_termination/Makefile b/examples/tep_termination/Makefile\nindex 2da41922f..222679bc9 100644\n--- a/examples/tep_termination/Makefile\n+++ b/examples/tep_termination/Makefile\n@@ -26,6 +26,7 @@ LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)\n LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)\n \n CFLAGS += -DALLOW_EXPERIMENTAL_API\n+CFLAGS += -Wno-deprecated-declarations\n \n build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build\n \t$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)\n@@ -60,6 +61,7 @@ endif\n CFLAGS += -DALLOW_EXPERIMENTAL_API\n CFLAGS += -O3\n CFLAGS += $(WERROR_FLAGS)\n+CFLAGS += -Wno-deprecated-declarations\n \n include $(RTE_SDK)/mk/rte.extapp.mk\n endif\ndiff --git a/examples/tep_termination/meson.build b/examples/tep_termination/meson.build\nindex 6d3636243..0e0cb44f0 100644\n--- a/examples/tep_termination/meson.build\n+++ b/examples/tep_termination/meson.build\n@@ -11,6 +11,7 @@ if host_machine.system() != 'linux'\n endif\n deps += ['hash', 'vhost']\n allow_experimental_apis = true\n+cflags += '-Wno-deprecated-declarations'\n sources = files(\n \t'main.c', 'vxlan.c', 'vxlan_setup.c'\n )\ndiff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h\nindex b3416341b..9fb0657e5 100644\n--- a/lib/librte_ethdev/rte_eth_ctrl.h\n+++ b/lib/librte_ethdev/rte_eth_ctrl.h\n@@ -8,55 +8,20 @@\n #include <stdint.h>\n #include <rte_common.h>\n #include \"rte_ether.h\"\n+#include \"rte_flow.h\"\n \n /**\n+ * @deprecated Please use rte_flow API instead of this legacy one.\n  * @file\n  *\n  * Ethernet device features and related data structures used\n  * by control APIs should be defined in this file.\n- *\n  */\n \n #ifdef __cplusplus\n extern \"C\" {\n #endif\n \n-/*\n- * A packet can be identified by hardware as different flow types. Different\n- * NIC hardwares may support different flow types.\n- * Basically, the NIC hardware identifies the flow type as deep protocol as\n- * possible, and exclusively. For example, if a packet is identified as\n- * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,\n- * though it is an actual IPV4 packet.\n- * Note that the flow types are used to define RSS offload types in\n- * rte_ethdev.h.\n- */\n-#define RTE_ETH_FLOW_UNKNOWN             0\n-#define RTE_ETH_FLOW_RAW                 1\n-#define RTE_ETH_FLOW_IPV4                2\n-#define RTE_ETH_FLOW_FRAG_IPV4           3\n-#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4\n-#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5\n-#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6\n-#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7\n-#define RTE_ETH_FLOW_IPV6                8\n-#define RTE_ETH_FLOW_FRAG_IPV6           9\n-#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10\n-#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11\n-#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12\n-#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13\n-#define RTE_ETH_FLOW_L2_PAYLOAD         14\n-#define RTE_ETH_FLOW_IPV6_EX            15\n-#define RTE_ETH_FLOW_IPV6_TCP_EX        16\n-#define RTE_ETH_FLOW_IPV6_UDP_EX        17\n-#define RTE_ETH_FLOW_PORT               18\n-\t/**< Consider device port number as a flow differentiator */\n-#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */\n-#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */\n-#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */\n-#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */\n-#define RTE_ETH_FLOW_MAX                23\n-\n /**\n  * Feature filter types\n  */\n@@ -218,21 +183,6 @@ struct rte_eth_ntuple_filter {\n \tuint16_t queue;          /**< Queue assigned to when match*/\n };\n \n-/**\n- * Tunneled type.\n- */\n-enum rte_eth_tunnel_type {\n-\tRTE_TUNNEL_TYPE_NONE = 0,\n-\tRTE_TUNNEL_TYPE_VXLAN,\n-\tRTE_TUNNEL_TYPE_GENEVE,\n-\tRTE_TUNNEL_TYPE_TEREDO,\n-\tRTE_TUNNEL_TYPE_NVGRE,\n-\tRTE_TUNNEL_TYPE_IP_IN_GRE,\n-\tRTE_L2_TUNNEL_TYPE_E_TAG,\n-\tRTE_TUNNEL_TYPE_VXLAN_GPE,\n-\tRTE_TUNNEL_TYPE_MAX,\n-};\n-\n /**\n  * filter type of tunneling packet\n  */\n@@ -765,16 +715,6 @@ enum rte_eth_hash_filter_info_type {\n \tRTE_ETH_HASH_FILTER_INFO_TYPE_MAX,\n };\n \n-/**\n- * Hash function types.\n- */\n-enum rte_eth_hash_function {\n-\tRTE_ETH_HASH_FUNCTION_DEFAULT = 0,\n-\tRTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */\n-\tRTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */\n-\tRTE_ETH_HASH_FUNCTION_MAX,\n-};\n-\n #define RTE_SYM_HASH_MASK_ARRAY_SIZE \\\n \t(RTE_ALIGN(RTE_ETH_FLOW_MAX, UINT64_BIT)/UINT64_BIT)\n /**\ndiff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h\nindex 40a068fe8..ca3a990ae 100644\n--- a/lib/librte_ethdev/rte_ethdev.h\n+++ b/lib/librte_ethdev/rte_ethdev.h\n@@ -158,7 +158,6 @@ extern \"C\" {\n #include <rte_config.h>\n \n #include \"rte_ether.h\"\n-#include \"rte_eth_ctrl.h\"\n #include \"rte_dev_info.h\"\n \n extern int rte_eth_dev_logtype;\n@@ -448,8 +447,43 @@ struct rte_eth_rss_conf {\n };\n \n /*\n- * The RSS offload types are defined based on flow types which are defined\n- * in rte_eth_ctrl.h. Different NIC hardwares may support different RSS offload\n+ * A packet can be identified by hardware as different flow types. Different\n+ * NIC hardwares may support different flow types.\n+ * Basically, the NIC hardware identifies the flow type as deep protocol as\n+ * possible, and exclusively. For example, if a packet is identified as\n+ * 'RTE_ETH_FLOW_NONFRAG_IPV4_TCP', it will not be any of other flow types,\n+ * though it is an actual IPV4 packet.\n+ * Note that the flow types are used to define RSS offload types.\n+ */\n+#define RTE_ETH_FLOW_UNKNOWN             0\n+#define RTE_ETH_FLOW_RAW                 1\n+#define RTE_ETH_FLOW_IPV4                2\n+#define RTE_ETH_FLOW_FRAG_IPV4           3\n+#define RTE_ETH_FLOW_NONFRAG_IPV4_TCP    4\n+#define RTE_ETH_FLOW_NONFRAG_IPV4_UDP    5\n+#define RTE_ETH_FLOW_NONFRAG_IPV4_SCTP   6\n+#define RTE_ETH_FLOW_NONFRAG_IPV4_OTHER  7\n+#define RTE_ETH_FLOW_IPV6                8\n+#define RTE_ETH_FLOW_FRAG_IPV6           9\n+#define RTE_ETH_FLOW_NONFRAG_IPV6_TCP   10\n+#define RTE_ETH_FLOW_NONFRAG_IPV6_UDP   11\n+#define RTE_ETH_FLOW_NONFRAG_IPV6_SCTP  12\n+#define RTE_ETH_FLOW_NONFRAG_IPV6_OTHER 13\n+#define RTE_ETH_FLOW_L2_PAYLOAD         14\n+#define RTE_ETH_FLOW_IPV6_EX            15\n+#define RTE_ETH_FLOW_IPV6_TCP_EX        16\n+#define RTE_ETH_FLOW_IPV6_UDP_EX        17\n+#define RTE_ETH_FLOW_PORT               18\n+\t/**< Consider device port number as a flow differentiator */\n+#define RTE_ETH_FLOW_VXLAN              19 /**< VXLAN protocol based flow */\n+#define RTE_ETH_FLOW_GENEVE             20 /**< GENEVE protocol based flow */\n+#define RTE_ETH_FLOW_NVGRE              21 /**< NVGRE protocol based flow */\n+#define RTE_ETH_FLOW_VXLAN_GPE          22 /**< VXLAN-GPE protocol based flow */\n+#define RTE_ETH_FLOW_MAX                23\n+\n+/*\n+ * The RSS offload types are defined based on flow types.\n+ * Different NIC hardwares may support different RSS offload\n  * types. The supported flow types or RSS offload types can be queried by\n  * rte_eth_dev_info_get().\n  */\n@@ -834,6 +868,24 @@ struct rte_eth_pfc_conf {\n \tuint8_t priority;          /**< VLAN User Priority. */\n };\n \n+/**\n+ * Tunneled type.\n+ */\n+enum rte_eth_tunnel_type {\n+\tRTE_TUNNEL_TYPE_NONE = 0,\n+\tRTE_TUNNEL_TYPE_VXLAN,\n+\tRTE_TUNNEL_TYPE_GENEVE,\n+\tRTE_TUNNEL_TYPE_TEREDO,\n+\tRTE_TUNNEL_TYPE_NVGRE,\n+\tRTE_TUNNEL_TYPE_IP_IN_GRE,\n+\tRTE_L2_TUNNEL_TYPE_E_TAG,\n+\tRTE_TUNNEL_TYPE_VXLAN_GPE,\n+\tRTE_TUNNEL_TYPE_MAX,\n+};\n+\n+/* Deprecated API file for rte_eth_dev_filter_* functions */\n+#include \"rte_eth_ctrl.h\"\n+\n /**\n  *  Memory space that can be configured to store Flow Director filters\n  *  in the board memory.\n@@ -934,7 +986,7 @@ struct rte_eth_conf {\n \t/** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC\n \t    is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */\n \tuint32_t dcb_capability_en;\n-\tstruct rte_fdir_conf fdir_conf; /**< FDIR configuration. */\n+\tstruct rte_fdir_conf fdir_conf; /**< FDIR configuration. DEPRECATED */\n \tstruct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */\n };\n \n@@ -3251,6 +3303,7 @@ rte_eth_dev_udp_tunnel_port_delete(uint16_t port_id,\n  *   - (-ENODEV) if *port_id* invalid.\n  *   - (-EIO) if device is removed.\n  */\n+__rte_deprecated\n int rte_eth_dev_filter_supported(uint16_t port_id,\n \t\tenum rte_filter_type filter_type);\n \n@@ -3273,6 +3326,7 @@ int rte_eth_dev_filter_supported(uint16_t port_id,\n  *   - (-EIO) if device is removed.\n  *   - others depends on the specific operations implementation.\n  */\n+__rte_deprecated\n int rte_eth_dev_filter_ctrl(uint16_t port_id, enum rte_filter_type filter_type,\n \t\t\tenum rte_filter_op filter_op, void *arg);\n \ndiff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h\nindex c0fe87924..63f84fca6 100644\n--- a/lib/librte_ethdev/rte_flow.h\n+++ b/lib/librte_ethdev/rte_flow.h\n@@ -20,7 +20,6 @@\n #include <rte_arp.h>\n #include <rte_common.h>\n #include <rte_ether.h>\n-#include <rte_eth_ctrl.h>\n #include <rte_icmp.h>\n #include <rte_ip.h>\n #include <rte_sctp.h>\n@@ -1738,6 +1737,16 @@ struct rte_flow_query_count {\n \tuint64_t bytes; /**< Number of bytes through this rule [out]. */\n };\n \n+/**\n+ * Hash function types.\n+ */\n+enum rte_eth_hash_function {\n+\tRTE_ETH_HASH_FUNCTION_DEFAULT = 0,\n+\tRTE_ETH_HASH_FUNCTION_TOEPLITZ, /**< Toeplitz */\n+\tRTE_ETH_HASH_FUNCTION_SIMPLE_XOR, /**< Simple XOR */\n+\tRTE_ETH_HASH_FUNCTION_MAX,\n+};\n+\n /**\n  * RTE_FLOW_ACTION_TYPE_RSS\n  *\n",
    "prefixes": []
}