Проблема с ibv_poll_cq() и ib_poll_cq()
Сторона клиента:
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 ответ
Значение 12 в wc.status
означает, что произошла ошибка повторной попытки. Это означает, что узел, который увидел ошибку (назовем ее локальной), попытался отправить или выполнить операцию RDMA и не получил ответ от другого узла. Это может произойти, если удаленный QP не был настроен правильно, чтобы быть в состоянии RTR с его параметрами, соответствующими параметрам локального QP.
Вы можете найти некоторые подробности о различных ibv_wc
коды в этом сообщении в блоге.