2016-07-16 2 views
0

стороне клиента:Проблема с 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); 
} 

Server Side:

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

Клиентская написано в пространстве ядра и на стороне сервера написано в пользовательском пространстве. Возврат wc.status 12. Какие могут быть проблемы с этим?

ответ

3

Значение 12 в wc.status означает, что ошибка превышена. Это означает, что узел, который видел ошибку (давайте назовем ее локальной), попытался отправить или выполнить операцию RDMA и не получил ответа от другого узла. Это может произойти, если удаленный QP не был настроен правильно, чтобы находиться в состоянии RTR с параметрами, соответствующими параметрам локальной QP.

Вы можете найти подробную информацию о различных ibv_wc кодах в этом blog post.

+0

ib_poll_cq устанавливает значение we.status в 12, а ibv_poll_cq устанавливает wc в значение нежелательной почты (например, 432882). –

+0

Какова была возвращаемая стоимость от ibv_poll_cq? –

+0

всегда возвращает 0. но wc.status возвращает значение нежелательной почты. –

Смежные вопросы