Commit fc24f780 authored by Andy Grover's avatar Andy Grover

RDS/IB: Remove ib_recv_unmap_page()

All it does is call unmap_sg(), so just call that directly.

The comment above unmap_page also may be incorrect, so we
shouldn't hold on to it, either.
Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
parent 3427e854
...@@ -51,24 +51,6 @@ static void rds_ib_frag_free(struct rds_page_frag *frag) ...@@ -51,24 +51,6 @@ static void rds_ib_frag_free(struct rds_page_frag *frag)
kmem_cache_free(rds_ib_frag_slab, frag); kmem_cache_free(rds_ib_frag_slab, frag);
} }
/*
* We map a page at a time. Its fragments are posted in order. This
* is called in fragment order as the fragments get send completion events.
* Only the last frag in the page performs the unmapping.
*
* It's OK for ring cleanup to call this in whatever order it likes because
* DMA is not in flight and so we can unmap while other ring entries still
* hold page references in their frags.
*/
static void rds_ib_recv_unmap_page(struct rds_ib_connection *ic,
struct rds_ib_recv_work *recv)
{
struct rds_page_frag *frag = recv->r_frag;
rdsdebug("recv %p frag %p page %p\n", recv, frag, sg_page(&frag->f_sg));
ib_dma_unmap_sg(ic->i_cm_id->device, &frag->f_sg, 1, DMA_FROM_DEVICE);
}
void rds_ib_recv_init_ring(struct rds_ib_connection *ic) void rds_ib_recv_init_ring(struct rds_ib_connection *ic)
{ {
struct rds_ib_recv_work *recv; struct rds_ib_recv_work *recv;
...@@ -105,7 +87,7 @@ static void rds_ib_recv_clear_one(struct rds_ib_connection *ic, ...@@ -105,7 +87,7 @@ static void rds_ib_recv_clear_one(struct rds_ib_connection *ic,
recv->r_ibinc = NULL; recv->r_ibinc = NULL;
} }
if (recv->r_frag) { if (recv->r_frag) {
rds_ib_recv_unmap_page(ic, recv); ib_dma_unmap_sg(ic->i_cm_id->device, &recv->r_frag->f_sg, 1, DMA_FROM_DEVICE);
rds_ib_frag_free(recv->r_frag); rds_ib_frag_free(recv->r_frag);
recv->r_frag = NULL; recv->r_frag = NULL;
} }
...@@ -768,7 +750,7 @@ static inline void rds_poll_cq(struct rds_ib_connection *ic, ...@@ -768,7 +750,7 @@ static inline void rds_poll_cq(struct rds_ib_connection *ic,
recv = &ic->i_recvs[rds_ib_ring_oldest(&ic->i_recv_ring)]; recv = &ic->i_recvs[rds_ib_ring_oldest(&ic->i_recv_ring)];
rds_ib_recv_unmap_page(ic, recv); ib_dma_unmap_sg(ic->i_cm_id->device, &recv->r_frag->f_sg, 1, DMA_FROM_DEVICE);
/* /*
* Also process recvs in connecting state because it is possible * Also process recvs in connecting state because it is possible
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment