RE: [RFC] XRC upstream merge reboot

Hefty, Sean
2011-08-04T05:53:58Z

> ?? How do you register for an event? There is only
> ibv_get_async_event(3) - I thought it returned all events relevant to
> the associated verbs context.

The OFED APIs for managing XRC receive QPs are:

int (*create_xrc_rcv_qp)(struct ibv_qp_init_attr *init_attr,
uint32_t *xrc_qp_num);
int (*modify_xrc_rcv_qp)(struct ibv_xrc_domain *xrc_domain,
uint32_t xrc_qp_num,
struct ibv_qp_attr *attr,
int attr_mask);
int (*query_xrc_rcv_qp)(struct ibv_xrc_domain *xrc_domain,
uint32_t xrc_qp_num,
struct ibv_qp_attr *attr,
int attr_mask,
struct ibv_qp_init_attr *init_attr);
int (*reg_xrc_rcv_qp)(struct ibv_xrc_domain *xrc_domain,
uint32_t xrc_qp_num);
int (*unreg_xrc_rcv_qp)(struct ibv_xrc_domain *xrc_domain,
uint32_t xrc_qp_num);

The ibv_reg_xrc_rcv_qp() call bumped a reference count on the receive qp and registered for events. The event structure was modified to include the xrc_qp_num, along with a flag added to the event to indicate that the event was for an xrc qp.

(To clarify my patches do not have these calls, so event registration isn't possible and would need to be communicated above verbs.)

- Sean