get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 65907,
    "url": "http://patches.dpdk.org/api/patches/65907/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1582122380-54467-2-git-send-email-suanmingm@mellanox.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": "<1582122380-54467-2-git-send-email-suanmingm@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1582122380-54467-2-git-send-email-suanmingm@mellanox.com",
    "date": "2020-02-19T14:26:19",
    "name": "[1/2] net/mlx5: fix wrong layer validation with decapsulation",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "8d38bc8fd6ce64f96a3dee045b5ab4ebb21fd180",
    "submitter": {
        "id": 1358,
        "url": "http://patches.dpdk.org/api/people/1358/?format=api",
        "name": "Suanming Mou",
        "email": "suanmingm@mellanox.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1582122380-54467-2-git-send-email-suanmingm@mellanox.com/mbox/",
    "series": [
        {
            "id": 8613,
            "url": "http://patches.dpdk.org/api/series/8613/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8613",
            "date": "2020-02-19T14:26:18",
            "name": "net/mlx5: fix incorrect layer choose with decap",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/8613/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/65907/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/65907/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 AF248A0555;\n\tWed, 19 Feb 2020 15:26:33 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id EF6F41BF87;\n\tWed, 19 Feb 2020 15:26:26 +0100 (CET)",
            "from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130])\n by dpdk.org (Postfix) with ESMTP id 3FDF53B5;\n Wed, 19 Feb 2020 15:26:25 +0100 (CET)"
        ],
        "From": "Suanming Mou <suanmingm@mellanox.com>",
        "To": "viacheslavo@mellanox.com,\n\tmatan@mellanox.com",
        "Cc": "dev@dpdk.org,\n\trasland@mellanox.com,\n\tstable@dpdk.org",
        "Date": "Wed, 19 Feb 2020 16:26:19 +0200",
        "Message-Id": "<1582122380-54467-2-git-send-email-suanmingm@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1582122380-54467-1-git-send-email-suanmingm@mellanox.com>",
        "References": "<1582122380-54467-1-git-send-email-suanmingm@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH 1/2] net/mlx5: fix wrong layer validation with\n\tdecapsulation",
        "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": "Currently, the flow validate function only validate the outermost layer\nwith the header modify actions. If there is decapsulation action before\nthe header modify action, the validation should choose the inner layer\nfor validation.\n\nAdd decapsulation check when validate with the header modify actions.\nChoose the inner layer once there is decapsulation action.\n\nFixes: 4bb14c83df95 (\"net/mlx5: support modify header using Direct Verbs\")\nCc: stable@dpdk.org\n\nSigned-off-by: Suanming Mou <suanmingm@mellanox.com>\n---\n drivers/net/mlx5/mlx5_flow_dv.c | 36 ++++++++++++++++++++++++++++++------\n 1 file changed, 30 insertions(+), 6 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex 1c01269..410c555 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -3096,10 +3096,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t    struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_L3_IPV4))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L3_IPV4 :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L3_IPV4;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL,\n@@ -3130,10 +3134,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t    struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_L3_IPV6))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L3_IPV6 :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L3_IPV6;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL,\n@@ -3164,10 +3172,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t  struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_L4))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L4 :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L4;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL, \"no transport layer \"\n@@ -3199,10 +3211,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t       struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_OUTER_L4_TCP))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L4_TCP :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L4_TCP;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL, \"no TCP item in\"\n@@ -3244,10 +3260,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t       struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_OUTER_L4_TCP))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L4_TCP :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L4_TCP;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL, \"no TCP item in\"\n@@ -3288,10 +3308,14 @@ struct field_modify_info modify_tcp[] = {\n \t\t\t\t   struct rte_flow_error *error)\n {\n \tint ret = 0;\n+\tuint64_t layer;\n \n \tret = flow_dv_validate_action_modify_hdr(action_flags, action, error);\n \tif (!ret) {\n-\t\tif (!(item_flags & MLX5_FLOW_LAYER_L3))\n+\t\tlayer = (action_flags & MLX5_FLOW_ACTION_DECAP) ?\n+\t\t\t\t MLX5_FLOW_LAYER_INNER_L3 :\n+\t\t\t\t MLX5_FLOW_LAYER_OUTER_L3;\n+\t\tif (!(item_flags & layer))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ACTION,\n \t\t\t\t\t\t  NULL,\n",
    "prefixes": [
        "1/2"
    ]
}