Roland Dreier wrote:
 > Is there a way of changing the RNR retry count back to 0 after establishing
 > the connection?

Yes... quite complicated but possible.  Basically you have to transition
to the QP to the "send queue drained" (SQD) state, change the rnr retry
value in an SQD->SQD transition and then transition back to RTS.

In case the RTS->SQD->SQD->RTS transition is not applicable or just for the sake of 
being aware to more solutions, I gave it some thought and its seems possible for you to build a 
protocol which uses exchange (through the private data carried by the CM messages) whether each 
side supports credit management, and based on that && HW support of the 
IB_DEVICE_RC_RNR_NAK_GEN device capability decide what value to place into the QP RNR retries.

On the passive side of the connection its trivial, since the rdma-cm uses the 
values you place into the conn_param parameters of rdma_accept.

On the active side, things are a bit more complex, but with some changes, I 
think you would be able to do it also in a different way than the SQD one: the 
RNR retries are set into the QP once its being moved to RTS (Ready-To-Send). 
So, if you managed to get the QP into your hands --before-- the RTU is sent 
(since this point in time is the last synchoronization step provided to you by 
the IB CM), you could set the RNR retries value accroding to info carried in 
the REP message sent by the passive (which you have posted in the private data 
to rdma_accept, etc).

This would be possible, if you enhance the rdma-cm to deliver 
RDMA_CM_EVENT_CONNECT_RESPONSE event also to IDs created with the PS_TCP port 
space (eg conditioned on some new field in conn_param) where today its 
supported only to PS_SDP ones.

Once this change is in place, you will get RDMA_CM_EVENT_CONNECT_RESPONSE event, decide 
what RNR retry value you want to use, and call rdma_accept providing this value (one 
more little change is needed here in cma.c), the rdma cm would override the value set by 
cm_init_qp_rts_attr, see cma_modify_qp_rts -> rdma_init_qp_attr -> 
ib_cm_init_qp_attr -> cm_init_qp_rts_attr

and you are done...

Or.


_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to