Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 214441
b: refs/heads/master
c: fc24f78
h: refs/heads/master
i:
  214439: 6fadb2a
v: v3
  • Loading branch information
Andy Grover committed Sep 9, 2010
1 parent caeba85 commit c47b99e
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3427e854e1a0e76be8b3d75fc0fa878f59b43693
refs/heads/master: fc24f78085e8771670af42f2b8929b16a0c98a22
22 changes: 2 additions & 20 deletions trunk/net/rds/ib_recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,24 +51,6 @@ static void rds_ib_frag_free(struct rds_page_frag *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)
{
struct rds_ib_recv_work *recv;
Expand Down Expand Up @@ -105,7 +87,7 @@ static void rds_ib_recv_clear_one(struct rds_ib_connection *ic,
recv->r_ibinc = NULL;
}
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);
recv->r_frag = NULL;
}
Expand Down Expand Up @@ -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)];

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
Expand Down

0 comments on commit c47b99e

Please sign in to comment.