Hi Shirley-

I’ve found that to move the QP back to the IB_QPS_INIT state, I need to
call ib_modify_qp() with a specific set of attributes, including the
pkey_index and port_num.

rdma_init_qp_attr() extracts those attributes. But, when I try to call it
after rdma_disconnect(), the rdma_cm_id is not in the RDMA_CM_IDLE state,
and the call fails.

So I can’t get the QP back to the INIT state unless the rdma_cm_id has
somehow been reset.

I suppose I could call rdma_init_qp_attr() while the transport is still
connected, and save the returned attributes.


On Jun 20, 2014, at 6:24 PM, Shirley Ma <[email protected]> wrote:

> The QP can be reused. The rdma_id_private has a field reuseaddr. What 
> additional change is needed besides rdma_set_reuseaddr?
> 
> Shirley
> 
> On 06/20/2014 02:17 PM, Hefty, Sean wrote:
>>> During a remote transport disconnect, the QP leaves RTS.
>>> 
>>> xprtrdma deals with this in a separate transport connect worker process,
>>> where it creates a new id and qp, and replaces the existing id and qp.
>>> 
>>> Unfortunately there are parts of xprtrdma (namely FRMR deregistration)
>>> that are not easy to serialize with this reconnect logic.
>>> 
>>> Re-using the QP would mean no serialization would be needed between
>>> transport reconnect and FRMR deregistration.
>>> 
>>> If QP re-use is not supported, though, it's not worth considering any
>>> further.
>> 
>> It may be possible to reuse the QP, just not the rdma_cm_id without 
>> additional code changes.  Reuse of the rdma_cm_id may also require changes 
>> in the underlying IB/iWarp CMs.
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to [email protected]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> 

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to