get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 65528,
    "url": "http://patches.dpdk.org/api/patches/65528/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1580816002-159035-2-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": "<1580816002-159035-2-git-send-email-bingz@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1580816002-159035-2-git-send-email-bingz@mellanox.com",
    "date": "2020-02-04T11:33:17",
    "name": "[v2,1/6] net/mlx5: introduce non-cached flows tailq list",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "0da8051d59eeca5ea93aa91f127c40accd32a1ba",
    "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/1580816002-159035-2-git-send-email-bingz@mellanox.com/mbox/",
    "series": [
        {
            "id": 8412,
            "url": "http://patches.dpdk.org/api/series/8412/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8412",
            "date": "2020-02-04T11:33:16",
            "name": "net/mlx5: move to non-cached mode for flow rules",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/8412/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/65528/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/65528/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 71D3BA0532;\n\tTue,  4 Feb 2020 12:33:42 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id F2E041C12F;\n\tTue,  4 Feb 2020 12:33:38 +0100 (CET)",
            "from git-send-mailer.rdmz.labs.mlnx (unknown [37.142.13.130])\n by dpdk.org (Postfix) with ESMTP id EE28E1C12B\n for <dev@dpdk.org>; Tue,  4 Feb 2020 12:33:36 +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": "Tue,  4 Feb 2020 13:33:17 +0200",
        "Message-Id": "<1580816002-159035-2-git-send-email-bingz@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1580816002-159035-1-git-send-email-bingz@mellanox.com>",
        "References": "<1580736735-19472-1-git-send-email-bingz@mellanox.com>\n <1580816002-159035-1-git-send-email-bingz@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v2 1/6] net/mlx5: introduce non-cached flows\n\ttailq list",
        "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": "A new tailq head is introduced in the mlx5 private structure for each\ndevice. Then all the flows created by user are moved into this tailq\nlist. This is the first stage to separate the flows with DV mode from\nthe flows with Verbs mode.\n\nSigned-off-by: Bing Zhao <bingz@mellanox.com>\n---\n drivers/net/mlx5/mlx5.c         |  3 ++-\n drivers/net/mlx5/mlx5.h         |  3 ++-\n drivers/net/mlx5/mlx5_flow.c    | 16 ++++++++--------\n drivers/net/mlx5/mlx5_trigger.c |  6 +++---\n 4 files changed, 15 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c\nindex 7a79722..6a2d662 100644\n--- a/drivers/net/mlx5/mlx5.c\n+++ b/drivers/net/mlx5/mlx5.c\n@@ -2686,7 +2686,8 @@ struct mlx5_flow_id_pool *\n \t\t\t\t      mlx5_ifindex(eth_dev),\n \t\t\t\t      eth_dev->data->mac_addrs,\n \t\t\t\t      MLX5_MAX_MAC_ADDRESSES);\n-\tTAILQ_INIT(&priv->flows);\n+\tTAILQ_INIT(&priv->cached_flows);\n+\tTAILQ_INIT(&priv->noncached_flows);\n \tTAILQ_INIT(&priv->ctrl_flows);\n \tTAILQ_INIT(&priv->flow_meters);\n \tTAILQ_INIT(&priv->flow_meter_profiles);\ndiff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex d7c519b..65bdb3b 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -515,7 +515,8 @@ struct mlx5_priv {\n \tunsigned int (*reta_idx)[]; /* RETA index table. */\n \tunsigned int reta_idx_n; /* RETA index size. */\n \tstruct mlx5_drop drop_queue; /* Flow drop queues. */\n-\tstruct mlx5_flows flows; /* RTE Flow rules. */\n+\tstruct mlx5_flows cached_flows; /* cached RTE Flow rules. */\n+\tstruct mlx5_flows noncached_flows; /* non-cached RTE Flow rules. */\n \tstruct mlx5_flows ctrl_flows; /* Control flow rules. */\n \tLIST_HEAD(rxq, mlx5_rxq_ctrl) rxqsctrl; /* DPDK Rx queues. */\n \tLIST_HEAD(rxqobj, mlx5_rxq_obj) rxqsobj; /* Verbs/DevX Rx queues. */\ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex 144e07c..d7fb094 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -4357,7 +4357,7 @@ struct rte_flow *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\treturn flow_list_create(dev, &priv->flows,\n+\treturn flow_list_create(dev, &priv->noncached_flows,\n \t\t\t\tattr, items, actions, true, error);\n }\n \n@@ -4490,7 +4490,7 @@ struct rte_flow *\n \tstruct rte_flow *flow;\n \tint ret = 0;\n \n-\tTAILQ_FOREACH(flow, &priv->flows, next) {\n+\tTAILQ_FOREACH(flow, &priv->noncached_flows, next) {\n \t\tDRV_LOG(DEBUG, \"port %u flow %p still referenced\",\n \t\t\tdev->data->port_id, (void *)flow);\n \t\t++ret;\n@@ -4674,7 +4674,7 @@ struct rte_flow *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\tflow_list_destroy(dev, &priv->flows, flow);\n+\tflow_list_destroy(dev, &priv->noncached_flows, flow);\n \treturn 0;\n }\n \n@@ -4690,7 +4690,7 @@ struct rte_flow *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\tmlx5_flow_list_flush(dev, &priv->flows);\n+\tmlx5_flow_list_flush(dev, &priv->noncached_flows);\n \treturn 0;\n }\n \n@@ -5004,7 +5004,7 @@ struct rte_flow *\n \tstruct rte_flow *flow = NULL;\n \n \tMLX5_ASSERT(fdir_flow);\n-\tTAILQ_FOREACH(flow, &priv->flows, next) {\n+\tTAILQ_FOREACH(flow, &priv->noncached_flows, next) {\n \t\tif (flow->fdir && !flow_fdir_cmp(flow->fdir, fdir_flow)) {\n \t\t\tDRV_LOG(DEBUG, \"port %u found FDIR flow %p\",\n \t\t\t\tdev->data->port_id, (void *)flow);\n@@ -5047,7 +5047,7 @@ struct rte_flow *\n \t\trte_errno = EEXIST;\n \t\tgoto error;\n \t}\n-\tflow = flow_list_create(dev, &priv->flows, &fdir_flow->attr,\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 \tif (!flow)\n@@ -5092,7 +5092,7 @@ struct rte_flow *\n \t\trte_errno = ENOENT;\n \t\treturn -rte_errno;\n \t}\n-\tflow_list_destroy(dev, &priv->flows, flow);\n+\tflow_list_destroy(dev, &priv->noncached_flows, flow);\n \tDRV_LOG(DEBUG, \"port %u deleted FDIR flow %p\",\n \t\tdev->data->port_id, (void *)flow);\n \treturn 0;\n@@ -5132,7 +5132,7 @@ struct rte_flow *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\tmlx5_flow_list_flush(dev, &priv->flows);\n+\tmlx5_flow_list_flush(dev, &priv->noncached_flows);\n }\n \n /**\ndiff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c\nindex be47df5..0053847 100644\n--- a/drivers/net/mlx5/mlx5_trigger.c\n+++ b/drivers/net/mlx5/mlx5_trigger.c\n@@ -320,7 +320,7 @@\n \t\t\tdev->data->port_id);\n \t\tgoto error;\n \t}\n-\tret = mlx5_flow_start(dev, &priv->flows);\n+\tret = mlx5_flow_start(dev, &priv->noncached_flows);\n \tif (ret) {\n \t\tDRV_LOG(DEBUG, \"port %u failed to set flows\",\n \t\t\tdev->data->port_id);\n@@ -337,7 +337,7 @@\n \tret = rte_errno; /* Save rte_errno before cleanup. */\n \t/* Rollback. */\n \tdev->data->dev_started = 0;\n-\tmlx5_flow_stop(dev, &priv->flows);\n+\tmlx5_flow_stop(dev, &priv->noncached_flows);\n \tmlx5_traffic_disable(dev);\n \tmlx5_txq_stop(dev);\n \tmlx5_rxq_stop(dev);\n@@ -367,7 +367,7 @@\n \tmlx5_mp_req_stop_rxtx(dev);\n \tusleep(1000 * priv->rxqs_n);\n \tDRV_LOG(DEBUG, \"port %u stopping device\", dev->data->port_id);\n-\tmlx5_flow_stop(dev, &priv->flows);\n+\tmlx5_flow_stop(dev, &priv->noncached_flows);\n \tmlx5_traffic_disable(dev);\n \tmlx5_rx_intr_vec_disable(dev);\n \tmlx5_dev_interrupt_handler_uninstall(dev);\n",
    "prefixes": [
        "v2",
        "1/6"
    ]
}