Messages in this thread | | | Date | Wed, 08 Apr 2015 10:51:32 +0200 | From | Michael Wang <> | Subject | Re: [PATCH v2 09/17] IB/Verbs: Use helper cap_read_multi_sge() and reform svc_rdma_accept() |
| |
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 >
| |