Assistance Needed with Large Packet Reception Issue

Dear Forum Members,

I hope this message finds you well. I’m reaching out to seek your advice on a challenge I’m facing regarding the reception of a substantial volume of packets while working within constraints on completion queue size.

In my current project, I’m encountering difficulties maintaining a balance between the number of packets to be received and the limited size of the completion queue. Specifically, whenever I attempt to set the completion queue entries to be smaller than the number of packets to be received, I find myself caught in an infinite loop. This issue arises particularly when I’m dealing with the raw_qp_recv function, as evidenced in the provided code snippet from the

raw_qp.tar.gz (7.6 KB)

To elaborate, I’ve configured the work request queue (wr) to hold 20,000 entries and the completion queue (cq) to accommodate 50,000 entries. While I can successfully receive a number of packets equivalent to the size of the completion queue without errors, any attempt to receive more packets than the completion queue ,70,000 packets, results in an infinite loop, specifically at line number 473 in the code, when debugged i found , an error occurred : "ibv_poll_next: no space left on device

The reason i am asking for help cause when I need to receive a significantly larger volume of packets, on the order of 10 to 20 million. Unfortunately, due to system limitations, I’m unable to set the parameters cq=wr=10 million directly. Even with wr set to the maximum allowed value of 20,000 and cq to 4 million (the maximum allowed by my system), I can only receive up to 4 million packets, matching the size of the completion queue.

Thank you all in advance for your valuable assistance and expertise.

Best regards,