• Steve Wise's avatar
    iw_cxgb4: only insert drain cqes if wq is flushed · c058ecf6
    Steve Wise authored
    Only insert our special drain CQEs to support ib_drain_sq/rq() after
    the wq is flushed. Otherwise, existing but not yet polled CQEs can be
    returned out of order to the user application.  This can happen when the
    QP has exited RTS but not yet flushed the QP, which can happen during
    a normal close (vs abortive close).
    
    In addition never count the drain CQEs when determining how many CQEs
    need to be synthesized during the flush operation.  This latter issue
    should never happen if the QP is properly flushed before inserting the
    drain CQE, but I wanted to avoid corrupting the CQ state.  So we handle
    it and log a warning once.
    
    Fixes: 4fe7c296 ("iw_cxgb4: refactor sq/rq drain logic")
    Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    c058ecf6
cq.c 25.3 KB