[ofa-general] openfabrics CMA interfaces for iWARP
Ramaswamy Tummala
Ramaswamy.Tummala at Sun.COM
Mon Oct 15 16:43:01 PDT 2007
Thanks Steve for answering the questions.
>> - It appears that RNIC should send IW_CM_EVENT_DISCONNECT event to CMA
>> prior
>> to the start of closing or aborting the connection (except in the case
>> where the disconnect has been initiated by CMA itself, for example
>> by CMA
>> calling modify_qp entry point of RNIC to move the QP state to
>> CLOSING or
>> ERROR). Is this correct?
>
> I'm not sure I understand your question.
Basically, I am trying to understand when RNIC should send
IW_CM_EVENT_DISCONNECT event.
Thank you,
Ramaswamy.
Steve Wise wrote:
>
>
> Ramaswamy Tummala wrote:
>> I have a few questions about the openfabrics CMA interfaces for iWARP.
>> I'd appreciate if anyone could clarify them.
>>
>> - If RNIC's modify_qp() entry point is called to move the QP state to
>> CLOSING or
>> ERROR while there are some WQEs on SQ and RQ, does RNIC flush the
>> incomplete
>> WRs on the SQ or RQ?
>
> It is really up to the device, but if the rnic supports the RDMAC verbs
> then it will.
>
>> If so, does RNIC wait until the flush is complete
>> before returning modify_qp() to the caller? If RNIC does not wait
>> for the
>> flush to complete how does the caller know when the flush is complete
>> (so that caller can poll CQ to retrieve the CQ entries)?
>
> This is up to the provider also. I don't think the verbs specify that
> the flush will be done by the time you return from modify_qp(). Its up
> to the application to deal with knowing when the flush is done.
>
>>
>> [ Another possibility is, when RNIC's modify_qp() entry point called to
>> move the QP state to CLOSING while there some WQEs on the SQ, the
>> RNIC would
>> internally move the QP state to ERROR. My question still is does RNIC
>> wait until the flushing of incomplete WRs from SQ and RQ are done
>> before
>> returning modify_qp() to the caller even though it internally
>> transitioned
>> the QP state to ERROR. If RNIC does not wait for the flush to complete
>> how does the caller know when the flush is complete? ]
>>
>
> I think the answer is no, you cannot depend on the flush being complete
> when you exit modify_qp...
>
>> - If RNIC's modify_qp() entry point called to move the QP state to
>> CLOSING,
>> does RNIC just initiate LLP CLOSE and return to the caller?, or does
>> it wait
>> until LLP CLOSE is complete?.
>
> It initiates the LLP CLOSE. It does not wait for the close to complete.
>
>>
>> - It appears that RNIC should send IW_CM_EVENT_DISCONNECT event to CMA
>> prior
>> to the start of closing or aborting the connection (except in the case
>> where the disconnect has been initiated by CMA itself, for example
>> by CMA
>> calling modify_qp entry point of RNIC to move the QP state to
>> CLOSING or
>> ERROR). Is this correct?
>
> I'm not sure I understand your question.
>
>>
>> - It appears that RNIC should send IW_CM_EVENT_CLOSE event after the
>> connection
>> has been closed. Should this event be sent on both active and
>> passive sides
>> after the connection has been closed?
>
> Yes.
>
>>
>> - RNIC has add_ref(struct ib_qp *qp), and rem_ref(struct ib_qp *qp) entry
>> points. What is the expected use of CMA calling these entry points?
>> My general
>> thinking is that CMA can increase the reference count on QP (i.e.
>> add_ref)
>> to prevent the QP from being destroyed by RNIC. But, it is the CMA that
>> initiates destroying of QP by calling destroy_qp() entry point of RNIC.
>> So, CMA could maintain the reference count for QP in its own private
>> data
>> (instead of calling RNIC's add_ref entry point) and not call
>> destroy_qp() entry point of RNIC if the reference count is not zero.
>
> The iWCM keeps the ref on the QP while the QP is directly associated
> with a iw_cm_id.
>
>>
>> - It appears that if RNIC's accept() entry point is called to accept an
>> incoming connection, the RNIC, after successful processing of accept,
>> would send IW_CM_EVENT_ESTABLISHED event to CMA. What event RNIC should
>> send if the call to accept() succeeded, but later RNIC encountered some
>> error in sending MPA reply message to the remote peer or some other
>> error?
>> In this case although the call to accept() succeeded, the connection
>> could
>> still be not be established. So the RNIC can not send
>> IW_CM_EVENT_ESTABLISHED event.
>
> It is ok to block in the provider until the connection and qp are bound
> and in FPDU mode. That's what the chelsio device does. So when the
> ESTABLISHED event is posted, the MPA reply was sent and ACKed and the QP
> /connection moved into FPDU mode. Then any problems in the connection
> would be posted as IW_CM_EVENT_CLOSE or IW_CM_EVENT_DISCONNECT.
>
>>
>> - It appears that a client of CMA needs to call rdma_resolve_route()
>> after
>> a successful rdma_resolve_addr(). Any reason for the existence of two
>> interfaces instead of one interface that combines the functionality of
>> both the interfaces?
>
> Its an infiniband requirement, I think. iWARP doesn't do anything for
> resolve route. The "next hop route" in iWARP terms is actually
> determined as part to address resolution...
>
> Steve.
More information about the general
mailing list