I only looked quickly, but in main() from the links that you provided:
ubenchIBsetQPstateRTR(&pong_as_dest, &ib_ping_qp_attr, &ping_ib_thread,
&barg);
ubenchIBsetQPstateRTR(&ping_as_dest, &ib_pong_qp_attr, &ping_ib_thread,
&barg);
I noticed that you pass ping_ib_thread into the above call twice. Is that
intentional, or should one be pong_ib_thread?
// At last, modify the ping QP to the Ready-to-Send state
ubenchIBsetQPstateRTS(&ping_as_dest, &ib_ping_qp_attr, &ping_ib_thread,
&barg);
I didn't see where you called *RTS() for pong_ib_thread. Also, the parameters
into *RTS() differ from those passed into *RTR() when ping_ib_thread is the 3rd
parameter.
- Sean