get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 56841,
    "url": "http://patchwork.dpdk.org/api/patches/56841/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1563786795-14027-16-git-send-email-matan@mellanox.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<1563786795-14027-16-git-send-email-matan@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1563786795-14027-16-git-send-email-matan@mellanox.com",
    "date": "2019-07-22T09:13:02",
    "name": "[15/28] net/mlx5: rename verbs indirection table to obj",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "50ce7823b206462b9bc7a2806f63b90baadc46e0",
    "submitter": {
        "id": 796,
        "url": "http://patchwork.dpdk.org/api/people/796/?format=api",
        "name": "Matan Azrad",
        "email": "matan@mellanox.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patchwork.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/1563786795-14027-16-git-send-email-matan@mellanox.com/mbox/",
    "series": [
        {
            "id": 5639,
            "url": "http://patchwork.dpdk.org/api/series/5639/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=5639",
            "date": "2019-07-22T09:12:48",
            "name": "net/mlx5: support LRO",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/5639/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/56841/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/56841/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 718BD1BE55;\n\tMon, 22 Jul 2019 11:14:09 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id 3C2F41BDF7\n\tfor <dev@dpdk.org>; Mon, 22 Jul 2019 11:13:30 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE2 (envelope-from\n\tmatan@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 22 Jul 2019 12:13:23 +0300",
            "from pegasus07.mtr.labs.mlnx (pegasus07.mtr.labs.mlnx\n\t[10.210.16.112])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x6M9DMje010084;\n\tMon, 22 Jul 2019 12:13:23 +0300"
        ],
        "From": "Matan Azrad <matan@mellanox.com>",
        "To": "Shahaf Shuler <shahafs@mellanox.com>, Yongseok Koh <yskoh@mellanox.com>, \n\tViacheslav Ovsiienko <viacheslavo@mellanox.com>",
        "Cc": "dev@dpdk.org, Dekel Peled <dekelp@mellanox.com>",
        "Date": "Mon, 22 Jul 2019 09:13:02 +0000",
        "Message-Id": "<1563786795-14027-16-git-send-email-matan@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1563786795-14027-1-git-send-email-matan@mellanox.com>",
        "References": "<1563786795-14027-1-git-send-email-matan@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH 15/28] net/mlx5: rename verbs indirection table\n\tto obj",
        "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": "From: Dekel Peled <dekelp@mellanox.com>\n\nPrepare for introducing of DevX RQT object.\nRx indirection table object is currently created using verbs only.\nThe next patches will add the option to create an RQT object using\nDevX.\nThis patch renames ind_table_ibv to ind_table_obj wherever relevant,\nand adds the DevX items to relevant structs.\n\nSigned-off-by: Dekel Peled <dekelp@mellanox.com>\nAcked-by: Matan Azrad <matan@mellanox.com>\n---\n drivers/net/mlx5/mlx5.c      |  2 +-\n drivers/net/mlx5/mlx5.h      |  4 +--\n drivers/net/mlx5/mlx5_rxq.c  | 64 ++++++++++++++++++++++----------------------\n drivers/net/mlx5/mlx5_rxtx.h | 20 ++++++++++----\n 4 files changed, 50 insertions(+), 40 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c\nindex 7d267a6..23ee887 100644\n--- a/drivers/net/mlx5/mlx5.c\n+++ b/drivers/net/mlx5/mlx5.c\n@@ -819,7 +819,7 @@ struct mlx5_dev_spawn_data {\n \tif (ret)\n \t\tDRV_LOG(WARNING, \"port %u some hash Rx queue still remain\",\n \t\t\tdev->data->port_id);\n-\tret = mlx5_ind_table_ibv_verify(dev);\n+\tret = mlx5_ind_table_obj_verify(dev);\n \tif (ret)\n \t\tDRV_LOG(WARNING, \"port %u some indirection table still remain\",\n \t\t\tdev->data->port_id);\ndiff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex fcbaaae..955e28f 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -616,8 +616,8 @@ struct mlx5_priv {\n \tLIST_HEAD(hrxq, mlx5_hrxq) hrxqs; /* Verbs Hash Rx queues. */\n \tLIST_HEAD(txq, mlx5_txq_ctrl) txqsctrl; /* DPDK Tx queues. */\n \tLIST_HEAD(txqibv, mlx5_txq_ibv) txqsibv; /* Verbs Tx queues. */\n-\t/* Verbs Indirection tables. */\n-\tLIST_HEAD(ind_tables, mlx5_ind_table_ibv) ind_tbls;\n+\t/* Indirection tables. */\n+\tLIST_HEAD(ind_tables, mlx5_ind_table_obj) ind_tbls;\n \t/* Pointer to next element. */\n \trte_atomic32_t refcnt; /**< Reference counter. */\n \tstruct ibv_flow_action *verbs_action;\ndiff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex 20a4695..507a1ab 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -1576,14 +1576,14 @@ struct mlx5_rxq_ctrl *\n  *   Number of queues in the array.\n  *\n  * @return\n- *   The Verbs object initialised, NULL otherwise and rte_errno is set.\n+ *   The Verbs/DevX object initialised, NULL otherwise and rte_errno is set.\n  */\n-static struct mlx5_ind_table_ibv *\n-mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues,\n+static struct mlx5_ind_table_obj *\n+mlx5_ind_table_obj_new(struct rte_eth_dev *dev, const uint16_t *queues,\n \t\t       uint32_t queues_n)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \tconst unsigned int wq_n = rte_is_power_of_2(queues_n) ?\n \t\tlog2above(queues_n) :\n \t\tlog2above(priv->config.ind_table_max_size);\n@@ -1642,12 +1642,12 @@ struct mlx5_rxq_ctrl *\n  * @return\n  *   An indirection table if found.\n  */\n-static struct mlx5_ind_table_ibv *\n-mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues,\n+static struct mlx5_ind_table_obj *\n+mlx5_ind_table_obj_get(struct rte_eth_dev *dev, const uint16_t *queues,\n \t\t       uint32_t queues_n)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \n \tLIST_FOREACH(ind_tbl, &priv->ind_tbls, next) {\n \t\tif ((ind_tbl->queues_n == queues_n) &&\n@@ -1678,8 +1678,8 @@ struct mlx5_rxq_ctrl *\n  *   1 while a reference on it exists, 0 when freed.\n  */\n static int\n-mlx5_ind_table_ibv_release(struct rte_eth_dev *dev,\n-\t\t\t   struct mlx5_ind_table_ibv *ind_tbl)\n+mlx5_ind_table_obj_release(struct rte_eth_dev *dev,\n+\t\t\t   struct mlx5_ind_table_obj *ind_tbl)\n {\n \tunsigned int i;\n \n@@ -1706,15 +1706,15 @@ struct mlx5_rxq_ctrl *\n  *   The number of object not released.\n  */\n int\n-mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev)\n+mlx5_ind_table_obj_verify(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \tint ret = 0;\n \n \tLIST_FOREACH(ind_tbl, &priv->ind_tbls, next) {\n \t\tDRV_LOG(DEBUG,\n-\t\t\t\"port %u Verbs indirection table %p still referenced\",\n+\t\t\t\"port %u indirection table obj %p still referenced\",\n \t\t\tdev->data->port_id, (void *)ind_tbl);\n \t\t++ret;\n \t}\n@@ -1752,7 +1752,7 @@ struct mlx5_hrxq *\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \tstruct mlx5_hrxq *hrxq;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \tstruct ibv_qp *qp;\n #ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT\n \tstruct mlx5dv_qp_init_attr qp_init_attr;\n@@ -1760,9 +1760,9 @@ struct mlx5_hrxq *\n \tint err;\n \n \tqueues_n = hash_fields ? queues_n : 1;\n-\tind_tbl = mlx5_ind_table_ibv_get(dev, queues, queues_n);\n+\tind_tbl = mlx5_ind_table_obj_get(dev, queues, queues_n);\n \tif (!ind_tbl)\n-\t\tind_tbl = mlx5_ind_table_ibv_new(dev, queues, queues_n);\n+\t\tind_tbl = mlx5_ind_table_obj_new(dev, queues, queues_n);\n \tif (!ind_tbl) {\n \t\trte_errno = ENOMEM;\n \t\treturn NULL;\n@@ -1844,7 +1844,7 @@ struct mlx5_hrxq *\n \treturn hrxq;\n error:\n \terr = rte_errno; /* Save rte_errno before cleanup. */\n-\tmlx5_ind_table_ibv_release(dev, ind_tbl);\n+\tmlx5_ind_table_obj_release(dev, ind_tbl);\n \tif (qp)\n \t\tclaim_zero(mlx5_glue->destroy_qp(qp));\n \trte_errno = err; /* Restore rte_errno. */\n@@ -1878,7 +1878,7 @@ struct mlx5_hrxq *\n \n \tqueues_n = hash_fields ? queues_n : 1;\n \tLIST_FOREACH(hrxq, &priv->hrxqs, next) {\n-\t\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\t\tstruct mlx5_ind_table_obj *ind_tbl;\n \n \t\tif (hrxq->rss_key_len != rss_key_len)\n \t\t\tcontinue;\n@@ -1886,11 +1886,11 @@ struct mlx5_hrxq *\n \t\t\tcontinue;\n \t\tif (hrxq->hash_fields != hash_fields)\n \t\t\tcontinue;\n-\t\tind_tbl = mlx5_ind_table_ibv_get(dev, queues, queues_n);\n+\t\tind_tbl = mlx5_ind_table_obj_get(dev, queues, queues_n);\n \t\tif (!ind_tbl)\n \t\t\tcontinue;\n \t\tif (ind_tbl != hrxq->ind_table) {\n-\t\t\tmlx5_ind_table_ibv_release(dev, ind_tbl);\n+\t\t\tmlx5_ind_table_obj_release(dev, ind_tbl);\n \t\t\tcontinue;\n \t\t}\n \t\trte_atomic32_inc(&hrxq->refcnt);\n@@ -1918,12 +1918,12 @@ struct mlx5_hrxq *\n \t\tmlx5_glue->destroy_flow_action(hrxq->action);\n #endif\n \t\tclaim_zero(mlx5_glue->destroy_qp(hrxq->qp));\n-\t\tmlx5_ind_table_ibv_release(dev, hrxq->ind_table);\n+\t\tmlx5_ind_table_obj_release(dev, hrxq->ind_table);\n \t\tLIST_REMOVE(hrxq, next);\n \t\trte_free(hrxq);\n \t\treturn 0;\n \t}\n-\tclaim_nonzero(mlx5_ind_table_ibv_release(dev, hrxq->ind_table));\n+\tclaim_nonzero(mlx5_ind_table_obj_release(dev, hrxq->ind_table));\n \treturn 1;\n }\n \n@@ -2042,15 +2042,15 @@ struct mlx5_hrxq *\n  *   Pointer to Ethernet device.\n  *\n  * @return\n- *   The Verbs object initialised, NULL otherwise and rte_errno is set.\n+ *   The Verbs/DevX object initialised, NULL otherwise and rte_errno is set.\n  */\n-static struct mlx5_ind_table_ibv *\n-mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev)\n+static struct mlx5_ind_table_obj *\n+mlx5_ind_table_obj_drop_new(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \tstruct mlx5_rxq_obj *rxq;\n-\tstruct mlx5_ind_table_ibv tmpl;\n+\tstruct mlx5_ind_table_obj tmpl;\n \n \trxq = mlx5_rxq_obj_drop_new(dev);\n \tif (!rxq)\n@@ -2088,10 +2088,10 @@ struct mlx5_hrxq *\n  *   Pointer to Ethernet device.\n  */\n static void\n-mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev)\n+mlx5_ind_table_obj_drop_release(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl = priv->drop_queue.hrxq->ind_table;\n+\tstruct mlx5_ind_table_obj *ind_tbl = priv->drop_queue.hrxq->ind_table;\n \n \tclaim_zero(mlx5_glue->destroy_rwq_ind_table(ind_tbl->ind_table));\n \tmlx5_rxq_obj_drop_release(dev);\n@@ -2112,7 +2112,7 @@ struct mlx5_hrxq *\n mlx5_hrxq_drop_new(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_ind_table_ibv *ind_tbl;\n+\tstruct mlx5_ind_table_obj *ind_tbl;\n \tstruct ibv_qp *qp;\n \tstruct mlx5_hrxq *hrxq;\n \n@@ -2120,7 +2120,7 @@ struct mlx5_hrxq *\n \t\trte_atomic32_inc(&priv->drop_queue.hrxq->refcnt);\n \t\treturn priv->drop_queue.hrxq;\n \t}\n-\tind_tbl = mlx5_ind_table_ibv_drop_new(dev);\n+\tind_tbl = mlx5_ind_table_obj_drop_new(dev);\n \tif (!ind_tbl)\n \t\treturn NULL;\n \tqp = mlx5_glue->create_qp_ex(priv->sh->ctx,\n@@ -2168,7 +2168,7 @@ struct mlx5_hrxq *\n \treturn hrxq;\n error:\n \tif (ind_tbl)\n-\t\tmlx5_ind_table_ibv_drop_release(dev);\n+\t\tmlx5_ind_table_obj_drop_release(dev);\n \treturn NULL;\n }\n \n@@ -2189,7 +2189,7 @@ struct mlx5_hrxq *\n \t\tmlx5_glue->destroy_flow_action(hrxq->action);\n #endif\n \t\tclaim_zero(mlx5_glue->destroy_qp(hrxq->qp));\n-\t\tmlx5_ind_table_ibv_drop_release(dev);\n+\t\tmlx5_ind_table_obj_drop_release(dev);\n \t\trte_free(hrxq);\n \t\tpriv->drop_queue.hrxq = NULL;\n \t}\ndiff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h\nindex eb20a07..0e7b428 100644\n--- a/drivers/net/mlx5/mlx5_rxtx.h\n+++ b/drivers/net/mlx5/mlx5_rxtx.h\n@@ -176,11 +176,21 @@ struct mlx5_rxq_ctrl {\n \tuint16_t dump_file_n; /* Number of dump files. */\n };\n \n+enum mlx5_ind_tbl_type {\n+\tMLX5_IND_TBL_TYPE_IBV,\n+\tMLX5_IND_TBL_TYPE_DEVX,\n+};\n+\n /* Indirection table. */\n-struct mlx5_ind_table_ibv {\n-\tLIST_ENTRY(mlx5_ind_table_ibv) next; /* Pointer to the next element. */\n+struct mlx5_ind_table_obj {\n+\tLIST_ENTRY(mlx5_ind_table_obj) next; /* Pointer to the next element. */\n \trte_atomic32_t refcnt; /* Reference counter. */\n-\tstruct ibv_rwq_ind_table *ind_table; /**< Indirection table. */\n+\tenum mlx5_ind_tbl_type type;\n+\tRTE_STD_C11\n+\tunion {\n+\t\tstruct ibv_rwq_ind_table *ind_table; /**< Indirection table. */\n+\t\tstruct mlx5_devx_obj *rqt; /* DevX RQT object. */\n+\t};\n \tuint32_t queues_n; /**< Number of queues in the list. */\n \tuint16_t queues[]; /**< Queue list. */\n };\n@@ -189,7 +199,7 @@ struct mlx5_ind_table_ibv {\n struct mlx5_hrxq {\n \tLIST_ENTRY(mlx5_hrxq) next; /* Pointer to the next element. */\n \trte_atomic32_t refcnt; /* Reference counter. */\n-\tstruct mlx5_ind_table_ibv *ind_table; /* Indirection table. */\n+\tstruct mlx5_ind_table_obj *ind_table; /* Indirection table. */\n \tstruct ibv_qp *qp; /* Verbs queue pair. */\n #ifdef HAVE_IBV_FLOW_DV_SUPPORT\n \tvoid *action; /* DV QP action pointer. */\n@@ -320,7 +330,7 @@ struct mlx5_rxq_ctrl *mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx,\n int mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx);\n int mlx5_rxq_verify(struct rte_eth_dev *dev);\n int rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl);\n-int mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev);\n+int mlx5_ind_table_obj_verify(struct rte_eth_dev *dev);\n struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev,\n \t\t\t\tconst uint8_t *rss_key, uint32_t rss_key_len,\n \t\t\t\tuint64_t hash_fields,\n",
    "prefixes": [
        "15/28"
    ]
}