繁体   English   中英

ibv_post_recv()返回-1而不是errno

[英]ibv_post_recv() return -1 instead of errno

函数ibv_post_recv()返回-1,但是根据文档,它应该返回errno。

在这种情况下如何知道失败原因?

最好的祝福,

它返回-1 设置errno。 函数返回时检查errno值。

您正在使用什么底层硬件驱动程序? 什么版本的? 我猜它是libmlx4(Mellanox ConnectX / ConnectX-2 / ConnectX-3)。

如果是这样的话,> = libmlx4 1.0.2的版本实际上已修复此问题-ibv_post_send()将返回错误代码,而不是-1。

在任何情况下(实际上这并不完全依赖于低级驱动程序-我认为libmthca,libcxgb4等都差不多), ibv_post_send()可能返回立即错误的原因是:

  • 发送队列已满(即,发布的未收集完成的发送数量> =发送队列的大小)。

  • 发送WR中的操作码无效

  • 收集条目数无效(创建发送队列时指定的<= 0或>最大gs条目)

  • 内联数据大于发送队列的最大内联数据

编辑:我看我读问题太快,并且混淆了ibv_post_recv()ibv_post_send() ibv_post_recv()的答案几乎相同,只是简单一点。 基本上, ibv_post_recv()可能返回错误的唯一原因是:

  • 接收队列已满

  • 接收工作请求中的分散条目数无效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM