]> git.baikalelectronics.ru Git - kernel.git/commit
svcrdma: Use new CQ API for RPC-over-RDMA server receive CQs
authorChuck Lever <chuck.lever@oracle.com>
Tue, 1 Mar 2016 18:07:13 +0000 (13:07 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 1 Mar 2016 21:06:42 +0000 (13:06 -0800)
commit976cee14959d9a3f5d58cd080af3a23c4bba999e
tree09463b98f411458f698ac72c51747e3c7fec51d4
parent26188bfa5268f4637b5f5e7244fe8ed8ae2f14c9
svcrdma: Use new CQ API for RPC-over-RDMA server receive CQs

Calling ib_poll_cq() to sort through WCs during a completion is a
common pattern amongst RDMA consumers. Since commit 551cbd3400f8
("IB: add a proper completion queue abstraction"), WC sorting can
be handled by the IB core.

By converting to this new API, svcrdma is made a better neighbor to
other RDMA consumers, as it allows the core to schedule the delivery
of completions more fairly amongst all active consumers.

Because each ib_cqe carries a pointer to a completion method, the
core can now post operations on a consumer's QP, and handle the
completions itself.

svcrdma receive completions no longer use the dto_tasklet. Each
polled Receive WC is now handled individually in soft IRQ context.

The server transport's rdma_stat_rq_poll and rdma_stat_rq_prod
metrics are no longer updated.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
include/linux/sunrpc/svc_rdma.h
net/sunrpc/xprtrdma/svc_rdma_transport.c