[openib-general] A new simple ulp (SPTS)
Jeff Carr
jcarr at linuxmachines.com
Tue Jun 21 13:08:33 PDT 2005
On 06/21/05 12:50, Roland Dreier wrote:
> Jeff> However, something still goes wrong after MAX_CQ + 1
> Jeff> transfers, just like the cmtest code. If anyone has any
> Jeff> ideas on what is wrong with what I am doing here that would
> Jeff> be helpful. It must be something really simple I just don't
> Jeff> understand about the IB stack.
>
> You create the QP so that CQ entries are only created when requested
> in the send work request:
>
> + qp_attr.sq_sig_type = IB_SIGNAL_REQ_WR;
>
> but then all of your send work requests have the signal flag unset:
>
> + send_wr.send_flags = IB_SEND_SOLICITED;
>
> Since no CQ entry is generated for any of the send requests, there is
> no way for any software on the host to know that the send requests
> have completed. So no send requests can be freed, and once you have
> filled your send queue, the driver will refuse to post any more send
> requests.
>
> What happens if you try replacing the send_flags line with the one you
> have commented out?
>
> + // send_wr.send_flags = IB_SEND_SIGNALED;
Yes, a better way of asking my question would be to say I tried to find
documentation on the meaning of IB_SIGNAL_REQ_WR & IB_SEND_SOLICITED vs
IB_SEND_SIGNALED but there are no comments in the code anywhere :)
It still isn't completely clear to me, but your comments here help.
I did find:
enum ib_sig_type {
IB_SIGNAL_ALL_WR,
IB_SIGNAL_REQ_WR
};
And wondered what is is that the difference between these are.
I have tried both IB_SEND_SIGNALED & IB_SEND_SOLICITED but the behavior
seems to be the same. I'm doing more experiementation with this to try
to figure it out, but I figured it would be worthwhile to post the code
and ask.
Thanks for your feedback,
Jeff
More information about the general
mailing list