簡體   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