From: Majd Dibbiny <[email protected]> Send with invalidate can be used to invalidate a remote memory region or memory window. The complete details are specified in the InfiniBand Architecture Specifications, section 9.4.1.1.
According to the specs, the following objects can be invalidated: 1. Memory Window type 2 2. Physical MR 3. Fast register MR The invalidation is done by posting a send work request, where the opcode is IBV_WR_SEND_WITH_INV and the immediate data contain's the R_key. Upon success, the responder's work completion will contain the invalidated R_key in it's immediate data. Signed-off-by: Majd Dibbiny <[email protected]> --- include/infiniband/verbs.h | 11 ++++++++--- man/ibv_post_send.3 | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h index dcee050..b9a930f 100644 --- a/include/infiniband/verbs.h +++ b/include/infiniband/verbs.h @@ -294,7 +294,8 @@ enum ibv_wc_opcode { enum ibv_wc_flags { IBV_WC_GRH = 1 << 0, - IBV_WC_WITH_IMM = 1 << 1 + IBV_WC_WITH_IMM = 1 << 1, + IBV_WC_WITH_INV = 1 << 2 }; struct ibv_wc { @@ -303,7 +304,10 @@ struct ibv_wc { enum ibv_wc_opcode opcode; uint32_t vendor_err; uint32_t byte_len; - uint32_t imm_data; /* in network byte order */ + /* When (wc_flags & IBV_WC_WITH_IMM): Immediate data (network byte order). + * When (wc_flags & IBV_WC_WITH_INV): Stores the invalidated R_Key. + */ + uint32_t imm_data; uint32_t qp_num; uint32_t src_qp; int wc_flags; @@ -636,7 +640,8 @@ enum ibv_wr_opcode { IBV_WR_ATOMIC_CMP_AND_SWP, IBV_WR_ATOMIC_FETCH_AND_ADD, IBV_WR_LOCAL_INV, - IBV_WR_BIND_MW + IBV_WR_BIND_MW, + IBV_WR_SEND_WITH_INV }; enum ibv_send_flags { diff --git a/man/ibv_post_send.3 b/man/ibv_post_send.3 index 0d599ad..891cf4a 100644 --- a/man/ibv_post_send.3 +++ b/man/ibv_post_send.3 @@ -115,6 +115,7 @@ IBV_WR_ATOMIC_CMP_AND_SWP | | | X IBV_WR_ATOMIC_FETCH_AND_ADD | | | X IBV_WR_LOCAL_INV | | X | X IBV_WR_BIND_MW | | X | X +IBV_WR_SEND_WITH_INV | | X | X .fi .PP The attribute send_flags describes the properties of the \s-1WR\s0. It is either 0 or the bitwise \s-1OR\s0 of one or more of the following flags: -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
