> 1) rdma_get_request passes event_id and (listen_id)id_priv->qp_init_attr to > rdma_create_qp() > > 2) rdma_create_qp passes qp_init_attr to ucma_create_cqs() > > 3) ucma_create_cqs stores a pointer to the created CQs in attr->recv_cq / > send_cq, which is the attr of the listen_id > > 4) serving the second client, ucma_create_cqs checks attr->recv_cq and does > not create a pair of CQs > > Feels a little odd to me that the listen_id takes a pointer to the CQs > created > for the client_id in its qp_init_attr.
This is a bug in rdma_create_qp, rdma_get_request, or both. rdma_create_qp will modify the qp_init_attr parameter, but I need to think whether it should modify the cq pointers. The underlying ibv_create_qp call does not, but does modify other values, so I think this call may be okay. Because rdma_create_qp modifies the qp_init_attr parameters, rdma_get_request ends up modifying the attributes stored with the listen request. This is definitely an error, and I'll need to come up with a fix for this. - Sean -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html