#include <infiniband/verbs.h> struct ibv_rwq_ind_table *ibv_create_rwq_ind_table(struct ibv_context *context, struct ibv_rwq_ind_table_init_attr *init_attr); int ibv_destroy_rwq_ind_table(struct ibv_rwq_ind_table *rwq_ind_table);
struct ibv_rwq_ind_table_init_attr {
uint32_t        log_ind_tbl_size;     /* Log, base 2, of Indirection table size */
struct          ibv_wq **ind_tbl;     /* Each entry is a pointer to Receive Work Queue */
uint32_t        comp_mask;            /* Identifies valid fields. Use ibv_ind_table_init_attr_mask */
};
The function ibv_create_rwq_ind_table() will create a RWQ IND TBL that holds a table of Receive Work Queue. For further usage of the created object see below NOTES.
ibv_destroy_rwq_ind_table() destroys the RWQ IND TBL rwq_ind_table.
ibv_destroy_rwq_ind_table() returns 0 on success, or the value of errno on failure (which indicates the failure reason).