[ofa-general] Directions for verbs API extensions

Steve Wise swise at opengridcomputing.com
Wed Apr 9 11:06:58 PDT 2008


Roland Dreier wrote:
>  > > There are a few discrepancies between the iWARP and IB verbs that we
>  > > need to decide on how we want to handle:
>  > >
>  > >  - In IB-BMME, L_Keys and R_Keys are split up so that there is an
>  > >    8-bit "key" that is owned by the consumer.  As far as I know, there
>  > >    is no analogous concept defined for iWARP STags; is there any point
>  > >    in supporting this IB-only feature (which is optional even in the
>  > >    IB spec)?
>
>  > In fact there is an 8b key for stags as well. The stag is composed of
>  > a 3B index allocated by the driver/hw, and a 1B key specified by the
>  > consumer. None of this is exposed in the linux rdma interface at this
>  > point and cxgb3 always sets the key to 0xff.
>
> Oops, I completely missed that in the iWARP verbs spec.  Yes, the IB and
> iWARP verbs agree on the semantics here, so the only issue is that the
> "key" portion of L_Keys/R_Keys is only supported by IB devices that do
> BMME.  So we can expose this in the API without too much trouble.
>
>  > The chelsio driver supports the iwarp bind_mw SQ WR via the current
>  > API. In fact the current API implies that this call is actually a SQ
>  > operation anyway:
>  > > /**
>  > > * ib_bind_mw - Posts a work request to the send queue of the specified
>  > > * QP, which binds the memory window to the given address range and
>  > > * remote access attributes.
>  > 
>  > How is the current bind_mw API not valid or correct for iwarp MWs?
>  > Other than being a different call than ib_post_send()?
>
> That's the only issue.  The main impact is that you can't submit an MW
> bind as part of a list of send WRs.  I guess it's not too severe an
> issue.  I don't have any strong feelings here, except that eliminating
> the separate bind_mw call might be a little cleaner.  On the other hand
> it adds more conditional branches to post_send so maybe it's a net lose.
>   
BTW: looks like /usr/include/infiniband/verbs.h is missing a 
ibv_bind_mw() function.  The struct and context ops are there, but no 
API func.  This means there is no bind_mw support for user mode at this 
point.  So we don't have to worry about backwards compatibility...

Steve.





More information about the general mailing list