Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d956e69 authored by Chuck Lever's avatar Chuck Lever Committed by J. Bruce Fields
Browse files

svcrdma: Clean-up svc_rdma_unmap_dma



There's no longer a need to compare each SGE's lkey with the PD's
local_dma_lkey. Now that FRWR is gone, all DMA mappings are for
pages that were registered with this key.

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 463e63d7
Loading
Loading
Loading
Loading
+5 −14
Original line number Original line Diff line number Diff line
@@ -225,22 +225,13 @@ void svc_rdma_unmap_dma(struct svc_rdma_op_ctxt *ctxt)
{
{
	struct svcxprt_rdma *xprt = ctxt->xprt;
	struct svcxprt_rdma *xprt = ctxt->xprt;
	struct ib_device *device = xprt->sc_cm_id->device;
	struct ib_device *device = xprt->sc_cm_id->device;
	u32 lkey = xprt->sc_pd->local_dma_lkey;
	unsigned int i;
	unsigned int i;


	for (i = 0; i < ctxt->mapped_sges; i++) {
	for (i = 0; i < ctxt->mapped_sges; i++)
		/*
		 * Unmap the DMA addr in the SGE if the lkey matches
		 * the local_dma_lkey, otherwise, ignore it since it is
		 * an FRMR lkey and will be unmapped later when the
		 * last WR that uses it completes.
		 */
		if (ctxt->sge[i].lkey == lkey)
		ib_dma_unmap_page(device,
		ib_dma_unmap_page(device,
				  ctxt->sge[i].addr,
				  ctxt->sge[i].addr,
				  ctxt->sge[i].length,
				  ctxt->sge[i].length,
				  ctxt->direction);
				  ctxt->direction);
	}
	ctxt->mapped_sges = 0;
	ctxt->mapped_sges = 0;
}
}