[ofa-general] verbs/hardware question
Steve Wise
swise at opengridcomputing.com
Thu Oct 11 11:40:11 PDT 2007
Doug Ledford wrote:
> On Thu, 2007-10-11 at 12:39 -0500, Steve Wise wrote:
>> Doug Ledford wrote:
>>> So, one of the options when creating a QP is the max inline data size.
>>> If I understand this correctly, for any send up to that size, the
>>> payload of that send will be transmitted to the receiving side along
>>> with the request to send.
>> What it really means is the payload is DMA'd to the HW on the local side
>> in the work request itself as opposed being DMA'd down in a 2nd
>> transaction after the WR is DMA'd and processed. It has no end-to-end
>> significance. Other than to reduce the latency needed to transfer the data.
>
> OK, that clears things up for me ;-)
>
>>> This reduces back and forth packet counts on
>>> the wire in the case that the receiving side is good to go, because it
>>> basically just responds with "OK, got it" and you're done.
>> I don't think this is true. Definitely not with iWARP. INLINE is just
>> an optimization to push small amts of data downto the local adapter as
>> part of the work request, thus avoiding 2 DMA's.
>
>> Even though you create the QP with the inline option, only WRs that pass
>> in the IBV_SEND_INLINE flag will do inline processing, so you can
>> control this functionality at a per-WR basis.
>
> Hmm..that raises a question on my part. You don't call ibv_reg_mr on
> the wr itself, so if the data is pushed with the wr, do you still need
> to call ibv_reg_mr on the data separately?
>
The WR DMA'd by the HW is actually built in memory that is setup for the
adapter to DMA from. Whether that is really done via ibv_reg_mr or some
other method is provider/vendor specific. So the WR you pass into
ibv_post_send() is always copied and munged into the HW-specific memory
and format. For inline sends, the data you pass in via the SGL is
copied into the HW-specific WR memory as well.
And from the man page on ibv_post_send(), I conclude you do _not_ have
to register the payload memory used in an INLINE send:
> IBV_SEND_INLINE Send data in given gather list as inline data
> in a send WQE. Valid only for Send and RDMA Write. The L_Key will not be checked.
Steve.
More information about the general
mailing list