[Openib-windows] Bug or by design?

Saul 26oo at cox.net
Mon Aug 14 11:24:19 PDT 2006


I later discovered that you cannot go from RTS -> RTR -> RTS, so I scrapped 
that idea.  I made another post to the list with the "patch" that I put into 
mthca_qp.c to fix things.  It appears to me that there just needed to be 
some required params specified for the RTS->RTS state change, just like 
there are for the RTR->RTS change.  Without anything being specified as 
required, but with the routine mlnx_conv_qp_modify_attr() forcing 
IB_QP_SQ_PSN to be required (line 743) it was a no win situation.  If there 
was an IB_MOD_QP_xxx flag for SQ_PSN I would be fine, but since there is not 
I was stuck.

Please let me know if the changes that I made to mthca_qp.c are incorrect.

Thanks

----- Original Message ----- 
From: "Fabian Tillier" <ftillier at silverstorm.com>
To: "Saul" <26oo at cox.net>; "Leonid Keller" <leonid at mellanox.co.il>
Cc: <openib-windows at openib.org>
Sent: Monday, August 14, 2006 12:23 PM
Subject: Re: [Openib-windows] Bug or by design?


> 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