• Chuck Lever's avatar
    svcrdma: Use new CQ API for RPC-over-RDMA server receive CQs · 8bd5ba86
    Chuck Lever authored
    Calling ib_poll_cq() to sort through WCs during a completion is a
    common pattern amongst RDMA consumers. Since commit 14d3a3b2
    ("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: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    8bd5ba86
svc_rdma_transport.c 37.5 KB