Re: [PATCH v2 09/17] IB/Verbs: Use helper cap_read_multi_sge() and reform svc_rdma_accept()

From: Michael Wang
Date: Wed Apr 08 2015 - 04:51:45 EST


On 04/07/2015 07:42 PM, Jason Gunthorpe wrote:
[snip]
>>> @@ -992,8 +992,8 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
>>> dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
>>> } else
>>> need_dma_mr = 0;
>>> - break;
>>> - case RDMA_TRANSPORT_IB:
>>> + } else if (rdma_ib_mgmt(newxprt->sc_cm_id->device,
>>> + newxprt->sc_cm_id->port_num)) {
>>> if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
>>> need_dma_mr = 1;
>>> dma_mr_acc = IB_ACCESS_LOCAL_WRITE;
>>
>> Now I'm even more confused. How is the presence of IB management
>> related to needing a privileged lmr?
>
> Agree, this needs to be someone else.
>
> I think the test is probably based on this comment:
>
> * NB: iWARP requires remote write access for the data sink
> * of an RDMA_READ. IB does not.
>
> So the if should be:
>
> if (cap_rdma_read_needs_write(..) &&
> !(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) {
> need_dma_mr = 1;
> dma_mr_acc =
> (IB_ACCESS_LOCAL_WRITE |
> IB_ACCESS_REMOTE_WRITE);
>
> And the identical if blocks merged.
>
> Plus the
> if (rdma_transport_iwarp(newxprt->sc_cm_id->device,
> newxprt->sc_cm_id->port_num))
> newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV

Sounds good :-) I'll give this part a reform in next version.

Regards,
Michael Wang

>
> Jason
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/