get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81764,
    "url": "http://patches.dpdk.org/api/patches/81764/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1603359758-13297-8-git-send-email-arybchenko@solarflare.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": "<1603359758-13297-8-git-send-email-arybchenko@solarflare.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1603359758-13297-8-git-send-email-arybchenko@solarflare.com",
    "date": "2020-10-22T09:42:30",
    "name": "[v2,07/14] ethdev: remove legacy N-tuple filter type support",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "d409080bb5f9a542a368ba86ba1d3719f181158e",
    "submitter": {
        "id": 607,
        "url": "http://patches.dpdk.org/api/people/607/?format=api",
        "name": "Andrew Rybchenko",
        "email": "arybchenko@solarflare.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1603359758-13297-8-git-send-email-arybchenko@solarflare.com/mbox/",
    "series": [
        {
            "id": 13207,
            "url": "http://patches.dpdk.org/api/series/13207/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13207",
            "date": "2020-10-22T09:42:23",
            "name": "ethdev: remove legacy filter API",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/13207/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81764/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81764/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 9D509A04DD;\n\tThu, 22 Oct 2020 11:45:02 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id AE0E5A98C;\n\tThu, 22 Oct 2020 11:43:18 +0200 (CEST)",
            "from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com\n [67.231.154.164]) by dpdk.org (Postfix) with ESMTP id 4E866A962\n for <dev@dpdk.org>; Thu, 22 Oct 2020 11:43:07 +0200 (CEST)",
            "from mx1-us1.ppe-hosted.com (unknown [10.110.50.144])\n by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id\n EABE720076; Thu, 22 Oct 2020 09:43:05 +0000 (UTC)",
            "from us4-mdac16-54.at1.mdlocal (unknown [10.110.50.14])\n by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id E940C800A4;\n Thu, 22 Oct 2020 09:43:05 +0000 (UTC)",
            "from mx1-us1.ppe-hosted.com (unknown [10.110.48.45])\n by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id\n 5460B4004D;\n Thu, 22 Oct 2020 09:43:05 +0000 (UTC)",
            "from webmail.solarflare.com (uk.solarflare.com [193.34.186.16])\n (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits))\n (No client certificate requested)\n by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id\n 1406094005E;\n Thu, 22 Oct 2020 09:43:05 +0000 (UTC)",
            "from ukex01.SolarFlarecom.com (10.17.10.4) by\n ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server (TLS) id\n 15.0.1497.2; Thu, 22 Oct 2020 10:43:02 +0100",
            "from opal.uk.solarflarecom.com (10.17.10.1) by\n ukex01.SolarFlarecom.com (10.17.10.4) with Microsoft SMTP Server id\n 15.0.1497.2 via Frontend Transport; Thu, 22 Oct 2020 10:43:02 +0100",
            "from ukv-loginhost.uk.solarflarecom.com\n (ukv-loginhost.uk.solarflarecom.com [10.17.10.39])\n by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id 09M9h2YF023259;\n Thu, 22 Oct 2020 10:43:02 +0100",
            "from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1])\n by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 01A291613A9;\n Thu, 22 Oct 2020 10:43:02 +0100 (BST)"
        ],
        "X-Virus-Scanned": "Proofpoint Essentials engine",
        "From": "Andrew Rybchenko <arybchenko@solarflare.com>",
        "To": "Wenzhuo Lu <wenzhuo.lu@intel.com>, Beilei Xing <beilei.xing@intel.com>,\n Bernard Iremonger <bernard.iremonger@intel.com>, Ray Kinsella\n <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>, Ajit Khaparde\n <ajit.khaparde@broadcom.com>, Somnath Kotur <somnath.kotur@broadcom.com>,\n Jeff Guo <jia.guo@intel.com>, Haiyue Wang <haiyue.wang@intel.com>, \"Rasesh\n Mody\" <rmody@marvell.com>, Shahed Shaikh <shshaikh@marvell.com>, \"Andrew\n Rybchenko\" <andrew.rybchenko@oktetlabs.ru>, Thomas Monjalon\n <thomas@monjalon.net>, Ferruh Yigit <ferruh.yigit@intel.com>",
        "CC": "<dev@dpdk.org>",
        "Date": "Thu, 22 Oct 2020 10:42:30 +0100",
        "Message-ID": "<1603359758-13297-8-git-send-email-arybchenko@solarflare.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1603359758-13297-1-git-send-email-arybchenko@solarflare.com>",
        "References": "<1603030152-13451-1-git-send-email-arybchenko@solarflare.com>\n <1603359758-13297-1-git-send-email-arybchenko@solarflare.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-TM-AS-Product-Ver": "SMEX-12.5.0.1300-8.6.1012-25740.003",
        "X-TM-AS-Result": "No-3.688500-8.000000-10",
        "X-TMASE-MatchedRID": "/WopOBtRYXxLf8kcbx2o6lXXOFXDx25iSkWlzdsmIx5jLp8Cm8vwFzPH\n iMP4mQVW0tk345/lH6nYLqzgafDsrTJ/6aMoV+FcuwdUMMznEA8/pOSL72dTfwdkFovAReUoaUX\n s6FguVy1Xz00x6cV6P3KecgTryClXMGg+wgnY/elHQFjzAbvJEG9Xf86cwKVaIEVurWhHQGZWzB\n amHOOgEspIsmbP77qCY+F/dNMu2Vg5HWa1kxc3MU95wQijrwBLH7bpDOhZpjZ0FoS1aixTNW8CW\n e5rQ2bthvy9AWa8j3yYPkwxXl3ssNWqK5V30sx5F9p7X9UAWGXrwADV7fYz7KcxvibtoCq3FSxi\n D1T+DkEP5Vx2YqZN6Xs5XC2UMPWe1ILvU6mG7CEFxov+3JYvYzVPM/rRSR0dCEX9AJK2MMXlKYF\n H5Rzmv0xQgSlHijV4uJuSewTHA51KpIM6MfwkGpU7Bltw5qVLzDF2Shx2CrUhg/had72R1BE5kx\n NKvq7criaHh5XUdxlRPBCdKxRE1Qx8yLMFzjjQvoQkZKo949MrU8f3oY88YHESlDkZSZqTKWM3a\n QNUjqhnEu+zncSE6+cMqX/b1oPCKtu1YMQnmHX4KPASpfWnuWtNZoZ5+7ekBCzD0Dc8iUsrwt+L\n BYpjI7SN1VVzELdNdnXJtWVwrsBD22D6nfxmiRYZoKAPfQ6C/Eo10sZXT1M/HwRyaRVM1crxXKA\n aQ/+cRyQ3q1ess++m96XDSLGHYi+/qcv2pf9pgYFDtM3wGBrcVi8qZmJWc753x71IIIESkggyKd\n NCEYAV/FtK2Xu1SkowC6rQKSNmckEqwYLs6GyeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8gMcaJ6m\n vqwudx3GTIRTCLDqdpNTIUqdjaSYys5C3xre5uqssH3TRc8vU24pLfQFmdAgUhku2yAbQNQf6dU\n s3KIKyog/1PG+0mHItHsIGZltH7cGd19dSFd",
        "X-TM-AS-User-Approved-Sender": "Yes",
        "X-TM-AS-User-Blocked-Sender": "No",
        "X-TMASE-Result": "10--3.688500-8.000000",
        "X-TMASE-Version": "SMEX-12.5.0.1300-8.6.1012-25740.003",
        "X-MDID": "1603359785-uyIKxqIvxPbg",
        "X-PPE-DISP": "1603359785;uyIKxqIvxPbg",
        "Subject": "[dpdk-dev] [PATCH v2 07/14] ethdev: remove legacy N-tuple filter\n\ttype support",
        "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 <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Instead of N-tuple filter RTE flow API should be used.\n\nPreserve struct rte_eth_ntuple_filter in ethdev API since\nthe structure and related defines are used in flow classify\nlibrary and a number of drivers.\n\nPreserve RTE_ETH_FILTER_NTUPLE because of usage in drivers.\n\nSigned-off-by: Andrew Rybchenko <arybchenko@solarflare.com>\nAcked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>\nAcked-by: Haiyue Wang <haiyue.wang@intel.com>\n---\n app/test-pmd/cmdline.c                      | 369 --------------------\n doc/guides/rel_notes/deprecation.rst        |   2 +-\n doc/guides/testpmd_app_ug/testpmd_funcs.rst |  81 -----\n drivers/net/bnxt/bnxt_ethdev.c              | 245 -------------\n drivers/net/e1000/igb_ethdev.c              | 130 +------\n drivers/net/ixgbe/ixgbe_ethdev.c            | 101 ------\n drivers/net/qede/qede_filter.c              |  63 ----\n drivers/net/sfc/sfc_ethdev.c                |   3 -\n lib/librte_ethdev/rte_eth_ctrl.h            |   3 +-\n 9 files changed, 3 insertions(+), 994 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\nindex 12b0e32ece..d3806cef79 100644\n--- a/app/test-pmd/cmdline.c\n+++ b/app/test-pmd/cmdline.c\n@@ -976,20 +976,6 @@ static void cmd_help_long_parsed(void *parsed_result,\n \t\t\t\"filters:\\n\"\n \t\t\t\"--------\\n\\n\"\n \n-\t\t\t\"2tuple_filter (port_id) (add|del)\"\n-\t\t\t\" dst_port (dst_port_value) protocol (protocol_value)\"\n-\t\t\t\" mask (mask_value) tcp_flags (tcp_flags_value)\"\n-\t\t\t\" priority (prio_value) queue (queue_id)\\n\"\n-\t\t\t\"    Add/Del a 2tuple filter.\\n\\n\"\n-\n-\t\t\t\"5tuple_filter (port_id) (add|del)\"\n-\t\t\t\" dst_ip (dst_address) src_ip (src_address)\"\n-\t\t\t\" dst_port (dst_port_value) src_port (src_port_value)\"\n-\t\t\t\" protocol (protocol_value)\"\n-\t\t\t\" mask (mask_value) tcp_flags (tcp_flags_value)\"\n-\t\t\t\" priority (prio_value) queue (queue_id)\\n\"\n-\t\t\t\"    Add/Del a 5tuple filter.\\n\\n\"\n-\n \t\t\t\"flow_director_filter (port_id) mode IP (add|del|update)\"\n \t\t\t\" flow (ipv4-other|ipv4-frag|ipv6-other|ipv6-frag)\"\n \t\t\t\" src (src_ip_address) dst (dst_ip_address)\"\n@@ -10421,359 +10407,6 @@ cmdline_parse_inst_t cmd_show_queue_region_info_all = {\n \t},\n };\n \n-/* *** ADD/REMOVE A 2tuple FILTER *** */\n-struct cmd_2tuple_filter_result {\n-\tcmdline_fixed_string_t filter;\n-\tportid_t port_id;\n-\tcmdline_fixed_string_t ops;\n-\tcmdline_fixed_string_t dst_port;\n-\tuint16_t dst_port_value;\n-\tcmdline_fixed_string_t protocol;\n-\tuint8_t protocol_value;\n-\tcmdline_fixed_string_t mask;\n-\tuint8_t  mask_value;\n-\tcmdline_fixed_string_t tcp_flags;\n-\tuint8_t tcp_flags_value;\n-\tcmdline_fixed_string_t priority;\n-\tuint8_t  priority_value;\n-\tcmdline_fixed_string_t queue;\n-\tuint16_t  queue_id;\n-};\n-\n-static void\n-cmd_2tuple_filter_parsed(void *parsed_result,\n-\t\t\t__rte_unused struct cmdline *cl,\n-\t\t\t__rte_unused void *data)\n-{\n-\tstruct rte_eth_ntuple_filter filter;\n-\tstruct cmd_2tuple_filter_result *res = parsed_result;\n-\tint ret = 0;\n-\n-\tret = rte_eth_dev_filter_supported(res->port_id, RTE_ETH_FILTER_NTUPLE);\n-\tif (ret < 0) {\n-\t\tprintf(\"ntuple filter is not supported on port %u.\\n\",\n-\t\t\tres->port_id);\n-\t\treturn;\n-\t}\n-\n-\tmemset(&filter, 0, sizeof(struct rte_eth_ntuple_filter));\n-\n-\tfilter.flags = RTE_2TUPLE_FLAGS;\n-\tfilter.dst_port_mask = (res->mask_value & 0x02) ? UINT16_MAX : 0;\n-\tfilter.proto_mask = (res->mask_value & 0x01) ? UINT8_MAX : 0;\n-\tfilter.proto = res->protocol_value;\n-\tfilter.priority = res->priority_value;\n-\tif (res->tcp_flags_value != 0 && filter.proto != IPPROTO_TCP) {\n-\t\tprintf(\"nonzero tcp_flags is only meaningful\"\n-\t\t\t\" when protocol is TCP.\\n\");\n-\t\treturn;\n-\t}\n-\tif (res->tcp_flags_value > RTE_NTUPLE_TCP_FLAGS_MASK) {\n-\t\tprintf(\"invalid TCP flags.\\n\");\n-\t\treturn;\n-\t}\n-\n-\tif (res->tcp_flags_value != 0) {\n-\t\tfilter.flags |= RTE_NTUPLE_FLAGS_TCP_FLAG;\n-\t\tfilter.tcp_flags = res->tcp_flags_value;\n-\t}\n-\n-\t/* need convert to big endian. */\n-\tfilter.dst_port = rte_cpu_to_be_16(res->dst_port_value);\n-\tfilter.queue = res->queue_id;\n-\n-\tif (!strcmp(res->ops, \"add\"))\n-\t\tret = rte_eth_dev_filter_ctrl(res->port_id,\n-\t\t\t\tRTE_ETH_FILTER_NTUPLE,\n-\t\t\t\tRTE_ETH_FILTER_ADD,\n-\t\t\t\t&filter);\n-\telse\n-\t\tret = rte_eth_dev_filter_ctrl(res->port_id,\n-\t\t\t\tRTE_ETH_FILTER_NTUPLE,\n-\t\t\t\tRTE_ETH_FILTER_DELETE,\n-\t\t\t\t&filter);\n-\tif (ret < 0)\n-\t\tprintf(\"2tuple filter programming error: (%s)\\n\",\n-\t\t\tstrerror(-ret));\n-\n-}\n-\n-cmdline_parse_token_string_t cmd_2tuple_filter_filter =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\t filter, \"2tuple_filter\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_port_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tport_id, UINT16);\n-cmdline_parse_token_string_t cmd_2tuple_filter_ops =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\t ops, \"add#del\");\n-cmdline_parse_token_string_t cmd_2tuple_filter_dst_port =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tdst_port, \"dst_port\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_dst_port_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tdst_port_value, UINT16);\n-cmdline_parse_token_string_t cmd_2tuple_filter_protocol =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tprotocol, \"protocol\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_protocol_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tprotocol_value, UINT8);\n-cmdline_parse_token_string_t cmd_2tuple_filter_mask =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tmask, \"mask\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_mask_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tmask_value, INT8);\n-cmdline_parse_token_string_t cmd_2tuple_filter_tcp_flags =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\ttcp_flags, \"tcp_flags\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_tcp_flags_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\ttcp_flags_value, UINT8);\n-cmdline_parse_token_string_t cmd_2tuple_filter_priority =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tpriority, \"priority\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_priority_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tpriority_value, UINT8);\n-cmdline_parse_token_string_t cmd_2tuple_filter_queue =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tqueue, \"queue\");\n-cmdline_parse_token_num_t cmd_2tuple_filter_queue_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_2tuple_filter_result,\n-\t\t\t\tqueue_id, UINT16);\n-\n-cmdline_parse_inst_t cmd_2tuple_filter = {\n-\t.f = cmd_2tuple_filter_parsed,\n-\t.data = NULL,\n-\t.help_str = \"2tuple_filter <port_id> add|del dst_port <value> protocol \"\n-\t\t\"<value> mask <value> tcp_flags <value> priority <value> queue \"\n-\t\t\"<queue_id>: Add a 2tuple filter\",\n-\t.tokens = {\n-\t\t(void *)&cmd_2tuple_filter_filter,\n-\t\t(void *)&cmd_2tuple_filter_port_id,\n-\t\t(void *)&cmd_2tuple_filter_ops,\n-\t\t(void *)&cmd_2tuple_filter_dst_port,\n-\t\t(void *)&cmd_2tuple_filter_dst_port_value,\n-\t\t(void *)&cmd_2tuple_filter_protocol,\n-\t\t(void *)&cmd_2tuple_filter_protocol_value,\n-\t\t(void *)&cmd_2tuple_filter_mask,\n-\t\t(void *)&cmd_2tuple_filter_mask_value,\n-\t\t(void *)&cmd_2tuple_filter_tcp_flags,\n-\t\t(void *)&cmd_2tuple_filter_tcp_flags_value,\n-\t\t(void *)&cmd_2tuple_filter_priority,\n-\t\t(void *)&cmd_2tuple_filter_priority_value,\n-\t\t(void *)&cmd_2tuple_filter_queue,\n-\t\t(void *)&cmd_2tuple_filter_queue_id,\n-\t\tNULL,\n-\t},\n-};\n-\n-/* *** ADD/REMOVE A 5tuple FILTER *** */\n-struct cmd_5tuple_filter_result {\n-\tcmdline_fixed_string_t filter;\n-\tportid_t port_id;\n-\tcmdline_fixed_string_t ops;\n-\tcmdline_fixed_string_t dst_ip;\n-\tcmdline_ipaddr_t dst_ip_value;\n-\tcmdline_fixed_string_t src_ip;\n-\tcmdline_ipaddr_t src_ip_value;\n-\tcmdline_fixed_string_t dst_port;\n-\tuint16_t dst_port_value;\n-\tcmdline_fixed_string_t src_port;\n-\tuint16_t src_port_value;\n-\tcmdline_fixed_string_t protocol;\n-\tuint8_t protocol_value;\n-\tcmdline_fixed_string_t mask;\n-\tuint8_t  mask_value;\n-\tcmdline_fixed_string_t tcp_flags;\n-\tuint8_t tcp_flags_value;\n-\tcmdline_fixed_string_t priority;\n-\tuint8_t  priority_value;\n-\tcmdline_fixed_string_t queue;\n-\tuint16_t  queue_id;\n-};\n-\n-static void\n-cmd_5tuple_filter_parsed(void *parsed_result,\n-\t\t\t__rte_unused struct cmdline *cl,\n-\t\t\t__rte_unused void *data)\n-{\n-\tstruct rte_eth_ntuple_filter filter;\n-\tstruct cmd_5tuple_filter_result *res = parsed_result;\n-\tint ret = 0;\n-\n-\tret = rte_eth_dev_filter_supported(res->port_id, RTE_ETH_FILTER_NTUPLE);\n-\tif (ret < 0) {\n-\t\tprintf(\"ntuple filter is not supported on port %u.\\n\",\n-\t\t\tres->port_id);\n-\t\treturn;\n-\t}\n-\n-\tmemset(&filter, 0, sizeof(struct rte_eth_ntuple_filter));\n-\n-\tfilter.flags = RTE_5TUPLE_FLAGS;\n-\tfilter.dst_ip_mask = (res->mask_value & 0x10) ? UINT32_MAX : 0;\n-\tfilter.src_ip_mask = (res->mask_value & 0x08) ? UINT32_MAX : 0;\n-\tfilter.dst_port_mask = (res->mask_value & 0x04) ? UINT16_MAX : 0;\n-\tfilter.src_port_mask = (res->mask_value & 0x02) ? UINT16_MAX : 0;\n-\tfilter.proto_mask = (res->mask_value & 0x01) ? UINT8_MAX : 0;\n-\tfilter.proto = res->protocol_value;\n-\tfilter.priority = res->priority_value;\n-\tif (res->tcp_flags_value != 0 && filter.proto != IPPROTO_TCP) {\n-\t\tprintf(\"nonzero tcp_flags is only meaningful\"\n-\t\t\t\" when protocol is TCP.\\n\");\n-\t\treturn;\n-\t}\n-\tif (res->tcp_flags_value > RTE_NTUPLE_TCP_FLAGS_MASK) {\n-\t\tprintf(\"invalid TCP flags.\\n\");\n-\t\treturn;\n-\t}\n-\n-\tif (res->tcp_flags_value != 0) {\n-\t\tfilter.flags |= RTE_NTUPLE_FLAGS_TCP_FLAG;\n-\t\tfilter.tcp_flags = res->tcp_flags_value;\n-\t}\n-\n-\tif (res->dst_ip_value.family == AF_INET)\n-\t\t/* no need to convert, already big endian. */\n-\t\tfilter.dst_ip = res->dst_ip_value.addr.ipv4.s_addr;\n-\telse {\n-\t\tif (filter.dst_ip_mask == 0) {\n-\t\t\tprintf(\"can not support ipv6 involved compare.\\n\");\n-\t\t\treturn;\n-\t\t}\n-\t\tfilter.dst_ip = 0;\n-\t}\n-\n-\tif (res->src_ip_value.family == AF_INET)\n-\t\t/* no need to convert, already big endian. */\n-\t\tfilter.src_ip = res->src_ip_value.addr.ipv4.s_addr;\n-\telse {\n-\t\tif (filter.src_ip_mask == 0) {\n-\t\t\tprintf(\"can not support ipv6 involved compare.\\n\");\n-\t\t\treturn;\n-\t\t}\n-\t\tfilter.src_ip = 0;\n-\t}\n-\t/* need convert to big endian. */\n-\tfilter.dst_port = rte_cpu_to_be_16(res->dst_port_value);\n-\tfilter.src_port = rte_cpu_to_be_16(res->src_port_value);\n-\tfilter.queue = res->queue_id;\n-\n-\tif (!strcmp(res->ops, \"add\"))\n-\t\tret = rte_eth_dev_filter_ctrl(res->port_id,\n-\t\t\t\tRTE_ETH_FILTER_NTUPLE,\n-\t\t\t\tRTE_ETH_FILTER_ADD,\n-\t\t\t\t&filter);\n-\telse\n-\t\tret = rte_eth_dev_filter_ctrl(res->port_id,\n-\t\t\t\tRTE_ETH_FILTER_NTUPLE,\n-\t\t\t\tRTE_ETH_FILTER_DELETE,\n-\t\t\t\t&filter);\n-\tif (ret < 0)\n-\t\tprintf(\"5tuple filter programming error: (%s)\\n\",\n-\t\t\tstrerror(-ret));\n-}\n-\n-cmdline_parse_token_string_t cmd_5tuple_filter_filter =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\t filter, \"5tuple_filter\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_port_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tport_id, UINT16);\n-cmdline_parse_token_string_t cmd_5tuple_filter_ops =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\t ops, \"add#del\");\n-cmdline_parse_token_string_t cmd_5tuple_filter_dst_ip =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tdst_ip, \"dst_ip\");\n-cmdline_parse_token_ipaddr_t cmd_5tuple_filter_dst_ip_value =\n-\tTOKEN_IPADDR_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tdst_ip_value);\n-cmdline_parse_token_string_t cmd_5tuple_filter_src_ip =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tsrc_ip, \"src_ip\");\n-cmdline_parse_token_ipaddr_t cmd_5tuple_filter_src_ip_value =\n-\tTOKEN_IPADDR_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tsrc_ip_value);\n-cmdline_parse_token_string_t cmd_5tuple_filter_dst_port =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tdst_port, \"dst_port\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_dst_port_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tdst_port_value, UINT16);\n-cmdline_parse_token_string_t cmd_5tuple_filter_src_port =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tsrc_port, \"src_port\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_src_port_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tsrc_port_value, UINT16);\n-cmdline_parse_token_string_t cmd_5tuple_filter_protocol =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tprotocol, \"protocol\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_protocol_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tprotocol_value, UINT8);\n-cmdline_parse_token_string_t cmd_5tuple_filter_mask =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tmask, \"mask\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_mask_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tmask_value, INT8);\n-cmdline_parse_token_string_t cmd_5tuple_filter_tcp_flags =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\ttcp_flags, \"tcp_flags\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_tcp_flags_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\ttcp_flags_value, UINT8);\n-cmdline_parse_token_string_t cmd_5tuple_filter_priority =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tpriority, \"priority\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_priority_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tpriority_value, UINT8);\n-cmdline_parse_token_string_t cmd_5tuple_filter_queue =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tqueue, \"queue\");\n-cmdline_parse_token_num_t cmd_5tuple_filter_queue_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_5tuple_filter_result,\n-\t\t\t\tqueue_id, UINT16);\n-\n-cmdline_parse_inst_t cmd_5tuple_filter = {\n-\t.f = cmd_5tuple_filter_parsed,\n-\t.data = NULL,\n-\t.help_str = \"5tuple_filter <port_id> add|del dst_ip <value> \"\n-\t\t\"src_ip <value> dst_port <value> src_port <value> \"\n-\t\t\"protocol <value>  mask <value> tcp_flags <value> \"\n-\t\t\"priority <value> queue <queue_id>: Add/Del a 5tuple filter\",\n-\t.tokens = {\n-\t\t(void *)&cmd_5tuple_filter_filter,\n-\t\t(void *)&cmd_5tuple_filter_port_id,\n-\t\t(void *)&cmd_5tuple_filter_ops,\n-\t\t(void *)&cmd_5tuple_filter_dst_ip,\n-\t\t(void *)&cmd_5tuple_filter_dst_ip_value,\n-\t\t(void *)&cmd_5tuple_filter_src_ip,\n-\t\t(void *)&cmd_5tuple_filter_src_ip_value,\n-\t\t(void *)&cmd_5tuple_filter_dst_port,\n-\t\t(void *)&cmd_5tuple_filter_dst_port_value,\n-\t\t(void *)&cmd_5tuple_filter_src_port,\n-\t\t(void *)&cmd_5tuple_filter_src_port_value,\n-\t\t(void *)&cmd_5tuple_filter_protocol,\n-\t\t(void *)&cmd_5tuple_filter_protocol_value,\n-\t\t(void *)&cmd_5tuple_filter_mask,\n-\t\t(void *)&cmd_5tuple_filter_mask_value,\n-\t\t(void *)&cmd_5tuple_filter_tcp_flags,\n-\t\t(void *)&cmd_5tuple_filter_tcp_flags_value,\n-\t\t(void *)&cmd_5tuple_filter_priority,\n-\t\t(void *)&cmd_5tuple_filter_priority_value,\n-\t\t(void *)&cmd_5tuple_filter_queue,\n-\t\t(void *)&cmd_5tuple_filter_queue_id,\n-\t\tNULL,\n-\t},\n-};\n-\n /* *** Filters Control *** */\n \n /* *** deal with flow director filter *** */\n@@ -19542,8 +19175,6 @@ cmdline_parse_ctx_t main_ctx[] = {\n \t(cmdline_parse_inst_t *)&cmd_config_rss_hash_key,\n \t(cmdline_parse_inst_t *)&cmd_dump,\n \t(cmdline_parse_inst_t *)&cmd_dump_one,\n-\t(cmdline_parse_inst_t *)&cmd_2tuple_filter,\n-\t(cmdline_parse_inst_t *)&cmd_5tuple_filter,\n \t(cmdline_parse_inst_t *)&cmd_add_del_ip_flow_director,\n \t(cmdline_parse_inst_t *)&cmd_add_del_udp_flow_director,\n \t(cmdline_parse_inst_t *)&cmd_add_del_sctp_flow_director,\ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex 99528aa884..d95b0e00e6 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -97,7 +97,7 @@ Deprecation Notices\n \n * ethdev: the legacy filter API, including\n   ``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as well\n-  as filter types NTUPLE, TUNNEL, FDIR,\n+  as filter types TUNNEL, FDIR,\n   HASH and L2_TUNNEL, is superseded by the generic flow API (rte_flow) in\n   PMDs that implement the latter.\n   The legacy API will be removed in DPDK 20.11.\ndiff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst\nindex cdaa49284e..50c09d557b 100644\n--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst\n+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst\n@@ -3276,87 +3276,6 @@ This section details the available filter functions that are available.\n Note these functions interface the deprecated legacy filtering framework,\n superseded by *rte_flow*. See `Flow rules management`_.\n \n-2tuple_filter\n-~~~~~~~~~~~~~~~~~\n-\n-Add or delete a 2-tuple filter,\n-which identifies packets by specific protocol and destination TCP/UDP port\n-and forwards packets into one of the receive queues::\n-\n-   2tuple_filter (port_id) (add|del) dst_port (dst_port_value) \\\n-                 protocol (protocol_value) mask (mask_value) \\\n-                 tcp_flags (tcp_flags_value) priority (prio_value) \\\n-                 queue (queue_id)\n-\n-The available information parameters are:\n-\n-* ``port_id``: The port which the 2-tuple filter assigned on.\n-\n-* ``dst_port_value``: Destination port in L4.\n-\n-* ``protocol_value``: IP L4 protocol.\n-\n-* ``mask_value``: Participates in the match or not by bit for field above, 1b means participate.\n-\n-* ``tcp_flags_value``: TCP control bits. The non-zero value is invalid, when the pro_value is not set to 0x06 (TCP).\n-\n-* ``prio_value``: Priority of this filter.\n-\n-* ``queue_id``: The receive queue associated with this 2-tuple filter.\n-\n-Example, to add/remove an 2tuple filter rule::\n-\n-   testpmd> 2tuple_filter 0 add dst_port 32 protocol 0x06 mask 0x03 \\\n-                          tcp_flags 0x02 priority 3 queue 3\n-\n-   testpmd> 2tuple_filter 0 del dst_port 32 protocol 0x06 mask 0x03 \\\n-                          tcp_flags 0x02 priority 3 queue 3\n-\n-5tuple_filter\n-~~~~~~~~~~~~~~~~~\n-\n-Add or delete a 5-tuple filter,\n-which consists of a 5-tuple (protocol, source and destination IP addresses, source and destination TCP/UDP/SCTP port)\n-and routes packets into one of the receive queues::\n-\n-   5tuple_filter (port_id) (add|del) dst_ip (dst_address) src_ip \\\n-                 (src_address) dst_port (dst_port_value) \\\n-                 src_port (src_port_value) protocol (protocol_value) \\\n-                 mask (mask_value) tcp_flags (tcp_flags_value) \\\n-                 priority (prio_value) queue (queue_id)\n-\n-The available information parameters are:\n-\n-* ``port_id``: The port which the 5-tuple filter assigned on.\n-\n-* ``dst_address``: Destination IP address.\n-\n-* ``src_address``: Source IP address.\n-\n-* ``dst_port_value``: TCP/UDP destination port.\n-\n-* ``src_port_value``: TCP/UDP source port.\n-\n-* ``protocol_value``: L4 protocol.\n-\n-* ``mask_value``: Participates in the match or not by bit for field above, 1b means participate\n-\n-* ``tcp_flags_value``: TCP control bits. The non-zero value is invalid, when the protocol_value is not set to 0x06 (TCP).\n-\n-* ``prio_value``: The priority of this filter.\n-\n-* ``queue_id``: The receive queue associated with this 5-tuple filter.\n-\n-Example, to add/remove an 5tuple filter rule::\n-\n-   testpmd> 5tuple_filter 0 add dst_ip 2.2.2.5 src_ip 2.2.2.4 \\\n-            dst_port 64 src_port 32 protocol 0x06 mask 0x1F \\\n-            flags 0x0 priority 3 queue 3\n-\n-   testpmd> 5tuple_filter 0 del dst_ip 2.2.2.5 src_ip 2.2.2.4 \\\n-            dst_port 64 src_port 32 protocol 0x06 mask 0x1F \\\n-            flags 0x0 priority 3 queue 3\n-\n .. _testpmd_flow_director:\n \n flow_director_filter\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex ec43f1cfde..60f8b935db 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -2990,248 +2990,6 @@ bnxt_tx_descriptor_status_op(void *tx_queue, uint16_t offset)\n \treturn RTE_ETH_TX_DESC_FULL;\n }\n \n-static inline int\n-parse_ntuple_filter(struct bnxt *bp,\n-\t\t    struct rte_eth_ntuple_filter *nfilter,\n-\t\t    struct bnxt_filter_info *bfilter)\n-{\n-\tuint32_t en = 0;\n-\n-\tif (nfilter->queue >= bp->rx_nr_rings) {\n-\t\tPMD_DRV_LOG(ERR, \"Invalid queue %d\\n\", nfilter->queue);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (nfilter->dst_port_mask) {\n-\tcase UINT16_MAX:\n-\t\tbfilter->dst_port_mask = -1;\n-\t\tbfilter->dst_port = nfilter->dst_port;\n-\t\ten |= NTUPLE_FLTR_ALLOC_INPUT_EN_DST_PORT |\n-\t\t\tNTUPLE_FLTR_ALLOC_INPUT_EN_DST_PORT_MASK;\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"invalid dst_port mask.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tbfilter->ip_addr_type = NTUPLE_FLTR_ALLOC_INPUT_IP_ADDR_TYPE_IPV4;\n-\ten |= NTUPLE_FLTR_ALLOC_IN_EN_IP_PROTO;\n-\n-\tswitch (nfilter->proto_mask) {\n-\tcase UINT8_MAX:\n-\t\tif (nfilter->proto == 17) /* IPPROTO_UDP */\n-\t\t\tbfilter->ip_protocol = 17;\n-\t\telse if (nfilter->proto == 6) /* IPPROTO_TCP */\n-\t\t\tbfilter->ip_protocol = 6;\n-\t\telse\n-\t\t\treturn -EINVAL;\n-\t\ten |= NTUPLE_FLTR_ALLOC_IN_EN_IP_PROTO;\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"invalid protocol mask.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (nfilter->dst_ip_mask) {\n-\tcase UINT32_MAX:\n-\t\tbfilter->dst_ipaddr_mask[0] = -1;\n-\t\tbfilter->dst_ipaddr[0] = nfilter->dst_ip;\n-\t\ten |= NTUPLE_FLTR_ALLOC_INPUT_EN_DST_IPADDR |\n-\t\t\tNTUPLE_FLTR_ALLOC_INPUT_EN_DST_IPADDR_MASK;\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"invalid dst_ip mask.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (nfilter->src_ip_mask) {\n-\tcase UINT32_MAX:\n-\t\tbfilter->src_ipaddr_mask[0] = -1;\n-\t\tbfilter->src_ipaddr[0] = nfilter->src_ip;\n-\t\ten |= NTUPLE_FLTR_ALLOC_INPUT_EN_SRC_IPADDR |\n-\t\t\tNTUPLE_FLTR_ALLOC_INPUT_EN_SRC_IPADDR_MASK;\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"invalid src_ip mask.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (nfilter->src_port_mask) {\n-\tcase UINT16_MAX:\n-\t\tbfilter->src_port_mask = -1;\n-\t\tbfilter->src_port = nfilter->src_port;\n-\t\ten |= NTUPLE_FLTR_ALLOC_INPUT_EN_SRC_PORT |\n-\t\t\tNTUPLE_FLTR_ALLOC_INPUT_EN_SRC_PORT_MASK;\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"invalid src_port mask.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tbfilter->enables = en;\n-\treturn 0;\n-}\n-\n-static struct bnxt_filter_info*\n-bnxt_match_ntuple_filter(struct bnxt *bp,\n-\t\t\t struct bnxt_filter_info *bfilter,\n-\t\t\t struct bnxt_vnic_info **mvnic)\n-{\n-\tstruct bnxt_filter_info *mfilter = NULL;\n-\tint i;\n-\n-\tfor (i = bp->nr_vnics - 1; i >= 0; i--) {\n-\t\tstruct bnxt_vnic_info *vnic = &bp->vnic_info[i];\n-\t\tSTAILQ_FOREACH(mfilter, &vnic->filter, next) {\n-\t\t\tif (bfilter->src_ipaddr[0] == mfilter->src_ipaddr[0] &&\n-\t\t\t    bfilter->src_ipaddr_mask[0] ==\n-\t\t\t    mfilter->src_ipaddr_mask[0] &&\n-\t\t\t    bfilter->src_port == mfilter->src_port &&\n-\t\t\t    bfilter->src_port_mask == mfilter->src_port_mask &&\n-\t\t\t    bfilter->dst_ipaddr[0] == mfilter->dst_ipaddr[0] &&\n-\t\t\t    bfilter->dst_ipaddr_mask[0] ==\n-\t\t\t    mfilter->dst_ipaddr_mask[0] &&\n-\t\t\t    bfilter->dst_port == mfilter->dst_port &&\n-\t\t\t    bfilter->dst_port_mask == mfilter->dst_port_mask &&\n-\t\t\t    bfilter->flags == mfilter->flags &&\n-\t\t\t    bfilter->enables == mfilter->enables) {\n-\t\t\t\tif (mvnic)\n-\t\t\t\t\t*mvnic = vnic;\n-\t\t\t\treturn mfilter;\n-\t\t\t}\n-\t\t}\n-\t}\n-\treturn NULL;\n-}\n-\n-static int\n-bnxt_cfg_ntuple_filter(struct bnxt *bp,\n-\t\t       struct rte_eth_ntuple_filter *nfilter,\n-\t\t       enum rte_filter_op filter_op)\n-{\n-\tstruct bnxt_filter_info *bfilter, *mfilter, *filter1;\n-\tstruct bnxt_vnic_info *vnic, *vnic0, *mvnic;\n-\tint ret;\n-\n-\tif (nfilter->flags != RTE_5TUPLE_FLAGS) {\n-\t\tPMD_DRV_LOG(ERR, \"only 5tuple is supported.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tif (nfilter->flags & RTE_NTUPLE_FLAGS_TCP_FLAG) {\n-\t\tPMD_DRV_LOG(ERR, \"Ntuple filter: TCP flags not supported\\n\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tbfilter = bnxt_get_unused_filter(bp);\n-\tif (bfilter == NULL) {\n-\t\tPMD_DRV_LOG(ERR,\n-\t\t\t\"Not enough resources for a new filter.\\n\");\n-\t\treturn -ENOMEM;\n-\t}\n-\tret = parse_ntuple_filter(bp, nfilter, bfilter);\n-\tif (ret < 0)\n-\t\tgoto free_filter;\n-\n-\tvnic = &bp->vnic_info[nfilter->queue];\n-\tvnic0 = BNXT_GET_DEFAULT_VNIC(bp);\n-\tfilter1 = STAILQ_FIRST(&vnic0->filter);\n-\tif (filter1 == NULL) {\n-\t\tret = -EINVAL;\n-\t\tgoto free_filter;\n-\t}\n-\n-\tbfilter->dst_id = vnic->fw_vnic_id;\n-\tbfilter->fw_l2_filter_id = filter1->fw_l2_filter_id;\n-\tbfilter->enables |=\n-\t\tHWRM_CFA_NTUPLE_FILTER_ALLOC_INPUT_ENABLES_L2_FILTER_ID;\n-\tbfilter->ethertype = 0x800;\n-\tbfilter->enables |= NTUPLE_FLTR_ALLOC_INPUT_EN_ETHERTYPE;\n-\n-\tmfilter = bnxt_match_ntuple_filter(bp, bfilter, &mvnic);\n-\n-\tif (mfilter != NULL && filter_op == RTE_ETH_FILTER_ADD &&\n-\t    bfilter->dst_id == mfilter->dst_id) {\n-\t\tPMD_DRV_LOG(ERR, \"filter exists.\\n\");\n-\t\tret = -EEXIST;\n-\t\tgoto free_filter;\n-\t} else if (mfilter != NULL && filter_op == RTE_ETH_FILTER_ADD &&\n-\t\t   bfilter->dst_id != mfilter->dst_id) {\n-\t\tmfilter->dst_id = vnic->fw_vnic_id;\n-\t\tret = bnxt_hwrm_set_ntuple_filter(bp, mfilter->dst_id, mfilter);\n-\t\tSTAILQ_REMOVE(&mvnic->filter, mfilter, bnxt_filter_info, next);\n-\t\tSTAILQ_INSERT_TAIL(&vnic->filter, mfilter, next);\n-\t\tPMD_DRV_LOG(ERR, \"filter with matching pattern exists.\\n\");\n-\t\tPMD_DRV_LOG(ERR, \" Updated it to the new destination queue\\n\");\n-\t\tgoto free_filter;\n-\t}\n-\tif (mfilter == NULL && filter_op == RTE_ETH_FILTER_DELETE) {\n-\t\tPMD_DRV_LOG(ERR, \"filter doesn't exist.\");\n-\t\tret = -ENOENT;\n-\t\tgoto free_filter;\n-\t}\n-\n-\tif (filter_op == RTE_ETH_FILTER_ADD) {\n-\t\tbfilter->filter_type = HWRM_CFA_NTUPLE_FILTER;\n-\t\tret = bnxt_hwrm_set_ntuple_filter(bp, bfilter->dst_id, bfilter);\n-\t\tif (ret)\n-\t\t\tgoto free_filter;\n-\t\tSTAILQ_INSERT_TAIL(&vnic->filter, bfilter, next);\n-\t} else {\n-\t\tif (mfilter == NULL) {\n-\t\t\t/* This should not happen. But for Coverity! */\n-\t\t\tret = -ENOENT;\n-\t\t\tgoto free_filter;\n-\t\t}\n-\t\tret = bnxt_hwrm_clear_ntuple_filter(bp, mfilter);\n-\n-\t\tSTAILQ_REMOVE(&vnic->filter, mfilter, bnxt_filter_info, next);\n-\t\tbnxt_free_filter(bp, mfilter);\n-\t\tbnxt_free_filter(bp, bfilter);\n-\t}\n-\n-\treturn 0;\n-free_filter:\n-\tbnxt_free_filter(bp, bfilter);\n-\treturn ret;\n-}\n-\n-static int\n-bnxt_ntuple_filter(struct rte_eth_dev *dev,\n-\t\t\tenum rte_filter_op filter_op,\n-\t\t\tvoid *arg)\n-{\n-\tstruct bnxt *bp = dev->data->dev_private;\n-\tint ret;\n-\n-\tif (filter_op == RTE_ETH_FILTER_NOP)\n-\t\treturn 0;\n-\n-\tif (arg == NULL) {\n-\t\tPMD_DRV_LOG(ERR, \"arg shouldn't be NULL for operation %u.\",\n-\t\t\t    filter_op);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (filter_op) {\n-\tcase RTE_ETH_FILTER_ADD:\n-\t\tret = bnxt_cfg_ntuple_filter(bp,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tfilter_op);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_DELETE:\n-\t\tret = bnxt_cfg_ntuple_filter(bp,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tfilter_op);\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"unsupported operation %u.\", filter_op);\n-\t\tret = -EINVAL;\n-\t\tbreak;\n-\t}\n-\treturn ret;\n-}\n-\n static int\n bnxt_parse_fdir_filter(struct bnxt *bp,\n \t\t       struct rte_eth_fdir_filter *fdir,\n@@ -3661,9 +3419,6 @@ bnxt_filter_ctrl_op(struct rte_eth_dev *dev,\n \tcase RTE_ETH_FILTER_FDIR:\n \t\tret = bnxt_fdir_filter(dev, filter_op, arg);\n \t\tbreak;\n-\tcase RTE_ETH_FILTER_NTUPLE:\n-\t\tret = bnxt_ntuple_filter(dev, filter_op, arg);\n-\t\tbreak;\n \tcase RTE_ETH_FILTER_GENERIC:\n \t\tif (filter_op != RTE_ETH_FILTER_GET)\n \t\t\treturn -EINVAL;\ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex 7e2c77d356..647aa8d995 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -194,11 +194,6 @@ static int igb_add_5tuple_filter_82576(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_ntuple_filter *ntuple_filter);\n static int igb_remove_5tuple_filter_82576(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_ntuple_filter *ntuple_filter);\n-static int igb_get_ntuple_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_ntuple_filter *filter);\n-static int igb_ntuple_filter_handle(struct rte_eth_dev *dev,\n-\t\t\t\tenum rte_filter_op filter_op,\n-\t\t\t\tvoid *arg);\n static int eth_igb_filter_ctrl(struct rte_eth_dev *dev,\n \t\t     enum rte_filter_type filter_type,\n \t\t     enum rte_filter_op filter_op,\n@@ -4445,126 +4440,6 @@ igb_add_del_ntuple_filter(struct rte_eth_dev *dev,\n \treturn ret;\n }\n \n-/*\n- * igb_get_ntuple_filter - get a ntuple filter\n- *\n- * @param\n- * dev: Pointer to struct rte_eth_dev.\n- * ntuple_filter: Pointer to struct rte_eth_ntuple_filter\n- *\n- * @return\n- *    - On success, zero.\n- *    - On failure, a negative value.\n- */\n-static int\n-igb_get_ntuple_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_ntuple_filter *ntuple_filter)\n-{\n-\tstruct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\tstruct e1000_filter_info *filter_info =\n-\t\tE1000_DEV_PRIVATE_TO_FILTER_INFO(dev->data->dev_private);\n-\tstruct e1000_5tuple_filter_info filter_5tuple;\n-\tstruct e1000_2tuple_filter_info filter_2tuple;\n-\tstruct e1000_5tuple_filter *p_5tuple_filter;\n-\tstruct e1000_2tuple_filter *p_2tuple_filter;\n-\tint ret;\n-\n-\tswitch (ntuple_filter->flags) {\n-\tcase RTE_5TUPLE_FLAGS:\n-\tcase (RTE_5TUPLE_FLAGS | RTE_NTUPLE_FLAGS_TCP_FLAG):\n-\t\tif (hw->mac.type != e1000_82576)\n-\t\t\treturn -ENOTSUP;\n-\t\tmemset(&filter_5tuple,\n-\t\t\t0,\n-\t\t\tsizeof(struct e1000_5tuple_filter_info));\n-\t\tret = ntuple_filter_to_5tuple_82576(ntuple_filter,\n-\t\t\t\t\t\t    &filter_5tuple);\n-\t\tif (ret < 0)\n-\t\t\treturn ret;\n-\t\tp_5tuple_filter = igb_5tuple_filter_lookup_82576(\n-\t\t\t\t\t&filter_info->fivetuple_list,\n-\t\t\t\t\t&filter_5tuple);\n-\t\tif (p_5tuple_filter == NULL) {\n-\t\t\tPMD_DRV_LOG(ERR, \"filter doesn't exist.\");\n-\t\t\treturn -ENOENT;\n-\t\t}\n-\t\tntuple_filter->queue = p_5tuple_filter->queue;\n-\t\tbreak;\n-\tcase RTE_2TUPLE_FLAGS:\n-\tcase (RTE_2TUPLE_FLAGS | RTE_NTUPLE_FLAGS_TCP_FLAG):\n-\t\tif (hw->mac.type != e1000_82580 && hw->mac.type != e1000_i350)\n-\t\t\treturn -ENOTSUP;\n-\t\tmemset(&filter_2tuple,\n-\t\t\t0,\n-\t\t\tsizeof(struct e1000_2tuple_filter_info));\n-\t\tret = ntuple_filter_to_2tuple(ntuple_filter, &filter_2tuple);\n-\t\tif (ret < 0)\n-\t\t\treturn ret;\n-\t\tp_2tuple_filter = igb_2tuple_filter_lookup(\n-\t\t\t\t\t&filter_info->twotuple_list,\n-\t\t\t\t\t&filter_2tuple);\n-\t\tif (p_2tuple_filter == NULL) {\n-\t\t\tPMD_DRV_LOG(ERR, \"filter doesn't exist.\");\n-\t\t\treturn -ENOENT;\n-\t\t}\n-\t\tntuple_filter->queue = p_2tuple_filter->queue;\n-\t\tbreak;\n-\tdefault:\n-\t\tret = -EINVAL;\n-\t\tbreak;\n-\t}\n-\n-\treturn 0;\n-}\n-\n-/*\n- * igb_ntuple_filter_handle - Handle operations for ntuple filter.\n- * @dev: pointer to rte_eth_dev structure\n- * @filter_op:operation will be taken.\n- * @arg: a pointer to specific structure corresponding to the filter_op\n- */\n-static int\n-igb_ntuple_filter_handle(struct rte_eth_dev *dev,\n-\t\t\t\tenum rte_filter_op filter_op,\n-\t\t\t\tvoid *arg)\n-{\n-\tstruct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\tint ret;\n-\n-\tMAC_TYPE_FILTER_SUP(hw->mac.type);\n-\n-\tif (filter_op == RTE_ETH_FILTER_NOP)\n-\t\treturn 0;\n-\n-\tif (arg == NULL) {\n-\t\tPMD_DRV_LOG(ERR, \"arg shouldn't be NULL for operation %u.\",\n-\t\t\t    filter_op);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (filter_op) {\n-\tcase RTE_ETH_FILTER_ADD:\n-\t\tret = igb_add_del_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tTRUE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_DELETE:\n-\t\tret = igb_add_del_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tFALSE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_GET:\n-\t\tret = igb_get_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg);\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"unsupported operation %u.\", filter_op);\n-\t\tret = -EINVAL;\n-\t\tbreak;\n-\t}\n-\treturn ret;\n-}\n-\n static inline int\n igb_ethertype_filter_lookup(struct e1000_filter_info *filter_info,\n \t\t\tuint16_t ethertype)\n@@ -4670,7 +4545,7 @@ igb_add_del_ethertype_filter(struct rte_eth_dev *dev,\n }\n \n static int\n-eth_igb_filter_ctrl(struct rte_eth_dev *dev,\n+eth_igb_filter_ctrl(struct rte_eth_dev *dev __rte_unused,\n \t\t     enum rte_filter_type filter_type,\n \t\t     enum rte_filter_op filter_op,\n \t\t     void *arg)\n@@ -4678,9 +4553,6 @@ eth_igb_filter_ctrl(struct rte_eth_dev *dev,\n \tint ret = 0;\n \n \tswitch (filter_type) {\n-\tcase RTE_ETH_FILTER_NTUPLE:\n-\t\tret = igb_ntuple_filter_handle(dev, filter_op, arg);\n-\t\tbreak;\n \tcase RTE_ETH_FILTER_GENERIC:\n \t\tif (filter_op != RTE_ETH_FILTER_GET)\n \t\t\treturn -EINVAL;\ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex 8a4cc77202..922d415000 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -304,11 +304,6 @@ static int ixgbe_add_5tuple_filter(struct rte_eth_dev *dev,\n \t\t\tstruct ixgbe_5tuple_filter *filter);\n static void ixgbe_remove_5tuple_filter(struct rte_eth_dev *dev,\n \t\t\tstruct ixgbe_5tuple_filter *filter);\n-static int ixgbe_ntuple_filter_handle(struct rte_eth_dev *dev,\n-\t\t\t\tenum rte_filter_op filter_op,\n-\t\t\t\tvoid *arg);\n-static int ixgbe_get_ntuple_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_ntuple_filter *filter);\n static int ixgbe_dev_filter_ctrl(struct rte_eth_dev *dev,\n \t\t     enum rte_filter_type filter_type,\n \t\t     enum rte_filter_op filter_op,\n@@ -6732,99 +6727,6 @@ ixgbe_add_del_ntuple_filter(struct rte_eth_dev *dev,\n \treturn 0;\n }\n \n-/*\n- * get a ntuple filter\n- *\n- * @param\n- * dev: Pointer to struct rte_eth_dev.\n- * ntuple_filter: Pointer to struct rte_eth_ntuple_filter\n- *\n- * @return\n- *    - On success, zero.\n- *    - On failure, a negative value.\n- */\n-static int\n-ixgbe_get_ntuple_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_ntuple_filter *ntuple_filter)\n-{\n-\tstruct ixgbe_filter_info *filter_info =\n-\t\tIXGBE_DEV_PRIVATE_TO_FILTER_INFO(dev->data->dev_private);\n-\tstruct ixgbe_5tuple_filter_info filter_5tuple;\n-\tstruct ixgbe_5tuple_filter *filter;\n-\tint ret;\n-\n-\tif (ntuple_filter->flags != RTE_5TUPLE_FLAGS) {\n-\t\tPMD_DRV_LOG(ERR, \"only 5tuple is supported.\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tmemset(&filter_5tuple, 0, sizeof(struct ixgbe_5tuple_filter_info));\n-\tret = ntuple_filter_to_5tuple(ntuple_filter, &filter_5tuple);\n-\tif (ret < 0)\n-\t\treturn ret;\n-\n-\tfilter = ixgbe_5tuple_filter_lookup(&filter_info->fivetuple_list,\n-\t\t\t\t\t &filter_5tuple);\n-\tif (filter == NULL) {\n-\t\tPMD_DRV_LOG(ERR, \"filter doesn't exist.\");\n-\t\treturn -ENOENT;\n-\t}\n-\tntuple_filter->queue = filter->queue;\n-\treturn 0;\n-}\n-\n-/*\n- * ixgbe_ntuple_filter_handle - Handle operations for ntuple filter.\n- * @dev: pointer to rte_eth_dev structure\n- * @filter_op:operation will be taken.\n- * @arg: a pointer to specific structure corresponding to the filter_op\n- *\n- * @return\n- *    - On success, zero.\n- *    - On failure, a negative value.\n- */\n-static int\n-ixgbe_ntuple_filter_handle(struct rte_eth_dev *dev,\n-\t\t\t\tenum rte_filter_op filter_op,\n-\t\t\t\tvoid *arg)\n-{\n-\tstruct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\tint ret;\n-\n-\tMAC_TYPE_FILTER_SUP_EXT(hw->mac.type);\n-\n-\tif (filter_op == RTE_ETH_FILTER_NOP)\n-\t\treturn 0;\n-\n-\tif (arg == NULL) {\n-\t\tPMD_DRV_LOG(ERR, \"arg shouldn't be NULL for operation %u.\",\n-\t\t\t    filter_op);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (filter_op) {\n-\tcase RTE_ETH_FILTER_ADD:\n-\t\tret = ixgbe_add_del_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tTRUE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_DELETE:\n-\t\tret = ixgbe_add_del_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg,\n-\t\t\tFALSE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_GET:\n-\t\tret = ixgbe_get_ntuple_filter(dev,\n-\t\t\t(struct rte_eth_ntuple_filter *)arg);\n-\t\tbreak;\n-\tdefault:\n-\t\tPMD_DRV_LOG(ERR, \"unsupported operation %u.\", filter_op);\n-\t\tret = -EINVAL;\n-\t\tbreak;\n-\t}\n-\treturn ret;\n-}\n-\n int\n ixgbe_add_del_ethertype_filter(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_ethertype_filter *filter,\n@@ -6908,9 +6810,6 @@ ixgbe_dev_filter_ctrl(struct rte_eth_dev *dev,\n \tint ret = 0;\n \n \tswitch (filter_type) {\n-\tcase RTE_ETH_FILTER_NTUPLE:\n-\t\tret = ixgbe_ntuple_filter_handle(dev, filter_op, arg);\n-\t\tbreak;\n \tcase RTE_ETH_FILTER_FDIR:\n \t\tret = ixgbe_fdir_ctrl_func(dev, filter_op, arg);\n \t\tbreak;\ndiff --git a/drivers/net/qede/qede_filter.c b/drivers/net/qede/qede_filter.c\nindex f3da5ecd92..0c47407edd 100644\n--- a/drivers/net/qede/qede_filter.c\n+++ b/drivers/net/qede/qede_filter.c\n@@ -590,67 +590,6 @@ qede_fdir_filter_conf(struct rte_eth_dev *eth_dev,\n \treturn ret;\n }\n \n-int qede_ntuple_filter_conf(struct rte_eth_dev *eth_dev,\n-\t\t\t    enum rte_filter_op filter_op,\n-\t\t\t    void *arg)\n-{\n-\tstruct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);\n-\tstruct ecore_dev *edev = QEDE_INIT_EDEV(qdev);\n-\tstruct rte_eth_ntuple_filter *ntuple;\n-\tstruct rte_eth_fdir_filter fdir_entry;\n-\tstruct rte_eth_tcpv4_flow *tcpv4_flow;\n-\tstruct rte_eth_udpv4_flow *udpv4_flow;\n-\tbool add = false;\n-\n-\tswitch (filter_op) {\n-\tcase RTE_ETH_FILTER_NOP:\n-\t\t/* Typically used to query fdir support */\n-\t\tif (ECORE_IS_CMT(edev)) {\n-\t\t\tDP_ERR(edev, \"flowdir is not supported in 100G mode\\n\");\n-\t\t\treturn -ENOTSUP;\n-\t\t}\n-\t\treturn 0; /* means supported */\n-\tcase RTE_ETH_FILTER_ADD:\n-\t\tadd = true;\n-\tbreak;\n-\tcase RTE_ETH_FILTER_DELETE:\n-\tbreak;\n-\tcase RTE_ETH_FILTER_INFO:\n-\tcase RTE_ETH_FILTER_GET:\n-\tcase RTE_ETH_FILTER_UPDATE:\n-\tcase RTE_ETH_FILTER_FLUSH:\n-\tcase RTE_ETH_FILTER_SET:\n-\tcase RTE_ETH_FILTER_STATS:\n-\tcase RTE_ETH_FILTER_OP_MAX:\n-\t\tDP_ERR(edev, \"Unsupported filter_op %d\\n\", filter_op);\n-\t\treturn -ENOTSUP;\n-\t}\n-\tntuple = (struct rte_eth_ntuple_filter *)arg;\n-\t/* Internally convert ntuple to fdir entry */\n-\tmemset(&fdir_entry, 0, sizeof(fdir_entry));\n-\tif (ntuple->proto == IPPROTO_TCP) {\n-\t\tfdir_entry.input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_TCP;\n-\t\ttcpv4_flow = &fdir_entry.input.flow.tcp4_flow;\n-\t\ttcpv4_flow->ip.src_ip = ntuple->src_ip;\n-\t\ttcpv4_flow->ip.dst_ip = ntuple->dst_ip;\n-\t\ttcpv4_flow->ip.proto = IPPROTO_TCP;\n-\t\ttcpv4_flow->src_port = ntuple->src_port;\n-\t\ttcpv4_flow->dst_port = ntuple->dst_port;\n-\t} else {\n-\t\tfdir_entry.input.flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP;\n-\t\tudpv4_flow = &fdir_entry.input.flow.udp4_flow;\n-\t\tudpv4_flow->ip.src_ip = ntuple->src_ip;\n-\t\tudpv4_flow->ip.dst_ip = ntuple->dst_ip;\n-\t\tudpv4_flow->ip.proto = IPPROTO_TCP;\n-\t\tudpv4_flow->src_port = ntuple->src_port;\n-\t\tudpv4_flow->dst_port = ntuple->dst_port;\n-\t}\n-\n-\tfdir_entry.action.rx_queue = ntuple->queue;\n-\n-\treturn qede_config_cmn_fdir_filter(eth_dev, &fdir_entry, add);\n-}\n-\n static int\n qede_tunnel_update(struct qede_dev *qdev,\n \t\t   struct ecore_tunnel_info *tunn_info)\n@@ -1548,8 +1487,6 @@ int qede_dev_filter_ctrl(struct rte_eth_dev *eth_dev,\n \t\tbreak;\n \tcase RTE_ETH_FILTER_FDIR:\n \t\treturn qede_fdir_filter_conf(eth_dev, filter_op, arg);\n-\tcase RTE_ETH_FILTER_NTUPLE:\n-\t\treturn qede_ntuple_filter_conf(eth_dev, filter_op, arg);\n \tcase RTE_ETH_FILTER_GENERIC:\n \t\tif (ECORE_IS_CMT(edev)) {\n \t\t\tDP_ERR(edev, \"flowdir is not supported in 100G mode\\n\");\ndiff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c\nindex 9d2b76570a..d779453923 100644\n--- a/drivers/net/sfc/sfc_ethdev.c\n+++ b/drivers/net/sfc/sfc_ethdev.c\n@@ -1755,9 +1755,6 @@ sfc_dev_filter_ctrl(struct rte_eth_dev *dev, enum rte_filter_type filter_type,\n \tcase RTE_ETH_FILTER_NONE:\n \t\tsfc_err(sa, \"Global filters configuration not supported\");\n \t\tbreak;\n-\tcase RTE_ETH_FILTER_NTUPLE:\n-\t\tsfc_err(sa, \"NTUPLE filters not supported\");\n-\t\tbreak;\n \tcase RTE_ETH_FILTER_TUNNEL:\n \t\tsfc_err(sa, \"Tunnel filters not supported\");\n \t\tbreak;\ndiff --git a/lib/librte_ethdev/rte_eth_ctrl.h b/lib/librte_ethdev/rte_eth_ctrl.h\nindex 48515818dd..b4cc163e3e 100644\n--- a/lib/librte_ethdev/rte_eth_ctrl.h\n+++ b/lib/librte_ethdev/rte_eth_ctrl.h\n@@ -82,8 +82,7 @@ enum rte_filter_op {\n \n /**\n  * A structure used to define the ntuple filter entry\n- * to support RTE_ETH_FILTER_NTUPLE with RTE_ETH_FILTER_ADD,\n- * RTE_ETH_FILTER_DELETE and RTE_ETH_FILTER_GET operations.\n+ * to support RTE_ETH_FILTER_NTUPLE data representation.\n  */\n struct rte_eth_ntuple_filter {\n \tuint16_t flags;          /**< Flags from RTE_NTUPLE_FLAGS_* */\n",
    "prefixes": [
        "v2",
        "07/14"
    ]
}