get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 4378,
    "url": "http://patches.dpdk.org/api/patches/4378/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1429539103-15885-1-git-send-email-thomas.monjalon@6wind.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": "<1429539103-15885-1-git-send-email-thomas.monjalon@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1429539103-15885-1-git-send-email-thomas.monjalon@6wind.com",
    "date": "2015-04-20T14:11:43",
    "name": "[dpdk-dev,RFC] ethdev: remove old flow director API",
    "commit_ref": null,
    "pull_url": null,
    "state": "rfc",
    "archived": true,
    "hash": "a494e44495ebfcdb40b5f5e2c15d19cee904c794",
    "submitter": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/people/1/?format=api",
        "name": "Thomas Monjalon",
        "email": "thomas.monjalon@6wind.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1429539103-15885-1-git-send-email-thomas.monjalon@6wind.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/4378/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/4378/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 925CB5A55;\n\tMon, 20 Apr 2015 16:12:43 +0200 (CEST)",
            "from mail-wi0-f182.google.com (mail-wi0-f182.google.com\n\t[209.85.212.182]) by dpdk.org (Postfix) with ESMTP id F23C0376C\n\tfor <dev@dpdk.org>; Mon, 20 Apr 2015 16:12:41 +0200 (CEST)",
            "by wizk4 with SMTP id k4so101052809wiz.1\n\tfor <dev@dpdk.org>; Mon, 20 Apr 2015 07:12:41 -0700 (PDT)",
            "from localhost.localdomain (136-92-190-109.dsl.ovh.fr.\n\t[109.190.92.136]) by mx.google.com with ESMTPSA id\n\tq4sm7708526wja.24.2015.04.20.07.12.39\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);\n\tMon, 20 Apr 2015 07:12:40 -0700 (PDT)"
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20130820;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id;\n\tbh=stcuAY8Baw4qO25TIRY8xtsyoIuV9EZvTL3ZZk1Njpg=;\n\tb=Ns+r+rDi758HytJ1LoKP4ZpEzlHfhBqhD2DrOK7B/yNSLeSu/6VyX1qrzebGBXRxIH\n\tbdFKbwt09+U4nmQq9yRcu89v6NJxRuH8oEOIj0UAVOvQqauz0gmlrvMHl4xpbdrdPePp\n\t4iFKnY2VQ6LO+I15MXOMd9pBtTVBA+l4tU8J7mHnl0v19l8lyb12DUpJhh6GLIlc8dNf\n\tEcJ047W1alGgqxBujyw5lrS8Hcfi3ZyP0tJGsmmml5ywxyxxk1j84NHGg62rJ5iXBxnn\n\t0He4VGDDUc3S74pp22sXv/9qz3mKm8gjbuZZJhi/FydYYah1sQXbgeCa0qyTdOar2JeL\n\tqwwA==",
        "X-Gm-Message-State": "ALoCoQmh/H7JfzMZcP8Z0Ofpr5Xyn3xif95GYEaMWzUuo4Ikt3Allq3TceNTsQC+VTQHcLIOXQZ2",
        "X-Received": "by 10.180.92.65 with SMTP id ck1mr25044698wib.78.1429539161805; \n\tMon, 20 Apr 2015 07:12:41 -0700 (PDT)",
        "From": "Thomas Monjalon <thomas.monjalon@6wind.com>",
        "To": "Jingjing Wu <jingjing.wu@intel.com>",
        "Date": "Mon, 20 Apr 2015 16:11:43 +0200",
        "Message-Id": "<1429539103-15885-1-git-send-email-thomas.monjalon@6wind.com>",
        "X-Mailer": "git-send-email 2.2.2",
        "Cc": "dev@dpdk.org",
        "Subject": "[dpdk-dev] [RFC PATCH] ethdev: remove old flow director API",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "It's time to remove this old API.\nIt seems some work is still needed to rely only on eth_ctrl API.\nAt least ixgbe, i40e and testpmd must be fixed.\nJingjing, do you think it's possible to remove all these structures\nfrom rte_ethdev.h?\n\nThanks\n\n---\n lib/librte_ether/rte_ethdev.c     | 260 -------------------------\n lib/librte_ether/rte_ethdev.h     | 399 --------------------------------------\n lib/librte_pmd_enic/enic_ethdev.c |   1 -\n lib/librte_pmd_mlx4/mlx4.c        |   7 -\n 4 files changed, 667 deletions(-)",
    "diff": "diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c\nindex e20cca5..65173e7 100644\n--- a/lib/librte_ether/rte_ethdev.c\n+++ b/lib/librte_ether/rte_ethdev.c\n@@ -2098,266 +2098,6 @@ rte_eth_dev_set_vlan_pvid(uint8_t port_id, uint16_t pvid, int on)\n }\n \n int\n-rte_eth_dev_fdir_add_signature_filter(uint8_t port_id,\n-\t\t\t\t      struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t      uint8_t queue)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_SIGNATURE) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type, source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_add_signature_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_add_signature_filter)(dev, fdir_filter,\n-\t\t\t\t\t\t\t\tqueue);\n-}\n-\n-int\n-rte_eth_dev_fdir_update_signature_filter(uint8_t port_id,\n-\t\t\t\t\t struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t\t uint8_t queue)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_SIGNATURE) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type, source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_update_signature_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_update_signature_filter)(dev, fdir_filter,\n-\t\t\t\t\t\t\t\tqueue);\n-\n-}\n-\n-int\n-rte_eth_dev_fdir_remove_signature_filter(uint8_t port_id,\n-\t\t\t\t\t struct rte_fdir_filter *fdir_filter)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_SIGNATURE) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_remove_signature_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_remove_signature_filter)(dev, fdir_filter);\n-}\n-\n-int\n-rte_eth_dev_fdir_get_infos(uint8_t port_id, struct rte_eth_fdir *fdir)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\tif (! (dev->data->dev_conf.fdir_conf.mode)) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: pkt-filter disabled\\n\", port_id);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_infos_get, -ENOTSUP);\n-\n-\t(*dev->dev_ops->fdir_infos_get)(dev, fdir);\n-\treturn (0);\n-}\n-\n-int\n-rte_eth_dev_fdir_add_perfect_filter(uint8_t port_id,\n-\t\t\t\t    struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t    uint16_t soft_id, uint8_t queue,\n-\t\t\t\t    uint8_t drop)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_PERFECT) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type, source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\t/* For now IPv6 is not supported with perfect filter */\n-\tif (fdir_filter->iptype == RTE_FDIR_IPTYPE_IPV6)\n-\t\treturn (-ENOTSUP);\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_add_perfect_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_add_perfect_filter)(dev, fdir_filter,\n-\t\t\t\t\t\t\t\tsoft_id, queue,\n-\t\t\t\t\t\t\t\tdrop);\n-}\n-\n-int\n-rte_eth_dev_fdir_update_perfect_filter(uint8_t port_id,\n-\t\t\t\t       struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t       uint16_t soft_id, uint8_t queue,\n-\t\t\t\t       uint8_t drop)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_PERFECT) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type, source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\t/* For now IPv6 is not supported with perfect filter */\n-\tif (fdir_filter->iptype == RTE_FDIR_IPTYPE_IPV6)\n-\t\treturn (-ENOTSUP);\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_update_perfect_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_update_perfect_filter)(dev, fdir_filter,\n-\t\t\t\t\t\t\tsoft_id, queue, drop);\n-}\n-\n-int\n-rte_eth_dev_fdir_remove_perfect_filter(uint8_t port_id,\n-\t\t\t\t       struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t       uint16_t soft_id)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\n-\tif (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_PERFECT) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: invalid FDIR mode=%u\\n\",\n-\t\t\t\tport_id, dev->data->dev_conf.fdir_conf.mode);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tif ((fdir_filter->l4type == RTE_FDIR_L4TYPE_SCTP\n-\t     || fdir_filter->l4type == RTE_FDIR_L4TYPE_NONE)\n-\t    && (fdir_filter->port_src || fdir_filter->port_dst)) {\n-\t\tPMD_DEBUG_TRACE(\" Port are meaningless for SCTP and \" \\\n-\t\t\t\t\"None l4type, source & destinations ports \" \\\n-\t\t\t\t\"should be null!\\n\");\n-\t\treturn (-EINVAL);\n-\t}\n-\n-\t/* For now IPv6 is not supported with perfect filter */\n-\tif (fdir_filter->iptype == RTE_FDIR_IPTYPE_IPV6)\n-\t\treturn (-ENOTSUP);\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_remove_perfect_filter, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_remove_perfect_filter)(dev, fdir_filter,\n-\t\t\t\t\t\t\t\tsoft_id);\n-}\n-\n-int\n-rte_eth_dev_fdir_set_masks(uint8_t port_id, struct rte_fdir_masks *fdir_mask)\n-{\n-\tstruct rte_eth_dev *dev;\n-\n-\tif (!rte_eth_dev_is_valid_port(port_id)) {\n-\t\tPMD_DEBUG_TRACE(\"Invalid port_id=%d\\n\", port_id);\n-\t\treturn (-ENODEV);\n-\t}\n-\n-\tdev = &rte_eth_devices[port_id];\n-\tif (! (dev->data->dev_conf.fdir_conf.mode)) {\n-\t\tPMD_DEBUG_TRACE(\"port %d: pkt-filter disabled\\n\", port_id);\n-\t\treturn (-ENOSYS);\n-\t}\n-\n-\tFUNC_PTR_OR_ERR_RET(*dev->dev_ops->fdir_set_masks, -ENOTSUP);\n-\treturn (*dev->dev_ops->fdir_set_masks)(dev, fdir_mask);\n-}\n-\n-int\n rte_eth_dev_flow_ctrl_get(uint8_t port_id, struct rte_eth_fc_conf *fc_conf)\n {\n \tstruct rte_eth_dev *dev;\ndiff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h\nindex 4648290..041aa32 100644\n--- a/lib/librte_ether/rte_ethdev.h\n+++ b/lib/librte_ether/rte_ethdev.h\n@@ -672,42 +672,6 @@ struct rte_eth_pfc_conf {\n };\n \n /**\n- *  Memory space that can be configured to store Flow Director filters\n- *  in the board memory.\n- */\n-enum rte_fdir_pballoc_type {\n-\tRTE_FDIR_PBALLOC_64K = 0,  /**< 64k. */\n-\tRTE_FDIR_PBALLOC_128K,     /**< 128k. */\n-\tRTE_FDIR_PBALLOC_256K,     /**< 256k. */\n-};\n-\n-/**\n- *  Select report mode of FDIR hash information in RX descriptors.\n- */\n-enum rte_fdir_status_mode {\n-\tRTE_FDIR_NO_REPORT_STATUS = 0, /**< Never report FDIR hash. */\n-\tRTE_FDIR_REPORT_STATUS, /**< Only report FDIR hash for matching pkts. */\n-\tRTE_FDIR_REPORT_STATUS_ALWAYS, /**< Always report FDIR hash. */\n-};\n-\n-/**\n- * A structure used to configure the Flow Director (FDIR) feature\n- * of an Ethernet port.\n- *\n- * If mode is RTE_FDIR_DISABLE, the pballoc value is ignored.\n- */\n-struct rte_fdir_conf {\n-\tenum rte_fdir_mode mode; /**< Flow Director mode. */\n-\tenum rte_fdir_pballoc_type pballoc; /**< Space for FDIR filters. */\n-\tenum rte_fdir_status_mode status;  /**< How to report FDIR hash. */\n-\t/** RX queue of packets matching a \"drop\" filter in perfect mode. */\n-\tuint8_t drop_queue;\n-\tstruct rte_eth_fdir_masks mask;\n-\tstruct rte_eth_fdir_flex_conf flex_conf;\n-\t/**< Flex payload configuration. */\n-};\n-\n-/**\n  * UDP tunneling configuration.\n  */\n struct rte_eth_udp_tunnel {\n@@ -734,96 +698,6 @@ enum rte_iptype {\n };\n \n /**\n- *  A structure used to define a FDIR packet filter.\n- */\n-struct rte_fdir_filter {\n-\tuint16_t flex_bytes; /**< Flex bytes value to match. */\n-\tuint16_t vlan_id; /**< VLAN ID value to match, 0 otherwise. */\n-\tuint16_t port_src; /**< Source port to match, 0 otherwise. */\n-\tuint16_t port_dst; /**< Destination port to match, 0 otherwise. */\n-\tunion {\n-\t\tuint32_t ipv4_addr; /**< IPv4 source address to match. */\n-\t\tuint32_t ipv6_addr[4]; /**< IPv6 source address to match. */\n-\t} ip_src; /**< IPv4/IPv6 source address to match (union of above). */\n-\tunion {\n-\t\tuint32_t ipv4_addr; /**< IPv4 destination address to match. */\n-\t\tuint32_t ipv6_addr[4]; /**< IPv6 destination address to match */\n-\t} ip_dst; /**< IPv4/IPv6 destination address to match (union of above). */\n-\tenum rte_l4type l4type; /**< l4type to match: NONE/UDP/TCP/SCTP. */\n-\tenum rte_iptype iptype; /**< IP packet type to match: IPv4 or IPv6. */\n-};\n-\n-/**\n- *  A structure used to configure FDIR masks that are used by the device\n- *  to match the various fields of RX packet headers.\n- *  @note The only_ip_flow field has the opposite meaning compared to other\n- *  masks!\n- */\n-struct rte_fdir_masks {\n-\t/** When set to 1, packet l4type is \\b NOT relevant in filters, and\n-\t   source and destination port masks must be set to zero. */\n-\tuint8_t only_ip_flow;\n-\t/** If set to 1, vlan_id is relevant in filters. */\n-\tuint8_t vlan_id;\n-\t/** If set to 1, vlan_prio is relevant in filters. */\n-\tuint8_t vlan_prio;\n-\t/** If set to 1, flexbytes is relevant in filters. */\n-\tuint8_t flexbytes;\n-\t/** If set to 1, set the IPv6 masks. Otherwise set the IPv4 masks. */\n-\tuint8_t set_ipv6_mask;\n-\t/** When set to 1, comparison of destination IPv6 address with IP6AT\n-\t    registers is meaningful. */\n-\tuint8_t comp_ipv6_dst;\n-\t/** Mask of Destination IPv4 Address. All bits set to 1 define the\n-\t    relevant bits to use in the destination address of an IPv4 packet\n-\t    when matching it against FDIR filters. */\n-\tuint32_t dst_ipv4_mask;\n-\t/** Mask of Source IPv4 Address. All bits set to 1 define\n-\t    the relevant bits to use in the source address of an IPv4 packet\n-\t    when matching it against FDIR filters. */\n-\tuint32_t src_ipv4_mask;\n-\t/** Mask of Source IPv6 Address. All bits set to 1 define the\n-\t    relevant BYTES to use in the source address of an IPv6 packet\n-\t    when matching it against FDIR filters. */\n-\tuint16_t dst_ipv6_mask;\n-\t/** Mask of Destination IPv6 Address. All bits set to 1 define the\n-\t    relevant BYTES to use in the destination address of an IPv6 packet\n-\t    when matching it against FDIR filters. */\n-\tuint16_t src_ipv6_mask;\n-\t/** Mask of Source Port. All bits set to 1 define the relevant\n-\t    bits to use in the source port of an IP packets when matching it\n-\t    against FDIR filters. */\n-\tuint16_t src_port_mask;\n-\t/** Mask of Destination Port. All bits set to 1 define the relevant\n-\t    bits to use in the destination port of an IP packet when matching it\n-\t    against FDIR filters. */\n-\tuint16_t dst_port_mask;\n-};\n-\n-/**\n- *  A structure used to report the status of the flow director filters in use.\n- */\n-struct rte_eth_fdir {\n-\t/** Number of filters with collision indication. */\n-\tuint16_t collision;\n-\t/** Number of free (non programmed) filters. */\n-\tuint16_t free;\n-\t/** The Lookup hash value of the added filter that updated the value\n-\t   of the MAXLEN field */\n-\tuint16_t maxhash;\n-\t/** Longest linked list of filters in the table. */\n-\tuint8_t maxlen;\n-\t/** Number of added filters. */\n-\tuint64_t add;\n-\t/** Number of removed filters. */\n-\tuint64_t remove;\n-\t/** Number of failed added filters (no more space in device). */\n-\tuint64_t f_add;\n-\t/** Number of failed removed filters. */\n-\tuint64_t f_remove;\n-};\n-\n-/**\n  * A structure used to enable/disable specific device interrupts.\n  */\n struct rte_intr_conf {\n@@ -868,7 +742,6 @@ 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_intr_conf intr_conf; /**< Interrupt mode configuration. */\n };\n \n@@ -1079,45 +952,6 @@ typedef uint16_t (*eth_tx_burst_t)(void *txq,\n \t\t\t\t   uint16_t nb_pkts);\n /**< @internal Send output packets on a transmit queue of an Ethernet device. */\n \n-typedef int (*fdir_add_signature_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t   struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t   uint8_t rx_queue);\n-/**< @internal Setup a new signature filter rule on an Ethernet device */\n-\n-typedef int (*fdir_update_signature_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t      struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t      uint8_t rx_queue);\n-/**< @internal Update a signature filter rule on an Ethernet device */\n-\n-typedef int (*fdir_remove_signature_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t      struct rte_fdir_filter *fdir_ftr);\n-/**< @internal Remove a  signature filter rule on an Ethernet device */\n-\n-typedef void (*fdir_infos_get_t)(struct rte_eth_dev *dev,\n-\t\t\t\t struct rte_eth_fdir *fdir);\n-/**< @internal Get information about fdir status */\n-\n-typedef int (*fdir_add_perfect_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t uint16_t soft_id, uint8_t rx_queue,\n-\t\t\t\t\t uint8_t drop);\n-/**< @internal Setup a new perfect filter rule on an Ethernet device */\n-\n-typedef int (*fdir_update_perfect_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t    struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t    uint16_t soft_id, uint8_t rx_queue,\n-\t\t\t\t\t    uint8_t drop);\n-/**< @internal Update a perfect filter rule on an Ethernet device */\n-\n-typedef int (*fdir_remove_perfect_filter_t)(struct rte_eth_dev *dev,\n-\t\t\t\t\t    struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t    uint16_t soft_id);\n-/**< @internal Remove a perfect filter rule on an Ethernet device */\n-\n-typedef int (*fdir_set_masks_t)(struct rte_eth_dev *dev,\n-\t\t\t\tstruct rte_fdir_masks *fdir_masks);\n-/**< @internal Setup flow director masks on an Ethernet device */\n-\n typedef int (*flow_ctrl_get_t)(struct rte_eth_dev *dev,\n \t\t\t       struct rte_eth_fc_conf *fc_conf);\n /**< @internal Get current flow control parameter on an Ethernet device */\n@@ -1346,23 +1180,6 @@ struct eth_dev_ops {\n \teth_udp_tunnel_del_t       udp_tunnel_del;\n \teth_set_queue_rate_limit_t set_queue_rate_limit;   /**< Set queue rate limit */\n \teth_set_vf_rate_limit_t    set_vf_rate_limit;   /**< Set VF rate limit */\n-\n-\t/** Add a signature filter. */\n-\tfdir_add_signature_filter_t fdir_add_signature_filter;\n-\t/** Update a signature filter. */\n-\tfdir_update_signature_filter_t fdir_update_signature_filter;\n-\t/** Remove a signature filter. */\n-\tfdir_remove_signature_filter_t fdir_remove_signature_filter;\n-\t/** Get information about FDIR status. */\n-\tfdir_infos_get_t fdir_infos_get;\n-\t/** Add a perfect filter. */\n-\tfdir_add_perfect_filter_t fdir_add_perfect_filter;\n-\t/** Update a perfect filter. */\n-\tfdir_update_perfect_filter_t fdir_update_perfect_filter;\n-\t/** Remove a perfect filter. */\n-\tfdir_remove_perfect_filter_t fdir_remove_perfect_filter;\n-\t/** Setup masks for FDIR filtering. */\n-\tfdir_set_masks_t fdir_set_masks;\n \t/** Update redirection table. */\n \treta_update_t reta_update;\n \t/** Query redirection table. */\n@@ -2579,222 +2396,6 @@ rte_eth_tx_burst(uint8_t port_id, uint16_t queue_id,\n #endif\n \n /**\n- * Setup a new signature filter rule on an Ethernet device\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_filter\n- *   The pointer to the fdir filter structure describing the signature filter\n- *   rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- * @param rx_queue\n- *   The index of the RX queue where to store RX packets matching the added\n- *   signature filter defined in fdir_filter.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the FDIR mode is not configured in signature mode\n- *               on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_add_signature_filter(uint8_t port_id,\n-\t\t\t\t\t  struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t\t  uint8_t rx_queue);\n-\n-/**\n- * Update a signature filter rule on an Ethernet device.\n- * If the rule doesn't exits, it is created.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_ftr\n- *   The pointer to the structure describing the signature filter rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- * @param rx_queue\n- *   The index of the RX queue where to store RX packets matching the added\n- *   signature filter defined in fdir_ftr.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in signature mode\n- *     on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_update_signature_filter(uint8_t port_id,\n-\t\t\t\t\t     struct rte_fdir_filter *fdir_ftr,\n-\t\t\t\t\t     uint8_t rx_queue);\n-\n-/**\n- * Remove a signature filter rule on an Ethernet device.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_ftr\n- *   The pointer to the structure describing the signature filter rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in signature mode\n- *     on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_remove_signature_filter(uint8_t port_id,\n-\t\t\t\t\t     struct rte_fdir_filter *fdir_ftr);\n-\n-/**\n- * Retrieve the flow director information of an Ethernet device.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir\n- *   A pointer to a structure of type *rte_eth_dev_fdir* to be filled with\n- *   the flow director information of the Ethernet device.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured on *port_id*.\n- */\n-int rte_eth_dev_fdir_get_infos(uint8_t port_id, struct rte_eth_fdir *fdir);\n-\n-/**\n- * Add a new perfect filter rule on an Ethernet device.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_filter\n- *   The pointer to the structure describing the perfect filter rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- *   IPv6 are not supported.\n- * @param soft_id\n- *    The 16-bit value supplied in the field hash.fdir.id of mbuf for RX\n- *    packets matching the perfect filter.\n- * @param rx_queue\n- *   The index of the RX queue where to store RX packets matching the added\n- *   perfect filter defined in fdir_filter.\n- * @param drop\n- *    If drop is set to 1, matching RX packets are stored into the RX drop\n- *    queue defined in the rte_fdir_conf.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in perfect mode\n- *               on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_add_perfect_filter(uint8_t port_id,\n-\t\t\t\t\tstruct rte_fdir_filter *fdir_filter,\n-\t\t\t\t\tuint16_t soft_id, uint8_t rx_queue,\n-\t\t\t\t\tuint8_t drop);\n-\n-/**\n- * Update a perfect filter rule on an Ethernet device.\n- * If the rule doesn't exits, it is created.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_filter\n- *   The pointer to the structure describing the perfect filter rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- *   IPv6 are not supported.\n- * @param soft_id\n- *    The 16-bit value supplied in the field hash.fdir.id of mbuf for RX\n- *    packets matching the perfect filter.\n- * @param rx_queue\n- *   The index of the RX queue where to store RX packets matching the added\n- *   perfect filter defined in fdir_filter.\n- * @param drop\n- *    If drop is set to 1, matching RX packets are stored into the RX drop\n- *    queue defined in the rte_fdir_conf.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in perfect mode\n- *      on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_update_perfect_filter(uint8_t port_id,\n-\t\t\t\t\t   struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t\t   uint16_t soft_id, uint8_t rx_queue,\n-\t\t\t\t\t   uint8_t drop);\n-\n-/**\n- * Remove a perfect filter rule on an Ethernet device.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_filter\n- *   The pointer to the structure describing the perfect filter rule.\n- *   The *rte_fdir_filter* structure includes the values of the different fields\n- *   to match: source and destination IP addresses, vlan id, flexbytes, source\n- *   and destination ports, and so on.\n- *   IPv6 are not supported.\n- * @param soft_id\n- *    The soft_id value provided when adding/updating the removed filter.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in perfect mode\n- *      on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct.\n- */\n-int rte_eth_dev_fdir_remove_perfect_filter(uint8_t port_id,\n-\t\t\t\t\t   struct rte_fdir_filter *fdir_filter,\n-\t\t\t\t\t   uint16_t soft_id);\n-/**\n- * Configure globally the masks for flow director mode for an Ethernet device.\n- * For example, the device can match packets with only the first 24 bits of\n- * the IPv4 source address.\n- *\n- * The following fields can be masked: IPv4 addresses and L4 port numbers.\n- * The following fields can be either enabled or disabled completely for the\n- * matching functionality: VLAN ID tag; VLAN Priority + CFI bit; Flexible 2-byte\n- * tuple.\n- * IPv6 masks are not supported.\n- *\n- * All filters must comply with the masks previously configured.\n- * For example, with a mask equal to 255.255.255.0 for the source IPv4 address,\n- * all IPv4 filters must be created with a source IPv4 address that fits the\n- * \"X.X.X.0\" format.\n- *\n- * This function flushes all filters that have been previously added in\n- * the device.\n- *\n- * @param port_id\n- *   The port identifier of the Ethernet device.\n- * @param fdir_mask\n- *   The pointer to the fdir mask structure describing relevant headers fields\n- *   and relevant bits to use when matching packets addresses and ports.\n- *   IPv6 masks are not supported.\n- * @return\n- *   - (0) if successful.\n- *   - (-ENOTSUP) if hardware doesn't support flow director mode.\n- *   - (-ENODEV) if *port_id* invalid.\n- *   - (-ENOSYS) if the flow director mode is not configured in perfect\n- *      mode on *port_id*.\n- *   - (-EINVAL) if the fdir_filter information is not correct\n- */\n-int rte_eth_dev_fdir_set_masks(uint8_t port_id,\n-\t\t\t       struct rte_fdir_masks *fdir_mask);\n-\n-/**\n  * The eth device event type for interrupt, and maybe others in the future.\n  */\n enum rte_eth_event_type {\ndiff --git a/lib/librte_pmd_enic/enic_ethdev.c b/lib/librte_pmd_enic/enic_ethdev.c\nindex 63a594d..bdb6801 100644\n--- a/lib/librte_pmd_enic/enic_ethdev.c\n+++ b/lib/librte_pmd_enic/enic_ethdev.c\n@@ -576,7 +576,6 @@ static const struct eth_dev_ops enicpmd_eth_dev_ops = {\n \t.priority_flow_ctrl_set = NULL,\n \t.mac_addr_add         = enicpmd_add_mac_addr,\n \t.mac_addr_remove      = enicpmd_remove_mac_addr,\n-\t.fdir_set_masks               = NULL,\n \t.filter_ctrl          = enicpmd_dev_filter_ctrl,\n };\n \ndiff --git a/lib/librte_pmd_mlx4/mlx4.c b/lib/librte_pmd_mlx4/mlx4.c\nindex 024282a..6ba5a6b 100644\n--- a/lib/librte_pmd_mlx4/mlx4.c\n+++ b/lib/librte_pmd_mlx4/mlx4.c\n@@ -4192,13 +4192,6 @@ static const struct eth_dev_ops mlx4_dev_ops = {\n \t.mac_addr_remove = mlx4_mac_addr_remove,\n \t.mac_addr_add = mlx4_mac_addr_add,\n \t.mtu_set = mlx4_dev_set_mtu,\n-\t.fdir_add_signature_filter = NULL,\n-\t.fdir_update_signature_filter = NULL,\n-\t.fdir_remove_signature_filter = NULL,\n-\t.fdir_add_perfect_filter = NULL,\n-\t.fdir_update_perfect_filter = NULL,\n-\t.fdir_remove_perfect_filter = NULL,\n-\t.fdir_set_masks = NULL\n };\n \n /**\n",
    "prefixes": [
        "dpdk-dev",
        "RFC"
    ]
}