[Openib-windows] Bug or by design?

Fabian Tillier ftillier at silverstorm.com
Mon Aug 14 10:23:51 PDT 2006


Hi Saul,

On 8/12/06, Saul <26oo at cox.net> wrote:
>
> Hello,
>
> I am having a problem updating the qkey of a QP that is in the RTS state.
> The API I'm using is
>
> ib_modify_qp(const ib_qp_handle_t h_qp, const ib_qp_mod_t *const p_qp_mod);
>
> I set qp_mod.req_state (to IB_QPS_RTS), qp_mod.state.rts.qkey (to my new
> qkey) and qp_mod.state.rts.opts (to IB_MOD_QP_KEY).
>
> The problem is that down in the mthca driver it uses the integer style
> attribute mask.  In the routine mlnx_conv_qp_modify_attr() the code adds the
> attribute flag IB_QP_SQ_PSN as a required flag.  I can set this field in
> qp_mod without any problem but there is no IB_MOD_QP_xxx flag that maps to
> IB_QP_SQ_PSN.  Therefore the check at line 562 in mthca_qp.c fails the
> operation.
>
> So my question is:  is this supposed to operate this way?  Can I not call
> ib_modify_qp() while at RTS if I want to stay at RTS?  I would think that
> this is ok because it is not flagged as an invalid state transition in the
> driver.  Is there some other API that I should use to perform this qkey
> update?  Or do I need to transition to RTR, then back to RTS to avoid this?

This should work.  You can't move back from RTS to RTR without
resetting the QP first and moving it back through INIT, which will
break your connection.

Leonid, can you look into this?

Thanks,

- Fab




More information about the ofw mailing list