Direct wqe is a mechanism to fill wqe directly into the hardware. In the case of light load, the wqe will be filled into pcie bar space of the hardware, this will reduce one memory access operation and therefore reduce the latency. The user space parts is named "libhns: Add support for direct wqe". Changes since v5: * The direct wqe feature is enabled by default. * Resolve the conflict with the patch of HNS_ROCE_MMAP_TYPE_DB. (https://patchwork.kernel.org/project/linux-rdma/patch/20211206133652.27476-1-liangwenpeng@xxxxxxxxxx/) * https://patchwork.kernel.org/project/linux-rdma/cover/20211130135740.4559-1-liangwenpeng@xxxxxxxxxx/ Changes since v4: * Add a comment to explain why direct WQE uses pgprot_device. * https://patchwork.kernel.org/project/linux-rdma/cover/20211122033801.30807-1-liangwenpeng@xxxxxxxxxx/ Changes since v3: * Commit based on the latest code. * Remove unused variable "ibdev" from alloc_qp_db. * https://patchwork.kernel.org/project/linux-rdma/cover/20211116150400.23459-1-liangwenpeng@xxxxxxxxxx/ Changes since v2: * Direct wqe uses the new mmap scheme (https://patchwork.kernel.org/project/linux-rdma/patch/20211028105640.1056-1-liangwenpeng@xxxxxxxxxx/). * https://patchwork.kernel.org/project/linux-rdma/cover/1622705834-19353-1-git-send-email-liweihang@xxxxxxxxxx/ Changes since v1: * Remove 'inline' of two functions in #1. * Enable direct wqe by default in #2. * https://patchwork.kernel.org/project/linux-rdma/cover/1622193545-3281-1-git-send-email-liweihang@xxxxxxxxxx/ Yixing Liu (1): RDMA/hns: Support direct wqe of userspace drivers/infiniband/hw/hns/hns_roce_device.h | 8 +-- drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 3 +- drivers/infiniband/hw/hns/hns_roce_main.c | 36 +++++++++++--- drivers/infiniband/hw/hns/hns_roce_pd.c | 3 ++ drivers/infiniband/hw/hns/hns_roce_qp.c | 54 ++++++++++++++++++++- include/uapi/rdma/hns-abi.h | 2 + 6 files changed, 94 insertions(+), 12 deletions(-) -- 2.33.0