在零字节 RR

问题描述

我正在 C++ 环境中使用 IB 动词开发一个简单的测试程序。 我正在处理消息,我发现如果我发布一个带有零字节消息的接收请求 (RR),然后是任何大小大于零的正常 RR,QP 会进入错误状态,给我:>

WC_ERROR: 5
mlx5: n3081301: got completion with error:
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 0000d701 00008189 0000c3e2

对于接收方和:

WC_ERROR: 9
mlx5: n3081301: got completion with error:
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000001 00000000 00000000 00000000
00000000 00008a12 0a00a419 000003d2

对于发送方。 仅当零字节 RR 未被消耗,而正常 RR 消耗时,才会发生这种情况。

代码

//sender
ibv_post_send(buffer,size,dest);
ibv_post_send(NULL,dest);

//receiver
ibv_post_recv(NULL,src);
ibv_post_recv(buffer,src);

发送零字节消息时的WR是:

//recv
ibv_recv_wr r_wr = {.wr_id = wrId,.sg_list = &list,.num_sge = 0};
//send
ibv_send_wr s_wr = {
    .wr_id = wrId,.num_sge = 0,.opcode = IBV_WR_SEND,.send_flags = IBV_SEND_SIGNALED};

.num_sge = 1 发送数据时。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)