get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 46591,
    "url": "https://patches.dpdk.org/api/patches/46591/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1539254998-8555-2-git-send-email-dekelp@mellanox.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1539254998-8555-2-git-send-email-dekelp@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1539254998-8555-2-git-send-email-dekelp@mellanox.com",
    "date": "2018-10-11T10:49:56",
    "name": "[v4,1/3] ethdev: support metadata as flow rule criteria",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "9f49caa2409ba54bb98628451f11db38f5f57597",
    "submitter": {
        "id": 1082,
        "url": "https://patches.dpdk.org/api/people/1082/?format=api",
        "name": "Dekel Peled",
        "email": "dekelp@mellanox.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1539254998-8555-2-git-send-email-dekelp@mellanox.com/mbox/",
    "series": [
        {
            "id": 1552,
            "url": "https://patches.dpdk.org/api/series/1552/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=1552",
            "date": "2018-09-27T13:57:54",
            "name": "support meadata as flow rule criteria",
            "version": 3,
            "mbox": "https://patches.dpdk.org/series/1552/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/46591/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/46591/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 11F201B4F6;\n\tThu, 11 Oct 2018 13:05:12 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id 231DD1B4C1\n\tfor <dev@dpdk.org>; Thu, 11 Oct 2018 13:05:09 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n\tdekelp@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 11 Oct 2018 12:55:18 +0200",
            "from mtl-vdi-280.wap.labs.mlnx. (mtl-vdi-280.wap.labs.mlnx\n\t[10.128.130.87])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id w9BAoKNG027124;\n\tThu, 11 Oct 2018 13:50:26 +0300"
        ],
        "From": "Dekel Peled <dekelp@mellanox.com>",
        "To": "wenzhuo.lu@intel.com, jingjing.wu@intel.com, bernard.iremonger@intel.com,\n\tolivier.matz@6wind.com, adrien.mazarguil@6wind.com,\n\tthomas@monjalon.net, ferruh.yigit@intel.com, arybchenko@solarflare.com",
        "Cc": "shahafs@mellanox.com, dev@dpdk.org, orika@mellanox.com",
        "Date": "Thu, 11 Oct 2018 13:49:56 +0300",
        "Message-Id": "<1539254998-8555-2-git-send-email-dekelp@mellanox.com>",
        "X-Mailer": "git-send-email 1.7.1",
        "In-Reply-To": "<1538056677-33846-1-git-send-email-dekelp@mellanox.com>",
        "References": "<1538056677-33846-1-git-send-email-dekelp@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v4 1/3] ethdev: support metadata as flow rule\n\tcriteria",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "As described in [1], a new rte_flow item is added to support metadata\nto use as flow rule match pattern.\nThe metadata is an opaque item, fully controlled by the application.\n\nThe use of metadata is relevant for egress rules only.\nIt can be set in the flow rule using the RTE_FLOW_ITEM_META.\n\nAn additional item 'tx_metadata' is added in union with existing member\n'hash' of struct 'rte_mbuf'.\nIt is used to carry the metadata item.\nCurrently this union is used only for ingress packets, so using it for\negress metadata will not cause conflicts.\n\nApplication should set the packet metadata in the mbuf dedicated field,\nand set the PKT_TX_METADATA flag in the mbuf->ol_flags.\nThe NIC will use the packet metadata as match criteria for relevant\nflow rules.\n\nThis patch introduces metadata item type for rte_flow RTE_FLOW_ITEM_META,\nalong with corresponding struct rte_flow_item_meta and ol_flag\nPKT_TX_METADATA.\n\n[1] \"[RFC,v2] ethdev: support metadata as flow rule criteria\"\n\nSigned-off-by: Dekel Peled <dekelp@mellanox.com>\n---\n doc/guides/prog_guide/rte_flow.rst | 21 ++++++++++++++\n lib/librte_ethdev/rte_ethdev.c     |  1 +\n lib/librte_ethdev/rte_ethdev.h     |  5 ++++\n lib/librte_ethdev/rte_flow.c       |  1 +\n lib/librte_ethdev/rte_flow.h       | 24 ++++++++++++++++\n lib/librte_mbuf/rte_mbuf.c         |  2 ++\n lib/librte_mbuf/rte_mbuf.h         | 57 +++++++++++++++++++++++++-------------\n 7 files changed, 92 insertions(+), 19 deletions(-)",
    "diff": "diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst\nindex b600b2d..8643722 100644\n--- a/doc/guides/prog_guide/rte_flow.rst\n+++ b/doc/guides/prog_guide/rte_flow.rst\n@@ -1191,6 +1191,27 @@ Normally preceded by any of:\n - `Item: ICMP6_ND_NS`_\n - `Item: ICMP6_ND_OPT`_\n \n+Item: ``META``\n+^^^^^^^^^^^^^^\n+\n+Matches an application specific 32 bit metadata item.\n+\n+- Default ``mask`` matches any 32 bit value.\n+\n+.. _table_rte_flow_item_meta:\n+\n+.. table:: META\n+\n+   +----------+----------+---------------------------+\n+   | Field    | Subfield | Value                     |\n+   +==========+==========+===========================+\n+   | ``spec`` | ``data`` | 32 bit metadata value     |\n+   +----------+--------------------------------------+\n+   | ``last`` | ``data`` | upper range value         |\n+   +----------+----------+---------------------------+\n+   | ``mask`` | ``data`` | zeroed to match any value |\n+   +----------+----------+---------------------------+\n+\n Actions\n ~~~~~~~\n \ndiff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c\nindex ef99f70..33c2a18 100644\n--- a/lib/librte_ethdev/rte_ethdev.c\n+++ b/lib/librte_ethdev/rte_ethdev.c\n@@ -157,6 +157,7 @@ struct rte_eth_xstats_name_off {\n \tRTE_TX_OFFLOAD_BIT2STR(SECURITY),\n \tRTE_TX_OFFLOAD_BIT2STR(UDP_TNL_TSO),\n \tRTE_TX_OFFLOAD_BIT2STR(IP_TNL_TSO),\n+\tRTE_TX_OFFLOAD_BIT2STR(MATCH_METADATA),\n };\n \n #undef RTE_TX_OFFLOAD_BIT2STR\ndiff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h\nindex 012577b..933f0e0 100644\n--- a/lib/librte_ethdev/rte_ethdev.h\n+++ b/lib/librte_ethdev/rte_ethdev.h\n@@ -942,6 +942,11 @@ struct rte_eth_conf {\n  * for tunnel TSO.\n  */\n #define DEV_TX_OFFLOAD_IP_TNL_TSO       0x00080000\n+/**\n+ * Device supports match on metadata Tx offload..\n+ * Application must set PKT_TX_METADATA and mbuf metadata field.\n+ */\n+#define DEV_TX_OFFLOAD_MATCH_METADATA   0x00100000\n \n #define RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP 0x00000001\n /**< Device supports Rx queue setup after device started*/\ndiff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c\nindex 00ed67b..5c01aba 100644\n--- a/lib/librte_ethdev/rte_flow.c\n+++ b/lib/librte_ethdev/rte_flow.c\n@@ -66,6 +66,7 @@ struct rte_flow_desc_data {\n \t\t     sizeof(struct rte_flow_item_icmp6_nd_opt_sla_eth)),\n \tMK_FLOW_ITEM(ICMP6_ND_OPT_TLA_ETH,\n \t\t     sizeof(struct rte_flow_item_icmp6_nd_opt_tla_eth)),\n+\tMK_FLOW_ITEM(META, sizeof(struct rte_flow_item_meta)),\n };\n \n /** Generate flow_action[] entry. */\ndiff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h\nindex 0656e5e..83aa9f4 100644\n--- a/lib/librte_ethdev/rte_flow.h\n+++ b/lib/librte_ethdev/rte_flow.h\n@@ -413,6 +413,14 @@ enum rte_flow_item_type {\n \t * See struct rte_flow_item_mark.\n \t */\n \tRTE_FLOW_ITEM_TYPE_MARK,\n+\n+\t/**\n+\t * [META]\n+\t *\n+\t * Matches a metadata value specified in mbuf metadata field.\n+\t * See struct rte_flow_item_meta.\n+\t */\n+\tRTE_FLOW_ITEM_TYPE_META,\n };\n \n /**\n@@ -1156,6 +1164,22 @@ struct rte_flow_item_icmp6_nd_opt_tla_eth {\n #endif\n \n /**\n+ * RTE_FLOW_ITEM_TYPE_META.\n+ *\n+ * Matches a specified metadata value.\n+ */\n+struct rte_flow_item_meta {\n+\tuint32_t data;\n+};\n+\n+/** Default mask for RTE_FLOW_ITEM_TYPE_META. */\n+#ifndef __cplusplus\n+static const struct rte_flow_item_meta rte_flow_item_meta_mask = {\n+\t.data = RTE_BE32(UINT32_MAX),\n+};\n+#endif\n+\n+/**\n  * @warning\n  * @b EXPERIMENTAL: this structure may change without prior notice\n  *\ndiff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c\nindex e714c5a..4b25ae8 100644\n--- a/lib/librte_mbuf/rte_mbuf.c\n+++ b/lib/librte_mbuf/rte_mbuf.c\n@@ -395,6 +395,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask)\n \tcase PKT_TX_TUNNEL_UDP: return \"PKT_TX_TUNNEL_UDP\";\n \tcase PKT_TX_MACSEC: return \"PKT_TX_MACSEC\";\n \tcase PKT_TX_SEC_OFFLOAD: return \"PKT_TX_SEC_OFFLOAD\";\n+\tcase PKT_TX_METADATA: return \"PKT_TX_METADATA\";\n \tdefault: return NULL;\n \t}\n }\n@@ -435,6 +436,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask)\n \t\t  \"PKT_TX_TUNNEL_NONE\" },\n \t\t{ PKT_TX_MACSEC, PKT_TX_MACSEC, NULL },\n \t\t{ PKT_TX_SEC_OFFLOAD, PKT_TX_SEC_OFFLOAD, NULL },\n+\t\t{ PKT_TX_METADATA, PKT_TX_METADATA, NULL },\n \t};\n \tconst char *name;\n \tunsigned int i;\ndiff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h\nindex a50b05c..1fa38db 100644\n--- a/lib/librte_mbuf/rte_mbuf.h\n+++ b/lib/librte_mbuf/rte_mbuf.h\n@@ -182,6 +182,11 @@\n /* add new TX flags here */\n \n /**\n+ * Indicate that the metadata field in the mbuf is in use.\n+ */\n+#define PKT_TX_METADATA\t(1ULL << 41)\n+\n+/**\n  * UDP Fragmentation Offload flag. This flag is used for enabling UDP\n  * fragmentation in SW or in HW. When use UFO, mbuf->tso_segsz is used\n  * to store the MSS of UDP fragments.\n@@ -342,8 +347,9 @@\n \t\tPKT_TX_QINQ_PKT |        \\\n \t\tPKT_TX_VLAN_PKT |        \\\n \t\tPKT_TX_TUNNEL_MASK |\t \\\n-\t\tPKT_TX_MACSEC |\t\t \\\n-\t\tPKT_TX_SEC_OFFLOAD)\n+\t\tPKT_TX_MACSEC |          \\\n+\t\tPKT_TX_SEC_OFFLOAD |\t \\\n+\t\tPKT_TX_METADATA)\n \n /**\n  * Mbuf having an external buffer attached. shinfo in mbuf must be filled.\n@@ -511,28 +517,41 @@ struct rte_mbuf {\n \t/** VLAN TCI (CPU order), valid if PKT_RX_VLAN is set. */\n \tuint16_t vlan_tci;\n \n+\tRTE_STD_C11\n \tunion {\n-\t\tuint32_t rss;     /**< RSS hash result if RSS enabled */\n-\t\tstruct {\n-\t\t\tRTE_STD_C11\n-\t\t\tunion {\n-\t\t\t\tstruct {\n-\t\t\t\t\tuint16_t hash;\n-\t\t\t\t\tuint16_t id;\n+\t\tunion {\n+\t\t\tuint32_t rss;     /**< RSS hash result if RSS enabled */\n+\t\t\tstruct {\n+\t\t\t\tunion {\n+\t\t\t\t\tstruct {\n+\t\t\t\t\t\tuint16_t hash;\n+\t\t\t\t\t\tuint16_t id;\n+\t\t\t\t\t};\n+\t\t\t\t\tuint32_t lo;\n+\t\t\t\t\t/**< Second 4 flexible bytes */\n \t\t\t\t};\n+\t\t\t\tuint32_t hi;\n+\t\t\t\t/**< First 4 flexible bytes or FD ID, dependent\n+\t\t\t\t * on PKT_RX_FDIR_* flag in ol_flags.\n+\t\t\t\t */\n+\t\t\t} fdir;\t/**< Filter identifier if FDIR enabled */\n+\t\t\tstruct {\n \t\t\t\tuint32_t lo;\n-\t\t\t\t/**< Second 4 flexible bytes */\n-\t\t\t};\n-\t\t\tuint32_t hi;\n-\t\t\t/**< First 4 flexible bytes or FD ID, dependent on\n-\t\t\t     PKT_RX_FDIR_* flag in ol_flags. */\n-\t\t} fdir;           /**< Filter identifier if FDIR enabled */\n+\t\t\t\tuint32_t hi;\n+\t\t\t} sched;          /**< Hierarchical scheduler */\n+\t\t\t/**< User defined tags. See rte_distributor_process() */\n+\t\t\tuint32_t usr;\n+\t\t} hash;                   /**< hash information */\n \t\tstruct {\n-\t\t\tuint32_t lo;\n+\t\t\t/**\n+\t\t\t * Application specific metadata value\n+\t\t\t * for egress flow rule match.\n+\t\t\t * Valid if PKT_TX_METADATA is set.\n+\t\t\t */\n+\t\t\tuint32_t tx_metadata;\n \t\t\tuint32_t hi;\n-\t\t} sched;          /**< Hierarchical scheduler */\n-\t\tuint32_t usr;\t  /**< User defined tags. See rte_distributor_process() */\n-\t} hash;                   /**< hash information */\n+\t\t};\n+\t};\n \n \t/** Outer VLAN TCI (CPU order), valid if PKT_RX_QINQ is set. */\n \tuint16_t vlan_tci_outer;\n",
    "prefixes": [
        "v4",
        "1/3"
    ]
}