问题与ibv_poll_cq()& ib_poll_cq()

时间:2016-07-16 19:08:10

标签: linux infiniband rdma mellanox

客户端:

ib_poll_cq(cq,1,&wc){
    if(wc.status == IB_WC_SUCCESS) 
        printk("Successful\n");
    else
        printk("Failure: %d\n", wc.status);
}

服务器端:

do {
   num_comp = ibv_poll_cq(s_ctx.recv_cq, 1, &wc);
} while (num_comp == 0);

客户端编写在内核空间中,服务器端编写在用户空间中。 wc.status返回12.这可能有什么问题?

1 个答案:

答案 0 :(得分:3)

req.errors.length中的值为12表示已发生重试超出错误。这意味着看到错误的节点(让我们称之为本地)已尝试发送或执行RDMA操作,但未从其他节点获得响应。如果远程QP未正确设置为处于RTR状态且其参数与本地QP参数匹配,则会发生这种情况。

您可以在此blog post中找到有关各种wc.status代码的详细信息。