This set of patches adds support to rdma_rxe for: alloc_mw (type 1 and 2) dealloc_mw bind_mw as a user API (type 1) bind_mw as a local send queue operationa (type 2) invalidate mw as a local send queue operation invalidate mw as a remote send operation memory access to bound MRs via MWs with VA or ZB MWs Changes in this version from the previous version: Dropped patches that have already been picked up in for-next rearranged the order to be more logical and avoid throw away code in stubs. This work is focused on MWs. There are some areas exposed in the existing driver that should be improved but that can be done later. Bob Pearson (7): ib_user_verbs.h: Added missing WR and WC opcodes rdma_rxe: Separated MEM into MR and MW objects. rdma_rxe: enabled MW objects rdma_rxe: Let pools support both keys and indices rdma_rxe: Added alloc_mw and dealloc_mw verbs rdma_rxe: added bind_mw and invalidate_mw verbs rdma_rxe: add memory access through MWs drivers/infiniband/sw/rxe/Makefile | 1 + drivers/infiniband/sw/rxe/rxe.c | 1 + drivers/infiniband/sw/rxe/rxe_comp.c | 5 +- drivers/infiniband/sw/rxe/rxe_loc.h | 43 ++- drivers/infiniband/sw/rxe/rxe_mr.c | 350 +++++++++++---------- drivers/infiniband/sw/rxe/rxe_mw.c | 414 +++++++++++++++++++++++++ drivers/infiniband/sw/rxe/rxe_opcode.c | 11 +- drivers/infiniband/sw/rxe/rxe_opcode.h | 1 - drivers/infiniband/sw/rxe/rxe_param.h | 10 +- drivers/infiniband/sw/rxe/rxe_pool.c | 114 +++---- drivers/infiniband/sw/rxe/rxe_pool.h | 34 +- drivers/infiniband/sw/rxe/rxe_req.c | 113 ++++--- drivers/infiniband/sw/rxe/rxe_resp.c | 105 +++++-- drivers/infiniband/sw/rxe/rxe_verbs.c | 72 +++-- drivers/infiniband/sw/rxe/rxe_verbs.h | 61 ++-- include/rdma/ib_verbs.h | 16 +- include/uapi/rdma/ib_user_verbs.h | 11 + include/uapi/rdma/rdma_user_rxe.h | 44 ++- 18 files changed, 1026 insertions(+), 380 deletions(-) create mode 100644 drivers/infiniband/sw/rxe/rxe_mw.c -- 2.25.1