[ofa-general] Re: NOSRQ QP implementation issues

Pradeep Satyanarayana pradeeps at linux.vnet.ibm.com
Mon Jul 30 17:25:47 PDT 2007


Roland Dreier wrote:
>  > For sending (both on the active and passive side) the skbs are associated 
>  > with the tx_qp. The remote qp for the tx_qp is the rx_qp (on the other side)
>  > and WRs are posted to receive packets. An skb (for send) is not associated 
>  > with SQ of the rx_qp. Therefore, no packets are expected to be sent through
>  > the rx_qp.
>  > 
>  > In an erroneous case if packets do get sent to the wrong RQ, then they will
>  > get dropped as no WQEs are posted. As discussed, an RNR will be returned as
>  > expected and a new connection will get established. I still see no issues 
>  > with this either.
>  > 
>  > If in the future, we do want to use the unused SQ and RQs, then we will have
>  > to associate them with corresponding QP at the remote end. This will be work
>  > for both the SRQ and non-SRQ case.
>  > 
>  > I do not see any issues. Can you please explain what is missing with this 
>  > implementation?
> 
> I think what you are missing is that Linux is not necessarily the only
> IPoIB CM implementation.  The Linux IPoIB driver needs to be able to
> talk to any other implementation that follows the RFCs, in particular
> RFC 4755 for connected mode.  And according to my reading of the RFC
> at least, it is OK for a system to accept an IPoIB CM connection and
> then use that connection to send packets back to the system that
> originated the connection.  There is no requirement that a new
> connection be opened for traffic in the other direction.
> 
> And killing the connection as soon as a packet is sent in the wrong
> direction seems pretty wrong to me.  The current SRQ code actually
> handles it fine, because all the QPs, no matter which direction they
> were opened, are attached to the SRQ and hence have receives available.
> 
> One possibility would be to set the maxium receive MTU to 0 for
> connections initiated in the no-SRQ case.  However I'm not sure
> whether that is within the spirit of the RFC, and it might really
> confuse other systems that do want to send on that QP.  Another
> possibility would be to post one receive to all no-SRQ QPs, and if
> that receive is consumed then post more.
> 
>  - R.
> 
Thanks for pointing that out Roland. Yes, I was focussed on Linux and did not
consider other systems.

Michael, Thanks for catching this. Till I saw Roland's description I did not 
consider the other possibilities and did not see what you were alluding to.

What do you folks think about the following: in addition to posting 1 WR
suppose I create a separate CQ for the RQ (for tx_qp). There will be a small
completion handler that spits out a message that this request was received
from a non-Linux system, and then calls ipoib_ib_completion(). So, this way
we will not kill the connection, but the performance may be limited.

Pradeep




More information about the general mailing list