get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 65488,
    "url": "http://patches.dpdk.org/api/patches/65488/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1580736735-19472-4-git-send-email-bingz@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": "<1580736735-19472-4-git-send-email-bingz@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1580736735-19472-4-git-send-email-bingz@mellanox.com",
    "date": "2020-02-03T13:32:12",
    "name": "[3/6] net/mlx5: flow type check before creating",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ad1e28e12e6a3a3c4ae8deae2a18a9b58ef95224",
    "submitter": {
        "id": 1357,
        "url": "http://patches.dpdk.org/api/people/1357/?format=api",
        "name": "Bing Zhao",
        "email": "bingz@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/1580736735-19472-4-git-send-email-bingz@mellanox.com/mbox/",
    "series": [
        {
            "id": 8396,
            "url": "http://patches.dpdk.org/api/series/8396/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8396",
            "date": "2020-02-03T13:32:09",
            "name": "net/mlx5: move to non-cached mode for flow rules",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/8396/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/65488/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/65488/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 93B60A052E;\n\tMon,  3 Feb 2020 14:32:56 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id A346B1C012;\n\tMon,  3 Feb 2020 14:32:39 +0100 (CET)",
            "from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130])\n by dpdk.org (Postfix) with ESMTP id 74FAE1BFF6\n for <dev@dpdk.org>; Mon,  3 Feb 2020 14:32:37 +0100 (CET)"
        ],
        "From": "Bing Zhao <bingz@mellanox.com>",
        "To": "orika@mellanox.com, viacheslavo@mellanox.com, rasland@mellanox.com,\n matan@mellanox.com",
        "Cc": "dev@dpdk.org",
        "Date": "Mon,  3 Feb 2020 15:32:12 +0200",
        "Message-Id": "<1580736735-19472-4-git-send-email-bingz@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1580736735-19472-1-git-send-email-bingz@mellanox.com>",
        "References": "<1580736735-19472-1-git-send-email-bingz@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH 3/6] net/mlx5: flow type check before creating",
        "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": "When creating a flow, the driver mode needs to be checked in order\nto call the corresponding functions. Now the driver mode checking\npart is moved out of the flow creating function, then the flow could\nbe added into the correct tailq list.\n\nSigned-off-by: Bing Zhao <bingz@mellanox.com>\n---\n drivers/net/mlx5/mlx5_flow.c | 40 ++++++++++++++++++++++++----------------\n 1 file changed, 24 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex 0560874..8fb973b 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -2874,8 +2874,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n flow_list_create(struct rte_eth_dev *dev, struct mlx5_flows *list,\n \t\t const struct rte_flow_attr *attr,\n \t\t const struct rte_flow_item items[],\n-\t\t const struct rte_flow_action actions[],\n-\t\t bool external, struct rte_flow_error *error);\n+\t\t const struct rte_flow_action actions[], bool external,\n+\t\t enum mlx5_flow_drv_type type, struct rte_flow_error *error);\n \n static void\n flow_list_destroy(struct rte_eth_dev *dev, struct mlx5_flows *list,\n@@ -3015,7 +3015,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t * by list traversing.\n \t */\n \tmcp_res->flow = flow_list_create(dev, NULL, &attr, items,\n-\t\t\t\t\t actions, false, error);\n+\t\t\t\t\t actions, false,\n+\t\t\t\t\t flow_get_drv_type(dev, &attr), error);\n \tif (!mcp_res->flow)\n \t\tgoto error;\n \tmcp_res->refcnt++;\n@@ -4119,6 +4120,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n  *   Associated actions (list terminated by the END action).\n  * @param[in] external\n  *   This flow rule is created by request external to PMD.\n+ * @param[in] type\n+ *   Flow rule type, DV or VERBS.\n  * @param[out] error\n  *   Perform verbose error reporting if not NULL.\n  *\n@@ -4129,8 +4132,8 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n flow_list_create(struct rte_eth_dev *dev, struct mlx5_flows *list,\n \t\t const struct rte_flow_attr *attr,\n \t\t const struct rte_flow_item items[],\n-\t\t const struct rte_flow_action actions[],\n-\t\t bool external, struct rte_flow_error *error)\n+\t\t const struct rte_flow_action actions[], bool external,\n+\t\t enum mlx5_flow_drv_type type, struct rte_flow_error *error)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \tstruct rte_flow *flow = NULL;\n@@ -4188,7 +4191,7 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,\n \t\trte_errno = ENOMEM;\n \t\tgoto error_before_flow;\n \t}\n-\tflow->drv_type = flow_get_drv_type(dev, attr);\n+\tflow->drv_type = type;\n \tif (hairpin_id != 0)\n \t\tflow->hairpin_flow_id = hairpin_id;\n \tMLX5_ASSERT(flow->drv_type > MLX5_FLOW_TYPE_MIN &&\n@@ -4339,7 +4342,8 @@ struct rte_flow *\n \tstruct rte_flow_error error;\n \n \treturn flow_list_create(dev, &priv->ctrl_flows, &attr, &pattern,\n-\t\t\t\tactions, false, &error);\n+\t\t\t\tactions, false,\n+\t\t\t\tflow_get_drv_type(dev, &attr), &error);\n }\n \n /**\n@@ -4356,9 +4360,13 @@ struct rte_flow *\n \t\t struct rte_flow_error *error)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tstruct mlx5_flows *flow_list;\n+\tenum mlx5_flow_drv_type type = flow_get_drv_type(dev, attr);\n \n-\treturn flow_list_create(dev, &priv->noncached_flows,\n-\t\t\t\tattr, items, actions, true, error);\n+\tflow_list = (type == MLX5_FLOW_TYPE_DV) ? &priv->noncached_flows :\n+\t\t\t\t\t\t  &priv->cached_flows;\n+\treturn flow_list_create(dev, flow_list, attr,\n+\t\t\t\titems, actions, true, type, error);\n }\n \n /**\n@@ -4548,8 +4556,8 @@ struct rte_flow *\n \tactions[0].type = RTE_FLOW_ACTION_TYPE_JUMP;\n \tactions[0].conf = &jump;\n \tactions[1].type = RTE_FLOW_ACTION_TYPE_END;\n-\tflow = flow_list_create(dev, &priv->ctrl_flows,\n-\t\t\t\t&attr, items, actions, false, &error);\n+\tflow = flow_list_create(dev, &priv->ctrl_flows, &attr, items, actions,\n+\t\t\t\tfalse, flow_get_drv_type(dev, &attr), &error);\n \tif (!flow) {\n \t\tDRV_LOG(DEBUG,\n \t\t\t\"Failed to create ctrl flow: rte_errno(%d),\"\n@@ -4636,8 +4644,8 @@ struct rte_flow *\n \t}\n \tfor (i = 0; i != priv->reta_idx_n; ++i)\n \t\tqueue[i] = (*priv->reta_idx)[i];\n-\tflow = flow_list_create(dev, &priv->ctrl_flows,\n-\t\t\t\t&attr, items, actions, false, &error);\n+\tflow = flow_list_create(dev, &priv->ctrl_flows, &attr, items, actions,\n+\t\t\t\tfalse, flow_get_drv_type(dev, &attr), &error);\n \tif (!flow)\n \t\treturn -rte_errno;\n \treturn 0;\n@@ -5078,7 +5086,7 @@ struct rte_flow *\n \t}\n \tflow = flow_list_create(dev, &priv->noncached_flows, &fdir_flow->attr,\n \t\t\t\tfdir_flow->items, fdir_flow->actions, true,\n-\t\t\t\tNULL);\n+\t\t\t\tflow_get_drv_type(dev, &fdir_flow->attr), NULL);\n \tif (!flow)\n \t\tgoto error;\n \tMLX5_ASSERT(!flow->fdir);\n@@ -5695,8 +5703,8 @@ struct mlx5_flow_counter *\n \t\tif (!config->dv_flow_en)\n \t\t\tbreak;\n \t\t/* Create internal flow, validation skips copy action. */\n-\t\tflow = flow_list_create(dev, NULL, &attr, items,\n-\t\t\t\t\tactions, false, &error);\n+\t\tflow = flow_list_create(dev, NULL, &attr, items, actions, false,\n+\t\t\t\t\tflow_get_drv_type(dev, &attr), &error);\n \t\tif (!flow)\n \t\t\tcontinue;\n \t\tif (dev->data->dev_started || !flow_drv_apply(dev, flow, NULL))\n",
    "prefixes": [
        "3/6"
    ]
}