struct ibv_mw_bind_info { struct ibv_mr *mr; uint64_t addr; uint64_t length; int mw_access_flags; /* use ibv_access_flags */ }; struct ibv_pd { struct ibv_context *context; uint32_t handle; }; struct ibv_xrcd { struct ibv_context *context; }; struct ibv_mr { struct ibv_context *context; struct ibv_pd *pd; void *addr; size_t length; uint32_t handle; uint32_t lkey; uint32_t rkey; }; struct ibv_mw { struct ibv_context *context; struct ibv_pd *pd; uint32_t rkey; uint32_t handle; enum ibv_mw_type type; }; struct ibv_srq_init_attr { void *srq_context; struct ibv_srq_attr attr; }; struct ibv_srq_init_attr_ex { void *srq_context; struct ibv_srq_attr attr; uint32_t comp_mask; enum ibv_srq_type srq_type; struct ibv_pd *pd; struct ibv_xrcd *xrcd; struct ibv_cq *cq; }; struct ibv_wq_init_attr { void *wq_context; enum ibv_wq_type wq_type; uint32_t max_wr; uint32_t max_sge; struct ibv_pd *pd; struct ibv_cq *cq; uint32_t comp_mask; /* Use ibv_wq_init_attr_mask */ uint32_t create_flags; /* use ibv_wq_flags */ }; /* * Receive Work Queue Indirection Table. * It's used in order to distribute incoming packets between different * Receive Work Queues. Associating Receive WQs with different CPU cores * allows to workload the traffic between different CPU cores. * The Indirection Table can contain only WQs of type IBV_WQT_RQ. */ struct ibv_rwq_ind_table { struct ibv_context *context; int ind_tbl_handle; int ind_tbl_num; uint32_t comp_mask; };