get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 51733,
    "url": "http://patches.dpdk.org/api/patches/51733/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1553614522-12151-10-git-send-email-viacheslavo@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": "<1553614522-12151-10-git-send-email-viacheslavo@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1553614522-12151-10-git-send-email-viacheslavo@mellanox.com",
    "date": "2019-03-26T15:35:18",
    "name": "[v3,09/13] net/mlx5: switch to the shared IB device context",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "87df7d72c7fda36e12031d8d8bb66c04b9c34fbc",
    "submitter": {
        "id": 1102,
        "url": "http://patches.dpdk.org/api/people/1102/?format=api",
        "name": "Slava Ovsiienko",
        "email": "viacheslavo@mellanox.com"
    },
    "delegate": {
        "id": 6624,
        "url": "http://patches.dpdk.org/api/users/6624/?format=api",
        "username": "shahafs",
        "first_name": "Shahaf",
        "last_name": "Shuler",
        "email": "shahafs@mellanox.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1553614522-12151-10-git-send-email-viacheslavo@mellanox.com/mbox/",
    "series": [
        {
            "id": 3928,
            "url": "http://patches.dpdk.org/api/series/3928/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=3928",
            "date": "2019-03-26T15:35:11",
            "name": "net/mlx5: add support for multiport IB devices",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/3928/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/51733/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/51733/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 1BA791B1FC;\n\tTue, 26 Mar 2019 16:36:23 +0100 (CET)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id 733911B137\n\tfor <dev@dpdk.org>; Tue, 26 Mar 2019 16:36:05 +0100 (CET)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n\tviacheslavo@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 26 Mar 2019 17:36:02 +0200",
            "from pegasus12.mtr.labs.mlnx. (pegasus12.mtr.labs.mlnx\n\t[10.210.17.40])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x2QFa1wW019637;\n\tTue, 26 Mar 2019 17:36:02 +0200"
        ],
        "From": "Viacheslav Ovsiienko <viacheslavo@mellanox.com>",
        "To": "dev@dpdk.org",
        "Cc": "shahafs@mellanox.com",
        "Date": "Tue, 26 Mar 2019 15:35:18 +0000",
        "Message-Id": "<1553614522-12151-10-git-send-email-viacheslavo@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1553614522-12151-1-git-send-email-viacheslavo@mellanox.com>",
        "References": "<1553533414-9911-1-git-send-email-viacheslavo@mellanox.com>\n\t<1553614522-12151-1-git-send-email-viacheslavo@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v3 09/13] net/mlx5: switch to the shared IB\n\tdevice context",
        "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": "The code is updated to use the shared IB device context and\ndevice handles. The IB device context is shared between\nreprentors created over the single multiport IB device. All\nVerbs and DevX objects will be created whithin this shared context.\n\nSigned-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>\nAcked-by: Shahaf Shuler <shahafs@mellanox.com>\n---\n drivers/net/mlx5/mlx5.c            |  3 +--\n drivers/net/mlx5/mlx5.h            |  1 -\n drivers/net/mlx5/mlx5_ethdev.c     | 13 +++++++------\n drivers/net/mlx5/mlx5_flow_dv.c    |  9 +++++----\n drivers/net/mlx5/mlx5_flow_verbs.c |  6 ++++--\n drivers/net/mlx5/mlx5_rxq.c        | 23 ++++++++++++-----------\n drivers/net/mlx5/mlx5_socket.c     |  4 ++--\n drivers/net/mlx5/mlx5_trigger.c    |  2 +-\n drivers/net/mlx5/mlx5_txq.c        |  4 ++--\n 9 files changed, 34 insertions(+), 31 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c\nindex d7580d5..8f35546 100644\n--- a/drivers/net/mlx5/mlx5.c\n+++ b/drivers/net/mlx5/mlx5.c\n@@ -402,7 +402,7 @@ struct mlx5_dev_spawn_data {\n \n \tDRV_LOG(DEBUG, \"port %u closing device \\\"%s\\\"\",\n \t\tdev->data->port_id,\n-\t\t((priv->ctx != NULL) ? priv->ctx->device->name : \"\"));\n+\t\t((priv->sh->ctx != NULL) ? priv->sh->ctx->device->name : \"\"));\n \t/* In case mlx5_dev_stop() has not been called. */\n \tmlx5_dev_interrupt_handler_uninstall(dev);\n \tmlx5_traffic_disable(dev);\n@@ -1105,7 +1105,6 @@ struct mlx5_dev_spawn_data {\n \t\tgoto error;\n \t}\n \tpriv->sh = sh;\n-\tpriv->ctx = sh->ctx;\n \tpriv->ibv_port = spawn->ibv_port;\n \tpriv->mtu = ETHER_MTU;\n #ifndef RTE_ARCH_64\ndiff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h\nindex 3939a5e..573629a 100644\n--- a/drivers/net/mlx5/mlx5.h\n+++ b/drivers/net/mlx5/mlx5.h\n@@ -232,7 +232,6 @@ struct mlx5_priv {\n \tstruct rte_eth_dev_data *dev_data;  /* Pointer to device data. */\n \tstruct mlx5_ibv_shared *sh; /* Shared IB device context. */\n \tuint32_t ibv_port; /* IB device port number. */\n-\tstruct ibv_context *ctx; /* Verbs context. */\n \tstruct ether_addr mac[MLX5_MAX_MAC_ADDRESSES]; /* MAC addresses. */\n \tBITFIELD_DECLARE(mac_own, uint64_t, MLX5_MAX_MAC_ADDRESSES);\n \t/* Bit-field of MAC addresses owned by the PMD. */\ndiff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c\nindex 7003c32..2ad3231 100644\n--- a/drivers/net/mlx5/mlx5_ethdev.c\n+++ b/drivers/net/mlx5/mlx5_ethdev.c\n@@ -1055,7 +1055,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)\n \t}\n \t/* Read all message and acknowledge them. */\n \tfor (;;) {\n-\t\tif (mlx5_glue->get_async_event(priv->ctx, &event))\n+\t\tif (mlx5_glue->get_async_event(priv->sh->ctx, &event))\n \t\t\tbreak;\n \t\tif ((event.event_type == IBV_EVENT_PORT_ACTIVE ||\n \t\t\tevent.event_type == IBV_EVENT_PORT_ERR) &&\n@@ -1142,12 +1142,13 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)\n mlx5_dev_interrupt_handler_install(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tstruct ibv_context *ctx = priv->sh->ctx;\n \tint ret;\n \tint flags;\n \n-\tassert(priv->ctx->async_fd > 0);\n-\tflags = fcntl(priv->ctx->async_fd, F_GETFL);\n-\tret = fcntl(priv->ctx->async_fd, F_SETFL, flags | O_NONBLOCK);\n+\tassert(ctx->async_fd > 0);\n+\tflags = fcntl(ctx->async_fd, F_GETFL);\n+\tret = fcntl(ctx->async_fd, F_SETFL, flags | O_NONBLOCK);\n \tif (ret) {\n \t\tDRV_LOG(INFO,\n \t\t\t\"port %u failed to change file descriptor async event\"\n@@ -1158,7 +1159,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)\n \t}\n \tif (dev->data->dev_conf.intr_conf.lsc ||\n \t    dev->data->dev_conf.intr_conf.rmv) {\n-\t\tpriv->intr_handle.fd = priv->ctx->async_fd;\n+\t\tpriv->intr_handle.fd = ctx->async_fd;\n \t\tpriv->intr_handle.type = RTE_INTR_HANDLE_EXT;\n \t\trte_intr_callback_register(&priv->intr_handle,\n \t\t\t\t\t   mlx5_dev_interrupt_handler, dev);\n@@ -1303,7 +1304,7 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev, char *fw_ver, size_t fw_size)\n \tstruct ibv_device_attr device_attr;\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n \n-\tif (mlx5_glue->query_device(priv->ctx, &device_attr) == EIO)\n+\tif (mlx5_glue->query_device(priv->sh->ctx, &device_attr) == EIO)\n \t\treturn 1;\n \treturn 0;\n }\ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex 44b36ee..b8943da 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -840,7 +840,7 @@ struct field_modify_info modify_tcp[] = {\n \t*cache_resource = *resource;\n \tcache_resource->verbs_action =\n \t\tmlx5_glue->dv_create_flow_action_packet_reformat\n-\t\t\t(priv->ctx, cache_resource->reformat_type,\n+\t\t\t(priv->sh->ctx, cache_resource->reformat_type,\n \t\t\t cache_resource->ft_type, ns, cache_resource->flags,\n \t\t\t cache_resource->size,\n \t\t\t (cache_resource->size ? cache_resource->buf : NULL));\n@@ -1569,7 +1569,8 @@ struct field_modify_info modify_tcp[] = {\n \t*cache_resource = *resource;\n \tcache_resource->verbs_action =\n \t\tmlx5_glue->dv_create_flow_action_modify_header\n-\t\t\t\t\t(priv->ctx, cache_resource->ft_type,\n+\t\t\t\t\t(priv->sh->ctx,\n+\t\t\t\t\t cache_resource->ft_type,\n \t\t\t\t\t ns, 0,\n \t\t\t\t\t cache_resource->actions_num *\n \t\t\t\t\t sizeof(cache_resource->actions[0]),\n@@ -1629,7 +1630,7 @@ struct field_modify_info modify_tcp[] = {\n \t\tret = -ENOMEM;\n \t\tgoto error_exit;\n \t}\n-\tret = mlx5_devx_cmd_flow_counter_alloc(priv->ctx, dcs);\n+\tret = mlx5_devx_cmd_flow_counter_alloc(priv->sh->ctx, dcs);\n \tif (ret)\n \t\tgoto error_exit;\n \tstruct mlx5_flow_counter tmpl = {\n@@ -2982,7 +2983,7 @@ struct field_modify_info modify_tcp[] = {\n \tif (matcher->egress)\n \t\tdv_attr.flags |= IBV_FLOW_ATTR_FLAGS_EGRESS;\n \tcache_matcher->matcher_object =\n-\t\tmlx5_glue->dv_create_flow_matcher(priv->ctx, &dv_attr,\n+\t\tmlx5_glue->dv_create_flow_matcher(priv->sh->ctx, &dv_attr,\n \t\t\t\t\t\t  tbl->obj);\n \tif (!cache_matcher->matcher_object) {\n \t\trte_free(cache_matcher);\ndiff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c\nindex 6c4f52f..9548d12 100644\n--- a/drivers/net/mlx5/mlx5_flow_verbs.c\n+++ b/drivers/net/mlx5/mlx5_flow_verbs.c\n@@ -56,10 +56,11 @@\n {\n #if defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42)\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tstruct ibv_context ctx = priv->sh->ctx;\n \tstruct ibv_counter_set_init_attr init = {\n \t\t\t .counter_set_id = counter->id};\n \n-\tcounter->cs = mlx5_glue->create_counter_set(priv->ctx, &init);\n+\tcounter->cs = mlx5_glue->create_counter_set(ctx, &init);\n \tif (!counter->cs) {\n \t\trte_errno = ENOTSUP;\n \t\treturn -ENOTSUP;\n@@ -67,12 +68,13 @@\n \treturn 0;\n #elif defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45)\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tstruct ibv_context *ctx = priv->sh->ctx;\n \tstruct ibv_counters_init_attr init = {0};\n \tstruct ibv_counter_attach_attr attach;\n \tint ret;\n \n \tmemset(&attach, 0, sizeof(attach));\n-\tcounter->cs = mlx5_glue->create_counters(priv->ctx, &init);\n+\tcounter->cs = mlx5_glue->create_counters(ctx, &init);\n \tif (!counter->cs) {\n \t\trte_errno = ENOTSUP;\n \t\treturn -ENOTSUP;\ndiff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c\nindex fd1c3a2..dcb97c2 100644\n--- a/drivers/net/mlx5/mlx5_rxq.c\n+++ b/drivers/net/mlx5/mlx5_rxq.c\n@@ -799,7 +799,7 @@ struct mlx5_rxq_ibv *\n \t}\n \ttmpl->rxq_ctrl = rxq_ctrl;\n \tif (rxq_ctrl->irq) {\n-\t\ttmpl->channel = mlx5_glue->create_comp_channel(priv->ctx);\n+\t\ttmpl->channel = mlx5_glue->create_comp_channel(priv->sh->ctx);\n \t\tif (!tmpl->channel) {\n \t\t\tDRV_LOG(ERR, \"port %u: comp channel creation failure\",\n \t\t\t\tdev->data->port_id);\n@@ -848,7 +848,7 @@ struct mlx5_rxq_ibv *\n \t}\n #endif\n \ttmpl->cq = mlx5_glue->cq_ex_to_cq\n-\t\t(mlx5_glue->dv_create_cq(priv->ctx, &attr.cq.ibv,\n+\t\t(mlx5_glue->dv_create_cq(priv->sh->ctx, &attr.cq.ibv,\n \t\t\t\t\t &attr.cq.mlx5));\n \tif (tmpl->cq == NULL) {\n \t\tDRV_LOG(ERR, \"port %u Rx queue %u CQ creation failure\",\n@@ -905,10 +905,10 @@ struct mlx5_rxq_ibv *\n \t\t\t.two_byte_shift_en = MLX5_MPRQ_TWO_BYTE_SHIFT,\n \t\t};\n \t}\n-\ttmpl->wq = mlx5_glue->dv_create_wq(priv->ctx, &attr.wq.ibv,\n+\ttmpl->wq = mlx5_glue->dv_create_wq(priv->sh->ctx, &attr.wq.ibv,\n \t\t\t\t\t   &attr.wq.mlx5);\n #else\n-\ttmpl->wq = mlx5_glue->create_wq(priv->ctx, &attr.wq.ibv);\n+\ttmpl->wq = mlx5_glue->create_wq(priv->sh->ctx, &attr.wq.ibv);\n #endif\n \tif (tmpl->wq == NULL) {\n \t\tDRV_LOG(ERR, \"port %u Rx queue %u WQ creation failure\",\n@@ -1643,7 +1643,7 @@ struct mlx5_ind_table_ibv *\n \tfor (j = 0; i != (unsigned int)(1 << wq_n); ++i, ++j)\n \t\twq[i] = wq[j];\n \tind_tbl->ind_table = mlx5_glue->create_rwq_ind_table\n-\t\t(priv->ctx,\n+\t\t(priv->sh->ctx,\n \t\t &(struct ibv_rwq_ind_table_init_attr){\n \t\t\t.log_ind_tbl_size = wq_n,\n \t\t\t.ind_tbl = wq,\n@@ -1817,7 +1817,7 @@ struct mlx5_hrxq *\n \t}\n #endif\n \tqp = mlx5_glue->dv_create_qp\n-\t\t(priv->ctx,\n+\t\t(priv->sh->ctx,\n \t\t &(struct ibv_qp_init_attr_ex){\n \t\t\t.qp_type = IBV_QPT_RAW_PACKET,\n \t\t\t.comp_mask =\n@@ -1836,7 +1836,7 @@ struct mlx5_hrxq *\n \t\t &qp_init_attr);\n #else\n \tqp = mlx5_glue->create_qp_ex\n-\t\t(priv->ctx,\n+\t\t(priv->sh->ctx,\n \t\t &(struct ibv_qp_init_attr_ex){\n \t\t\t.qp_type = IBV_QPT_RAW_PACKET,\n \t\t\t.comp_mask =\n@@ -1988,20 +1988,21 @@ struct mlx5_rxq_ibv *\n mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev)\n {\n \tstruct mlx5_priv *priv = dev->data->dev_private;\n+\tstruct ibv_context *ctx = priv->sh->ctx;\n \tstruct ibv_cq *cq;\n \tstruct ibv_wq *wq = NULL;\n \tstruct mlx5_rxq_ibv *rxq;\n \n \tif (priv->drop_queue.rxq)\n \t\treturn priv->drop_queue.rxq;\n-\tcq = mlx5_glue->create_cq(priv->ctx, 1, NULL, NULL, 0);\n+\tcq = mlx5_glue->create_cq(ctx, 1, NULL, NULL, 0);\n \tif (!cq) {\n \t\tDEBUG(\"port %u cannot allocate CQ for drop queue\",\n \t\t      dev->data->port_id);\n \t\trte_errno = errno;\n \t\tgoto error;\n \t}\n-\twq = mlx5_glue->create_wq(priv->ctx,\n+\twq = mlx5_glue->create_wq(ctx,\n \t\t &(struct ibv_wq_init_attr){\n \t\t\t.wq_type = IBV_WQT_RQ,\n \t\t\t.max_wr = 1,\n@@ -2078,7 +2079,7 @@ struct mlx5_ind_table_ibv *\n \tif (!rxq)\n \t\treturn NULL;\n \ttmpl.ind_table = mlx5_glue->create_rwq_ind_table\n-\t\t(priv->ctx,\n+\t\t(priv->sh->ctx,\n \t\t &(struct ibv_rwq_ind_table_init_attr){\n \t\t\t.log_ind_tbl_size = 0,\n \t\t\t.ind_tbl = &rxq->wq,\n@@ -2145,7 +2146,7 @@ struct mlx5_hrxq *\n \tind_tbl = mlx5_ind_table_ibv_drop_new(dev);\n \tif (!ind_tbl)\n \t\treturn NULL;\n-\tqp = mlx5_glue->create_qp_ex(priv->ctx,\n+\tqp = mlx5_glue->create_qp_ex(priv->sh->ctx,\n \t\t &(struct ibv_qp_init_attr_ex){\n \t\t\t.qp_type = IBV_QPT_RAW_PACKET,\n \t\t\t.comp_mask =\ndiff --git a/drivers/net/mlx5/mlx5_socket.c b/drivers/net/mlx5/mlx5_socket.c\nindex 41cac3c..8fa6430 100644\n--- a/drivers/net/mlx5/mlx5_socket.c\n+++ b/drivers/net/mlx5/mlx5_socket.c\n@@ -185,9 +185,9 @@\n \tassert(cmsg != NULL);\n \tcmsg->cmsg_level = SOL_SOCKET;\n \tcmsg->cmsg_type = SCM_RIGHTS;\n-\tcmsg->cmsg_len = CMSG_LEN(sizeof(priv->ctx->cmd_fd));\n+\tcmsg->cmsg_len = CMSG_LEN(sizeof(priv->sh->ctx->cmd_fd));\n \tfd = (int *)CMSG_DATA(cmsg);\n-\t*fd = priv->ctx->cmd_fd;\n+\t*fd = priv->sh->ctx->cmd_fd;\n \tret = sendmsg(conn_sock, &msg, 0);\n \tif (ret < 0)\n \t\tDRV_LOG(WARNING, \"port %u cannot send response\",\ndiff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c\nindex 2137bdc..d13a1a1 100644\n--- a/drivers/net/mlx5/mlx5_trigger.c\n+++ b/drivers/net/mlx5/mlx5_trigger.c\n@@ -58,7 +58,7 @@\n \t\t\tgoto error;\n \t\t}\n \t}\n-\tret = mlx5_tx_uar_remap(dev, priv->ctx->cmd_fd);\n+\tret = mlx5_tx_uar_remap(dev, priv->sh->ctx->cmd_fd);\n \tif (ret) {\n \t\t/* Adjust index for rollback. */\n \t\ti = priv->txqs_n - 1;\ndiff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c\nindex 10a3040..25305b6 100644\n--- a/drivers/net/mlx5/mlx5_txq.c\n+++ b/drivers/net/mlx5/mlx5_txq.c\n@@ -392,7 +392,7 @@ struct mlx5_txq_ibv *\n \t\t((desc / MLX5_TX_COMP_THRESH) - 1) : 1;\n \tif (is_empw_burst_func(tx_pkt_burst))\n \t\tcqe_n += MLX5_TX_COMP_THRESH_INLINE_DIV;\n-\ttmpl.cq = mlx5_glue->create_cq(priv->ctx, cqe_n, NULL, NULL, 0);\n+\ttmpl.cq = mlx5_glue->create_cq(priv->sh->ctx, cqe_n, NULL, NULL, 0);\n \tif (tmpl.cq == NULL) {\n \t\tDRV_LOG(ERR, \"port %u Tx queue %u CQ creation failure\",\n \t\t\tdev->data->port_id, idx);\n@@ -435,7 +435,7 @@ struct mlx5_txq_ibv *\n \t\tattr.init.max_tso_header = txq_ctrl->max_tso_header;\n \t\tattr.init.comp_mask |= IBV_QP_INIT_ATTR_MAX_TSO_HEADER;\n \t}\n-\ttmpl.qp = mlx5_glue->create_qp_ex(priv->ctx, &attr.init);\n+\ttmpl.qp = mlx5_glue->create_qp_ex(priv->sh->ctx, &attr.init);\n \tif (tmpl.qp == NULL) {\n \t\tDRV_LOG(ERR, \"port %u Tx queue %u QP creation failure\",\n \t\t\tdev->data->port_id, idx);\n",
    "prefixes": [
        "v3",
        "09/13"
    ]
}