On 3/12/25 11:34 AM, Stanislav Fomichev wrote: >> More specifically, I do not see netdev APIs ever recognizing RDMA >> concepts like domains and memory regions. For us, everything is relative >> to a domain and a region - e.g., whether a queue is created for a netdev >> device or an IB QP both use the same common internal APIs. I would >> prefer not to use fwctl for something so basic. > > What specifically do you mean here by 'memory regions'? Ne netdev queues and flows are a subset of RDMA operations, so I mean MRs as in: IBV_REG_MR(3) Libibverbs Programmer's Manual NAME ibv_reg_mr, ibv_reg_mr_iova, ibv_reg_dmabuf_mr, ibv_dereg_mr - register or deregister a memory region (MR) SYNOPSIS #include <infiniband/verbs.h> struct ibv_mr *ibv_reg_mr(struct ibv_pd *pd, void *addr, size_t length, int access); struct ibv_mr *ibv_reg_mr_iova(struct ibv_pd *pd, void *addr, size_t length, uint64_t hca_va, int access); struct ibv_mr *ibv_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length, uint64_t iova, int fd, int access); int ibv_dereg_mr(struct ibv_mr *mr); DESCRIPTION ibv_reg_mr() registers a memory region (MR) associated with the protection domain pd. The MR's starting address is addr and its size is length. The argument access describes the desired mem‐ ory protection attributes; it is either 0 or the bitwise OR of one or more of the following flags: ...