get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 81259,
    "url": "http://patches.dpdk.org/api/patches/81259/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1603030152-13451-5-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": "<1603030152-13451-5-git-send-email-arybchenko@solarflare.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1603030152-13451-5-git-send-email-arybchenko@solarflare.com",
    "date": "2020-10-18T14:09:01",
    "name": "[04/14] ethdev: remove legacy flexible filter type support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "62fc84e341a11fa70f7e711e80571f2a459e013d",
    "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/1603030152-13451-5-git-send-email-arybchenko@solarflare.com/mbox/",
    "series": [
        {
            "id": 13082,
            "url": "http://patches.dpdk.org/api/series/13082/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=13082",
            "date": "2020-10-18T14:08:57",
            "name": "ethdev: remove legacy filter API",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/13082/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/81259/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/81259/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 1B9ACA04B0;\n\tSun, 18 Oct 2020 16:10:14 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 791B0CA08;\n\tSun, 18 Oct 2020 16:09:30 +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 79670C87A\n for <dev@dpdk.org>; Sun, 18 Oct 2020 16:09:26 +0200 (CEST)",
            "from mx1-us1.ppe-hosted.com (unknown [10.110.50.150])\n by dispatch1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id\n 1754F20087; Sun, 18 Oct 2020 14:09:25 +0000 (UTC)",
            "from us4-mdac16-62.at1.mdlocal (unknown [10.110.50.155])\n by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTP id 155E0800A3;\n Sun, 18 Oct 2020 14:09:25 +0000 (UTC)",
            "from mx1-us1.ppe-hosted.com (unknown [10.110.50.12])\n by mx1-us1.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id\n 87F64100061;\n Sun, 18 Oct 2020 14:09:24 +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 4DFAF4005B;\n Sun, 18 Oct 2020 14:09:24 +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; Sun, 18 Oct 2020 15:09:19 +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; Sun, 18 Oct 2020 15:09:19 +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 09IE9Jlj002033;\n Sun, 18 Oct 2020 15:09:19 +0100",
            "from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1])\n by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 31D8F1613A9;\n Sun, 18 Oct 2020 15:09:19 +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>, Jeff Guo\n <jia.guo@intel.com>, Haiyue Wang <haiyue.wang@intel.com>, Rasesh Mody\n <rmody@marvell.com>, Shahed Shaikh <shshaikh@marvell.com>, Andrew Rybchenko\n <andrew.rybchenko@oktetlabs.ru>",
        "CC": "<dev@dpdk.org>",
        "Date": "Sun, 18 Oct 2020 15:09:01 +0100",
        "Message-ID": "<1603030152-13451-5-git-send-email-arybchenko@solarflare.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1603030152-13451-1-git-send-email-arybchenko@solarflare.com>",
        "References": "<1603030152-13451-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-25732.003",
        "X-TM-AS-Result": "No-17.078900-8.000000-10",
        "X-TMASE-MatchedRID": "WZ4RUs49kiDXhaZsZZP8sDahjZPEodkXY/L2/AZJAWSYkF7ZtFfCU0I9\n 0U6XYOu38XVI39JCRnRuL3ESIrARlyHhSBQfglfsA9lly13c/gHYuVu0X/rOkJGhAvBSa2i/Ceg\n a5Z7JsDGRbYgMp8kCH7FjRXmWmjfVcqDeIxo3t8hPs79gcmEg0HE01tKb2rARVI7KaIl9Nhdo8w\n ucTFrANc2yqQsaXQic1575LJbEh7B+kzNEKbXWo+Pwk3jODTrZnyQFaVgMM2Ag2yVdj3LAROLSd\n VP2tZn5gjiRDGW7Bcy2MJS2H4HaNtGZBRXICgnt6GyDR2ZB+cai8D/o42y/SuQ45nVtPqmx1SNB\n BkEOrj5PJKNFvY5r+b6oBTCBl4wcBZdQz2rkVg5FeAr5guIYJrto11mU6Hl8x5B+7qLBJ+xwcpE\n 9NiP9Xav7P7uHsnluOvlrxAcLL1fDJQPapbvuAihJ5tvbfbyL3FYvKmZiVnMB3LgzIBkuA4O5Tf\n SzrxQ7XIP6Tr+fSxOyc/zO2GdYPJOA1IVKiSC+oS0guoV6SZexq37CBjJNbJsoi2XrUn/JUTdY/\n mdfTXtJKW4mDlJsMbxAi7jPoeEQftwZ3X11IV0=",
        "X-TM-AS-User-Approved-Sender": "Yes",
        "X-TM-AS-User-Blocked-Sender": "No",
        "X-TMASE-Result": "10--17.078900-8.000000",
        "X-TMASE-Version": "SMEX-12.5.0.1300-8.6.1012-25732.003",
        "X-MDID": "1603030165-0bIt2C3Jfzmz",
        "X-PPE-DISP": "1603030165;0bIt2C3Jfzmz",
        "Subject": "[dpdk-dev] [PATCH 04/14] ethdev: remove legacy flexible filter type\n\tsupport",
        "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": "RTE flow API should be used for filtering.\n\nTemporarily preserve helper defines in public interface.\n\nSigned-off-by: Andrew Rybchenko <arybchenko@solarflare.com>\n---\n app/test-pmd/cmdline.c               | 195 ---------------------------\n doc/guides/rel_notes/deprecation.rst |   2 +-\n drivers/net/e1000/igb_ethdev.c       | 104 --------------\n drivers/net/qede/qede_filter.c       |   1 -\n drivers/net/sfc/sfc_ethdev.c         |   3 -\n 5 files changed, 1 insertion(+), 304 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\nindex f0fe97fb9c..e7e85cf304 100644\n--- a/app/test-pmd/cmdline.c\n+++ b/app/test-pmd/cmdline.c\n@@ -993,11 +993,6 @@ static void cmd_help_long_parsed(void *parsed_result,\n \t\t\t\"syn_filter (port_id) (add|del) priority (high|low) queue (queue_id)\"\n \t\t\t\"    Add/Del syn filter.\\n\\n\"\n \n-\t\t\t\"flex_filter (port_id) (add|del) len (len_value)\"\n-\t\t\t\" bytes (bytes_value) mask (mask_value)\"\n-\t\t\t\" priority (prio_value) queue (queue_id)\\n\"\n-\t\t\t\"    Add/Del a flex 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@@ -10873,195 +10868,6 @@ cmdline_parse_inst_t cmd_5tuple_filter = {\n \t},\n };\n \n-/* *** ADD/REMOVE A flex FILTER *** */\n-struct cmd_flex_filter_result {\n-\tcmdline_fixed_string_t filter;\n-\tcmdline_fixed_string_t ops;\n-\tportid_t port_id;\n-\tcmdline_fixed_string_t len;\n-\tuint8_t len_value;\n-\tcmdline_fixed_string_t bytes;\n-\tcmdline_fixed_string_t bytes_value;\n-\tcmdline_fixed_string_t mask;\n-\tcmdline_fixed_string_t mask_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 int xdigit2val(unsigned char c)\n-{\n-\tint val;\n-\tif (isdigit(c))\n-\t\tval = c - '0';\n-\telse if (isupper(c))\n-\t\tval = c - 'A' + 10;\n-\telse\n-\t\tval = c - 'a' + 10;\n-\treturn val;\n-}\n-\n-static void\n-cmd_flex_filter_parsed(void *parsed_result,\n-\t\t\t  __rte_unused struct cmdline *cl,\n-\t\t\t  __rte_unused void *data)\n-{\n-\tint ret = 0;\n-\tstruct rte_eth_flex_filter filter;\n-\tstruct cmd_flex_filter_result *res = parsed_result;\n-\tchar *bytes_ptr, *mask_ptr;\n-\tuint16_t len, i, j = 0;\n-\tchar c;\n-\tint val;\n-\tuint8_t byte = 0;\n-\n-\tif (res->len_value > RTE_FLEX_FILTER_MAXLEN) {\n-\t\tprintf(\"the len exceed the max length 128\\n\");\n-\t\treturn;\n-\t}\n-\tmemset(&filter, 0, sizeof(struct rte_eth_flex_filter));\n-\tfilter.len = res->len_value;\n-\tfilter.priority = res->priority_value;\n-\tfilter.queue = res->queue_id;\n-\tbytes_ptr = res->bytes_value;\n-\tmask_ptr = res->mask_value;\n-\n-\t /* translate bytes string to array. */\n-\tif (bytes_ptr[0] == '0' && ((bytes_ptr[1] == 'x') ||\n-\t\t(bytes_ptr[1] == 'X')))\n-\t\tbytes_ptr += 2;\n-\tlen = strnlen(bytes_ptr, res->len_value * 2);\n-\tif (len == 0 || (len % 8 != 0)) {\n-\t\tprintf(\"please check len and bytes input\\n\");\n-\t\treturn;\n-\t}\n-\tfor (i = 0; i < len; i++) {\n-\t\tc = bytes_ptr[i];\n-\t\tif (isxdigit(c) == 0) {\n-\t\t\t/* invalid characters. */\n-\t\t\tprintf(\"invalid input\\n\");\n-\t\t\treturn;\n-\t\t}\n-\t\tval = xdigit2val(c);\n-\t\tif (i % 2) {\n-\t\t\tbyte |= val;\n-\t\t\tfilter.bytes[j] = byte;\n-\t\t\tprintf(\"bytes[%d]:%02x \", j, filter.bytes[j]);\n-\t\t\tj++;\n-\t\t\tbyte = 0;\n-\t\t} else\n-\t\t\tbyte |= val << 4;\n-\t}\n-\tprintf(\"\\n\");\n-\t /* translate mask string to uint8_t array. */\n-\tif (mask_ptr[0] == '0' && ((mask_ptr[1] == 'x') ||\n-\t\t(mask_ptr[1] == 'X')))\n-\t\tmask_ptr += 2;\n-\tlen = strnlen(mask_ptr, (res->len_value + 3) / 4);\n-\tif (len == 0) {\n-\t\tprintf(\"invalid input\\n\");\n-\t\treturn;\n-\t}\n-\tj = 0;\n-\tbyte = 0;\n-\tfor (i = 0; i < len; i++) {\n-\t\tc = mask_ptr[i];\n-\t\tif (isxdigit(c) == 0) {\n-\t\t\t/* invalid characters. */\n-\t\t\tprintf(\"invalid input\\n\");\n-\t\t\treturn;\n-\t\t}\n-\t\tval = xdigit2val(c);\n-\t\tif (i % 2) {\n-\t\t\tbyte |= val;\n-\t\t\tfilter.mask[j] = byte;\n-\t\t\tprintf(\"mask[%d]:%02x \", j, filter.mask[j]);\n-\t\t\tj++;\n-\t\t\tbyte = 0;\n-\t\t} else\n-\t\t\tbyte |= val << 4;\n-\t}\n-\tprintf(\"\\n\");\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_FLEXIBLE,\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_FLEXIBLE,\n-\t\t\t\tRTE_ETH_FILTER_DELETE,\n-\t\t\t\t&filter);\n-\n-\tif (ret < 0)\n-\t\tprintf(\"flex filter setting error: (%s)\\n\", strerror(-ret));\n-}\n-\n-cmdline_parse_token_string_t cmd_flex_filter_filter =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tfilter, \"flex_filter\");\n-cmdline_parse_token_num_t cmd_flex_filter_port_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tport_id, UINT16);\n-cmdline_parse_token_string_t cmd_flex_filter_ops =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tops, \"add#del\");\n-cmdline_parse_token_string_t cmd_flex_filter_len =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tlen, \"len\");\n-cmdline_parse_token_num_t cmd_flex_filter_len_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tlen_value, UINT8);\n-cmdline_parse_token_string_t cmd_flex_filter_bytes =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tbytes, \"bytes\");\n-cmdline_parse_token_string_t cmd_flex_filter_bytes_value =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tbytes_value, NULL);\n-cmdline_parse_token_string_t cmd_flex_filter_mask =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tmask, \"mask\");\n-cmdline_parse_token_string_t cmd_flex_filter_mask_value =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tmask_value, NULL);\n-cmdline_parse_token_string_t cmd_flex_filter_priority =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tpriority, \"priority\");\n-cmdline_parse_token_num_t cmd_flex_filter_priority_value =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tpriority_value, UINT8);\n-cmdline_parse_token_string_t cmd_flex_filter_queue =\n-\tTOKEN_STRING_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tqueue, \"queue\");\n-cmdline_parse_token_num_t cmd_flex_filter_queue_id =\n-\tTOKEN_NUM_INITIALIZER(struct cmd_flex_filter_result,\n-\t\t\t\tqueue_id, UINT16);\n-cmdline_parse_inst_t cmd_flex_filter = {\n-\t.f = cmd_flex_filter_parsed,\n-\t.data = NULL,\n-\t.help_str = \"flex_filter <port_id> add|del len <value> bytes \"\n-\t\t\"<value> mask <value> priority <value> queue <queue_id>: \"\n-\t\t\"Add/Del a flex filter\",\n-\t.tokens = {\n-\t\t(void *)&cmd_flex_filter_filter,\n-\t\t(void *)&cmd_flex_filter_port_id,\n-\t\t(void *)&cmd_flex_filter_ops,\n-\t\t(void *)&cmd_flex_filter_len,\n-\t\t(void *)&cmd_flex_filter_len_value,\n-\t\t(void *)&cmd_flex_filter_bytes,\n-\t\t(void *)&cmd_flex_filter_bytes_value,\n-\t\t(void *)&cmd_flex_filter_mask,\n-\t\t(void *)&cmd_flex_filter_mask_value,\n-\t\t(void *)&cmd_flex_filter_priority,\n-\t\t(void *)&cmd_flex_filter_priority_value,\n-\t\t(void *)&cmd_flex_filter_queue,\n-\t\t(void *)&cmd_flex_filter_queue_id,\n-\t\tNULL,\n-\t},\n-};\n-\n /* *** Filters Control *** */\n \n /* *** deal with flow director filter *** */\n@@ -19833,7 +19639,6 @@ cmdline_parse_ctx_t main_ctx[] = {\n \t(cmdline_parse_inst_t *)&cmd_syn_filter,\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_flex_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 f655fc06ac..4ed78809c0 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -108,7 +108,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 FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR,\n+  as filter types SYN, NTUPLE, 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/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex 8b18f1cb28..7f99b76e48 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -195,11 +195,6 @@ static int igb_add_2tuple_filter(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_ntuple_filter *ntuple_filter);\n static int igb_remove_2tuple_filter(struct rte_eth_dev *dev,\n \t\t\tstruct rte_eth_ntuple_filter *ntuple_filter);\n-static int eth_igb_get_flex_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_flex_filter *filter);\n-static int eth_igb_flex_filter_handle(struct rte_eth_dev *dev,\n-\t\t\tenum rte_filter_op filter_op,\n-\t\t\tvoid *arg);\n 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@@ -4127,102 +4122,6 @@ eth_igb_add_del_flex_filter(struct rte_eth_dev *dev,\n \treturn 0;\n }\n \n-static int\n-eth_igb_get_flex_filter(struct rte_eth_dev *dev,\n-\t\t\tstruct rte_eth_flex_filter *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_flex_filter flex_filter, *it;\n-\tuint32_t wufc, queueing, wufc_en = 0;\n-\n-\tmemset(&flex_filter, 0, sizeof(struct e1000_flex_filter));\n-\tflex_filter.filter_info.len = filter->len;\n-\tflex_filter.filter_info.priority = filter->priority;\n-\tmemcpy(flex_filter.filter_info.dwords, filter->bytes, filter->len);\n-\tmemcpy(flex_filter.filter_info.mask, filter->mask,\n-\t\t\tRTE_ALIGN(filter->len, CHAR_BIT) / CHAR_BIT);\n-\n-\tit = eth_igb_flex_filter_lookup(&filter_info->flex_list,\n-\t\t\t\t&flex_filter.filter_info);\n-\tif (it == NULL) {\n-\t\tPMD_DRV_LOG(ERR, \"filter doesn't exist.\");\n-\t\treturn -ENOENT;\n-\t}\n-\n-\twufc = E1000_READ_REG(hw, E1000_WUFC);\n-\twufc_en = E1000_WUFC_FLEX_HQ | (E1000_WUFC_FLX0 << it->index);\n-\n-\tif ((wufc & wufc_en) == wufc_en) {\n-\t\tuint32_t reg_off = 0;\n-\t\tif (it->index < E1000_MAX_FHFT)\n-\t\t\treg_off = E1000_FHFT(it->index);\n-\t\telse\n-\t\t\treg_off = E1000_FHFT_EXT(it->index - E1000_MAX_FHFT);\n-\n-\t\tqueueing = E1000_READ_REG(hw,\n-\t\t\t\treg_off + E1000_FHFT_QUEUEING_OFFSET);\n-\t\tfilter->len = queueing & E1000_FHFT_QUEUEING_LEN;\n-\t\tfilter->priority = (queueing & E1000_FHFT_QUEUEING_PRIO) >>\n-\t\t\tE1000_FHFT_QUEUEING_PRIO_SHIFT;\n-\t\tfilter->queue = (queueing & E1000_FHFT_QUEUEING_QUEUE) >>\n-\t\t\tE1000_FHFT_QUEUEING_QUEUE_SHIFT;\n-\t\treturn 0;\n-\t}\n-\treturn -ENOENT;\n-}\n-\n-static int\n-eth_igb_flex_filter_handle(struct rte_eth_dev *dev,\n-\t\t\tenum rte_filter_op filter_op,\n-\t\t\tvoid *arg)\n-{\n-\tstruct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\tstruct rte_eth_flex_filter *filter;\n-\tint ret = 0;\n-\n-\tMAC_TYPE_FILTER_SUP_EXT(hw->mac.type);\n-\n-\tif (filter_op == RTE_ETH_FILTER_NOP)\n-\t\treturn ret;\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-\tfilter = (struct rte_eth_flex_filter *)arg;\n-\tif (filter->len == 0 || filter->len > E1000_MAX_FLEX_FILTER_LEN\n-\t    || filter->len % sizeof(uint64_t) != 0) {\n-\t\tPMD_DRV_LOG(ERR, \"filter's length is out of range\");\n-\t\treturn -EINVAL;\n-\t}\n-\tif (filter->priority > E1000_MAX_FLEX_FILTER_PRI) {\n-\t\tPMD_DRV_LOG(ERR, \"filter's priority is out of range\");\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tswitch (filter_op) {\n-\tcase RTE_ETH_FILTER_ADD:\n-\t\tret = eth_igb_add_del_flex_filter(dev, filter, TRUE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_DELETE:\n-\t\tret = eth_igb_add_del_flex_filter(dev, filter, FALSE);\n-\t\tbreak;\n-\tcase RTE_ETH_FILTER_GET:\n-\t\tret = eth_igb_get_flex_filter(dev, filter);\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-\n-\treturn ret;\n-}\n-\n /* translate elements in struct rte_eth_ntuple_filter to struct e1000_5tuple_filter_info*/\n static inline int\n ntuple_filter_to_5tuple_82576(struct rte_eth_ntuple_filter *filter,\n@@ -4852,9 +4751,6 @@ eth_igb_filter_ctrl(struct rte_eth_dev *dev,\n \tcase RTE_ETH_FILTER_SYN:\n \t\tret = eth_igb_syn_filter_handle(dev, filter_op, arg);\n \t\tbreak;\n-\tcase RTE_ETH_FILTER_FLEXIBLE:\n-\t\tret = eth_igb_flex_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/qede/qede_filter.c b/drivers/net/qede/qede_filter.c\nindex 4d31db09fd..28dc9d2234 100644\n--- a/drivers/net/qede/qede_filter.c\n+++ b/drivers/net/qede/qede_filter.c\n@@ -1561,7 +1561,6 @@ int qede_dev_filter_ctrl(struct rte_eth_dev *eth_dev,\n \n \t\t*(const void **)arg = &qede_flow_ops;\n \t\treturn 0;\n-\tcase RTE_ETH_FILTER_FLEXIBLE:\n \tcase RTE_ETH_FILTER_SYN:\n \tcase RTE_ETH_FILTER_HASH:\n \tcase RTE_ETH_FILTER_L2_TUNNEL:\ndiff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c\nindex 75f3a2f3d3..d976a57f2a 100644\n--- a/drivers/net/sfc/sfc_ethdev.c\n+++ b/drivers/net/sfc/sfc_ethdev.c\n@@ -1748,9 +1748,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_FLEXIBLE:\n-\t\tsfc_err(sa, \"Flexible filters not supported\");\n-\t\tbreak;\n \tcase RTE_ETH_FILTER_SYN:\n \t\tsfc_err(sa, \"SYN filters not supported\");\n \t\tbreak;\n",
    "prefixes": [
        "04/14"
    ]
}