[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