[RFC PATCH rdma-next 10/10] RDMA/rxe: Add RD FLUSH service support

From: Li Zhijian
Date: Tue Dec 28 2021 - 03:02:44 EST


Although the SPEC said FLUSH is supported by RC/RD/XRC services, XRC has
not been supported by the rxe.

So XRC FLUSH will not be supported until rxe implements XRC service.

Signed-off-by: Li Zhijian <lizhijian@xxxxxxxxxxxxxx>
---
I have not setup a RD environment to test this protocol
---
drivers/infiniband/sw/rxe/rxe_opcode.c | 20 ++++++++++++++++++++
include/rdma/ib_pack.h | 1 +
2 files changed, 21 insertions(+)

diff --git a/drivers/infiniband/sw/rxe/rxe_opcode.c b/drivers/infiniband/sw/rxe/rxe_opcode.c
index d61c8b354af4..0d5f555f5ec5 100644
--- a/drivers/infiniband/sw/rxe/rxe_opcode.c
+++ b/drivers/infiniband/sw/rxe/rxe_opcode.c
@@ -919,6 +919,26 @@ struct rxe_opcode_info rxe_opcode[RXE_NUM_OPCODE] = {
+ RXE_RDETH_BYTES,
}
},
+ [IB_OPCODE_RD_RDMA_FLUSH] = {
+ .name = "IB_OPCODE_RD_RDMA_FLUSH",
+ .mask = RXE_RDETH_MASK | RXE_FETH_MASK | RXE_RETH_MASK
+ | RXE_FLUSH_MASK | RXE_START_MASK
+ | RXE_END_MASK | RXE_REQ_MASK,
+ .length = RXE_BTH_BYTES + RXE_FETH_BYTES + RXE_RETH_BYTES,
+ .offset = {
+ [RXE_BTH] = 0,
+ [RXE_RDETH] = RXE_BTH_BYTES,
+ [RXE_FETH] = RXE_BTH_BYTES
+ + RXE_RDETH_BYTES,
+ [RXE_RETH] = RXE_BTH_BYTES
+ + RXE_RDETH_BYTES
+ + RXE_FETH_BYTES,
+ [RXE_PAYLOAD] = RXE_BTH_BYTES
+ + RXE_RDETH_BYTES
+ + RXE_FETH_BYTES
+ + RXE_RETH_BYTES,
+ }
+ },

/* UD */
[IB_OPCODE_UD_SEND_ONLY] = {
diff --git a/include/rdma/ib_pack.h b/include/rdma/ib_pack.h
index d19edb502de6..40568a33ead8 100644
--- a/include/rdma/ib_pack.h
+++ b/include/rdma/ib_pack.h
@@ -151,6 +151,7 @@ enum {
IB_OPCODE(RD, ATOMIC_ACKNOWLEDGE),
IB_OPCODE(RD, COMPARE_SWAP),
IB_OPCODE(RD, FETCH_ADD),
+ IB_OPCODE(RD, RDMA_FLUSH),

/* UD */
IB_OPCODE(UD, SEND_ONLY),
--
2.31.1