This set of patches implements the memory windows verbs, local and remote send operations. Each of these has been tested at a basic level and regressions tests have been run to see that basic rxe functionality is OK. The rdma-core pyverbs memory windows test cases run correctly. I would encourage anyone who has test cases for MWs to run them against this code and let me know if anything crops up. There is a matching patch for rdma-core the user space library that is required to run user space MW applications. The first two patches clean up checkpatch warnings for the existing rxe source code. They can be used separately if desired. The third and fourth patches are a prerequisite for the rest of the set but are independant and add some WR and WC opcodes to ib_verbs.h and ib_user_verb.h. The remaining patches implement the memory windows extensions. Bob Pearson Bob Pearson (17): rdma_rxe: Added SPDX headers to rxe source files rdma_rxe: Fixed style warnings ib_user_verbs.h: Added ib_uverbs_wc_opcode ib_verbs.h: Added missing IB_WR_BIND_MW opcode rdma_rxe: Added bind_mw parameters to rxe_send_wr rdma_rxe: Added stubs for alloc_mw and dealloc_mw verbs rdma_rxe: Separated MR and MW objects. rdma_rxe: Added mw object rdma_rxe: Extended pools to support both keys and indices rdma_rxe: Implemented functional alloc_mw and dealloc_mw APIs rdma_rxe: Address an issue with hardened user copy rdma_rxe: Added bind mw API stub rdma_rxe: Give MR and MW objects indices and keys rdma_rxe: Added stub for invalidate mw rdma_rxe: Added functional bind and invalidate MW ops rdma_rxe: Implemented read/write/atomic access to MW rdma_rxe: minor cleanups drivers/infiniband/sw/rxe/Makefile | 1 + drivers/infiniband/sw/rxe/rxe.c | 33 +- drivers/infiniband/sw/rxe/rxe.h | 31 +- drivers/infiniband/sw/rxe/rxe_av.c | 31 +- drivers/infiniband/sw/rxe/rxe_comp.c | 39 +- drivers/infiniband/sw/rxe/rxe_cq.c | 31 +- drivers/infiniband/sw/rxe/rxe_hdr.h | 31 +- drivers/infiniband/sw/rxe/rxe_hw_counters.c | 31 +- drivers/infiniband/sw/rxe/rxe_hw_counters.h | 31 +- drivers/infiniband/sw/rxe/rxe_icrc.c | 31 +- drivers/infiniband/sw/rxe/rxe_loc.h | 88 ++-- drivers/infiniband/sw/rxe/rxe_mcast.c | 31 +- drivers/infiniband/sw/rxe/rxe_mmap.c | 31 +- drivers/infiniband/sw/rxe/rxe_mr.c | 385 ++++++++--------- drivers/infiniband/sw/rxe/rxe_mw.c | 431 ++++++++++++++++++++ drivers/infiniband/sw/rxe/rxe_net.c | 33 +- drivers/infiniband/sw/rxe/rxe_net.h | 31 +- drivers/infiniband/sw/rxe/rxe_opcode.c | 42 +- drivers/infiniband/sw/rxe/rxe_opcode.h | 32 +- drivers/infiniband/sw/rxe/rxe_param.h | 42 +- drivers/infiniband/sw/rxe/rxe_pool.c | 165 ++++---- drivers/infiniband/sw/rxe/rxe_pool.h | 69 ++-- drivers/infiniband/sw/rxe/rxe_qp.c | 34 +- drivers/infiniband/sw/rxe/rxe_queue.c | 31 +- drivers/infiniband/sw/rxe/rxe_queue.h | 31 +- drivers/infiniband/sw/rxe/rxe_recv.c | 31 +- drivers/infiniband/sw/rxe/rxe_req.c | 154 +++---- drivers/infiniband/sw/rxe/rxe_resp.c | 196 +++++---- drivers/infiniband/sw/rxe/rxe_srq.c | 31 +- drivers/infiniband/sw/rxe/rxe_sysfs.c | 31 +- drivers/infiniband/sw/rxe/rxe_task.c | 31 +- drivers/infiniband/sw/rxe/rxe_task.h | 33 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 114 +++--- drivers/infiniband/sw/rxe/rxe_verbs.h | 97 ++--- include/rdma/ib_verbs.h | 16 +- include/uapi/rdma/ib_user_verbs.h | 11 + include/uapi/rdma/rdma_user_rxe.h | 50 ++- 37 files changed, 1233 insertions(+), 1328 deletions(-) create mode 100644 drivers/infiniband/sw/rxe/rxe_mw.c -- 2.25.1