From: Leon Romanovsky
The cross-channel feature allows to execute WQEs that involve
synchronization of I/O operations' on different QPs.
These QPs should be configured to work as a "sync master queue" or
“sync slave queues”.
The QP property flags to indicate if queues are slave or master:
* IB_QP_CREATE_MANAGED_SEND indicates that posted send work requests
will not be executed immediately and requires enabling.
* IB_QP_CREATE_MANAGED_RECV indicates that posted receive work
requests will not be executed immediately and requires enabling.
* IB_QP_CREATE_CROSS_CHANNEL declares the QP to work in cross-channel
mode. If IB_QP_CREATE_MANAGED_SEND and IB_QP_CREATE_MANAGED_RECV are
not provided, this QP will be sync master queue, else it will be sync
slave.
Signed-off-by: Leon Romanovsky
---
include/infiniband/verbs.h | 3 +++
src/cmd.c | 5 -
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h
index d8069d52ae13..2b9b50c87f45 100644
--- a/include/infiniband/verbs.h
+++ b/include/infiniband/verbs.h
@@ -769,6 +769,9 @@ enum ibv_qp_init_attr_mask {
enum ibv_qp_create_flags {
IBV_QP_CREATE_BLOCK_SELF_MCAST_LB = 1 << 1,
+ IBV_QP_CREATE_CROSS_CHANNEL = 1 << 2,
+ IBV_QP_CREATE_MANAGED_SEND = 1 << 3,
+ IBV_QP_CREATE_MANAGED_RECV = 1 << 4
};
struct ibv_qp_init_attr_ex {
diff --git a/src/cmd.c b/src/cmd.c
index 675777a8ee5a..ae33491befb4 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -815,7 +815,10 @@ static void create_qp_handle_resp_common(struct
ibv_context *context,
}
enum {
- CREATE_QP_EX2_SUP_CREATE_FLAGS = IBV_QP_CREATE_BLOCK_SELF_MCAST_LB,
+ CREATE_QP_EX2_SUP_CREATE_FLAGS = IBV_QP_CREATE_BLOCK_SELF_MCAST_LB |
+ IBV_QP_CREATE_CROSS_CHANNEL |
+ IBV_QP_CREATE_MANAGED_SEND |
+ IBV_QP_CREATE_MANAGED_RECV
};
int ibv_cmd_create_qp_ex2(struct ibv_context *context,
--
1.7.12.4
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html