From: Knut Omang <knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
To: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Mukesh Kacker
<mukesh.kacker-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>,
Knut Omang <knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH libibverbs 1/3] Add new call ibv_cmd_create_ah_ex which supports extra parameters
Date: Thu, 1 Sep 2016 08:59:51 +0200 [thread overview]
Message-ID: <1472713193-22397-2-git-send-email-knut.omang@oracle.com> (raw)
In-Reply-To: <1472713193-22397-1-git-send-email-knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
The original call ibv_cmd_create_ah does not allow vendor specific request or
response parameters to be defined and passed through to kernel space.
To keep backward compatibility, introduce a new extended call which accepts
cmd and resp parameters similar to other parts of the API.
Reimplement the old call to just use the new extended call.
Signed-off-by: Knut Omang <knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Reviewed-by: Mukesh Kacker <mukesh.kacker-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
---
include/infiniband/driver.h | 4 ++++
src/cmd.c | 50 +++++++++++++++++++++++++--------------------
src/libibverbs.map | 1 +
3 files changed, 33 insertions(+), 22 deletions(-)
diff --git a/include/infiniband/driver.h b/include/infiniband/driver.h
index 65fa44f..c46c55f 100644
--- a/include/infiniband/driver.h
+++ b/include/infiniband/driver.h
@@ -229,6 +229,10 @@ int ibv_cmd_post_srq_recv(struct ibv_srq *srq, struct ibv_recv_wr *wr,
struct ibv_recv_wr **bad_wr);
int ibv_cmd_create_ah(struct ibv_pd *pd, struct ibv_ah *ah,
struct ibv_ah_attr *attr);
+int ibv_cmd_create_ah_ex(struct ibv_pd *pd, struct ibv_ah *ah,
+ struct ibv_ah_attr *attr,
+ struct ibv_create_ah *cmd, size_t cmd_size,
+ struct ibv_create_ah_resp *resp, size_t resp_size);
int ibv_cmd_destroy_ah(struct ibv_ah *ah);
int ibv_cmd_attach_mcast(struct ibv_qp *qp, const union ibv_gid *gid, uint16_t lid);
int ibv_cmd_detach_mcast(struct ibv_qp *qp, const union ibv_gid *gid, uint16_t lid);
diff --git a/src/cmd.c b/src/cmd.c
index cb9e34c..12d8640 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -1463,38 +1463,44 @@ int ibv_cmd_post_srq_recv(struct ibv_srq *srq, struct ibv_recv_wr *wr,
return ret;
}
-int ibv_cmd_create_ah(struct ibv_pd *pd, struct ibv_ah *ah,
- struct ibv_ah_attr *attr)
+int ibv_cmd_create_ah_ex(struct ibv_pd *pd, struct ibv_ah *ah, struct ibv_ah_attr *attr,
+ struct ibv_create_ah *cmd, size_t cmd_size,
+ struct ibv_create_ah_resp *resp, size_t resp_size)
{
- struct ibv_create_ah cmd;
- struct ibv_create_ah_resp resp;
-
- IBV_INIT_CMD_RESP(&cmd, sizeof cmd, CREATE_AH, &resp, sizeof resp);
- cmd.user_handle = (uintptr_t) ah;
- cmd.pd_handle = pd->handle;
- cmd.attr.dlid = attr->dlid;
- cmd.attr.sl = attr->sl;
- cmd.attr.src_path_bits = attr->src_path_bits;
- cmd.attr.static_rate = attr->static_rate;
- cmd.attr.is_global = attr->is_global;
- cmd.attr.port_num = attr->port_num;
- cmd.attr.grh.flow_label = attr->grh.flow_label;
- cmd.attr.grh.sgid_index = attr->grh.sgid_index;
- cmd.attr.grh.hop_limit = attr->grh.hop_limit;
- cmd.attr.grh.traffic_class = attr->grh.traffic_class;
- memcpy(cmd.attr.grh.dgid, attr->grh.dgid.raw, 16);
+ IBV_INIT_CMD_RESP(cmd, cmd_size, CREATE_AH, resp, resp_size);
+ cmd->user_handle = (uintptr_t) ah;
+ cmd->pd_handle = pd->handle;
+ cmd->attr.dlid = attr->dlid;
+ cmd->attr.sl = attr->sl;
+ cmd->attr.src_path_bits = attr->src_path_bits;
+ cmd->attr.static_rate = attr->static_rate;
+ cmd->attr.is_global = attr->is_global;
+ cmd->attr.port_num = attr->port_num;
+ cmd->attr.grh.flow_label = attr->grh.flow_label;
+ cmd->attr.grh.sgid_index = attr->grh.sgid_index;
+ cmd->attr.grh.hop_limit = attr->grh.hop_limit;
+ cmd->attr.grh.traffic_class = attr->grh.traffic_class;
+ memcpy(cmd->attr.grh.dgid, attr->grh.dgid.raw, 16);
- if (write(pd->context->cmd_fd, &cmd, sizeof cmd) != sizeof cmd)
+ if (write(pd->context->cmd_fd, cmd, cmd_size) != cmd_size)
return errno;
- (void) VALGRIND_MAKE_MEM_DEFINED(&resp, sizeof resp);
+ (void) VALGRIND_MAKE_MEM_DEFINED(resp, sizeof *resp);
- ah->handle = resp.handle;
+ ah->handle = resp->handle;
ah->context = pd->context;
return 0;
}
+int ibv_cmd_create_ah(struct ibv_pd *pd, struct ibv_ah *ah,
+ struct ibv_ah_attr *attr)
+{
+ struct ibv_create_ah cmd;
+ struct ibv_create_ah_resp resp;
+ return ibv_cmd_create_ah_ex(pd, ah, attr, &cmd, sizeof(cmd), &resp, sizeof(resp));
+}
+
int ibv_cmd_destroy_ah(struct ibv_ah *ah)
{
struct ibv_destroy_ah cmd;
diff --git a/src/libibverbs.map b/src/libibverbs.map
index 5134bd9..483df72 100644
--- a/src/libibverbs.map
+++ b/src/libibverbs.map
@@ -64,6 +64,7 @@ IBVERBS_1.0 {
ibv_cmd_post_recv;
ibv_cmd_post_srq_recv;
ibv_cmd_create_ah;
+ ibv_cmd_create_ah_ex;
ibv_cmd_destroy_ah;
ibv_cmd_attach_mcast;
ibv_cmd_detach_mcast;
--
2.5.5
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-09-01 6:59 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-01 6:59 [PATCH libibverbs 0/3] SIF related libibverbs patches Knut Omang
[not found] ` <1472713193-22397-1-git-send-email-knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-01 6:59 ` Knut Omang [this message]
[not found] ` <1472713193-22397-2-git-send-email-knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-01 8:34 ` [PATCH libibverbs 1/3] Add new call ibv_cmd_create_ah_ex which supports extra parameters Yishai Hadas
[not found] ` <09e67035-0c8a-9b44-fa84-08413dd6ac46-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-01 9:53 ` Knut Omang
2016-09-05 11:53 ` Knut Omang
[not found] ` <1473076411.3975.87.camel-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-05 14:05 ` Yishai Hadas
[not found] ` <50c8e0ab-f7f4-85b1-09f7-a930ad445ee0-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-05 14:55 ` Knut Omang
2016-09-01 16:49 ` Jason Gunthorpe
[not found] ` <20160901164939.GD6479-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 17:22 ` Knut Omang
[not found] ` <1472750558.9410.230.camel-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-01 17:36 ` Jason Gunthorpe
2016-09-01 18:05 ` Jason Gunthorpe
[not found] ` <20160901180512.GB20098-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 18:23 ` Knut Omang
[not found] ` <1472754220.9410.236.camel-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-02 2:06 ` Jason Gunthorpe
[not found] ` <20160902020642.GA30057-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-02 7:49 ` Knut Omang
[not found] ` <1472802582.3975.16.camel-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-03 7:30 ` Knut Omang
[not found] ` <1472887840.9410.364.camel-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-05 2:38 ` Jason Gunthorpe
[not found] ` <20160905023817.GD21542-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-05 4:56 ` Knut Omang
2016-09-01 6:59 ` [PATCH libibverbs 2/3] Add padding to get proper end alignment of ibv_reg_mr_resp Knut Omang
[not found] ` <1472713193-22397-3-git-send-email-knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-01 8:56 ` Yishai Hadas
[not found] ` <6ce4a2f9-64ee-29af-72e8-1c8844436a20-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-01 9:07 ` Knut Omang
2016-09-01 16:42 ` Jason Gunthorpe
[not found] ` <20160901164216.GB6479-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-09-01 17:17 ` Knut Omang
2016-09-01 6:59 ` [PATCH libibverbs 3/3] Provide remote XRC SRQ number in kernel post_send Knut Omang
[not found] ` <1472713193-22397-4-git-send-email-knut.omang-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-09-01 9:00 ` Yishai Hadas
[not found] ` <67f23338-1a5c-5080-d346-8441afb47670-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2016-09-05 15:50 ` Knut Omang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1472713193-22397-2-git-send-email-knut.omang@oracle.com \
--to=knut.omang-qhclzuegtsvqt0dzr+alfa@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mukesh.kacker-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).