[ofw] Latest WinVerbs presentation & .h files.

Sean Hefty sean.hefty at intel.com
Thu Feb 14 16:00:26 PST 2008


>>>>        WV_ADDRESS_VECTOR       PrimaryAddressVector;
>>>>        WV_ADDRESS_VECTOR       AlternateAddressVector;
>>>>        BOOL                    SignalSends;
>>>
>>>Can this be changed once the QP is created?  If not, is there value in
>>>returning it?
>>
>>If path migration is in use, these can change.
>
>I mean just the 'SignalSends'.  Looking at the spec it's specified at creation
>time only and cannot be changed.

I guess the larger question is whether 'Query' should be part of the various
interface(s).  In many situations it's not completely necessary; the app could
store the necessary data itself.  But if the lower layers maintain that data,
and the app doesn't need it often, then querying for it would save memory.

At this point, I'm inclined to keep the query function, and return any
information maintained by the lower layer.

>>>>        __in OVERLAPPED* pOverlapped,
>>>>        __deref_out WV_MR_HANDLE* phMr,
>>>>        __out UINT32* pLKey,
>>>
>>>You don't need the lkey - the MR handle is enough.
>>
>>The SGE takes the LKey, not the MR_HANDLE.
>
>Why not make it take the MR handle?  Is the LKey used anywhere else that the MR
>handle couldn't be used?

We save dereferencing the MR_HANDLE by having the user provide the LKey
directly.

>>A memory window bind operation can return the RKey immediately before the send
>>is processed by the HW.  I don't see why this would be any different.  The
>>LKey/RKey just aren't usable until the Register operation completes.
>
>Ok, so your register IOCTL goes down to the kernel.  There, the memory is
>pinned down and the DMA mapping is obtained (all in the context of the app's
>thread in this case).  The kernel driver knows the LKey and RKey at this point,
>but the UVP and application do not.  The HCA driver now starts to program the
>DMA mapping to the HCA, and returns pending while the HW processes this.  When
>are the LKey and RKey written?  When the register call unwinds with
>STATUS_PENDING, but before it returns out of the IOCTL handler in the proxy (so
>that you do it while still in the app's thread context)?  This can be made to
>work, but it's somewhat complicated.

The LKey and RKey need to be returned directly from the register call, similar
to BindMW.  The keys need the correct values.  They just aren't usable until
register completes, again, similar to how BindMW operates.  (I realize BindMW
only returns the new RKey, so I'm assuming that the LKey could be returned as
well.)  The IOCTL may need to write back the values before returning
STATUS_PENDING.

- Sean




More information about the ofw mailing list