![](/img/trans.png)
[英]Can socket send / recv return errno 27 (EFBIG) on Solaris?
[英]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.