• Chuck Lever's avatar
    xprtrdma: Use new CQ API for RPC-over-RDMA client receive CQs · 552bf225
    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, xprtrdma 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 its own operations on a consumer's QP, and handle
    the completions itself, without changes to the consumer.
    
    xprtrdma's reply processing is already handled in a work queue, but
    there is some initial order-dependent processing that is done in the
    soft IRQ context before a work item is scheduled.
    
    IB_POLL_SOFTIRQ is a direct replacement for the current xprtrdma
    receive code path.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Reviewed-by: default avatarDevesh Sharma <devesh.sharma@broadcom.com>
    Reviewed-by: default avatarSagi Grimberg <sagig@mellanox.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    552bf225
xprt_rdma.h 17.1 KB