Проблема с 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 коды в этом сообщении в блоге.

Другие вопросы по тегам