• S
    RDMA/cxgb4: Only call CQ completion handler if it is armed · 678ea9b5
    Steve Wise 提交于
    The function __flush_qp() always calls the ULP's CQ completion handler
    functions even if the CQ was not armed.  This can crash the system if
    the function pointer is NULL. The iSER ULP behaves this way: no
    completion handler and never arm the CQ for notification.  So now we
    track whether the CQ is armed at flush time and only call the
    completion handlers if their CQs were armed.
    
    Also, if the RCQ and SCQ are the same CQ, the completion handler is
    getting called twice.  It should only be called once after all SQ and
    RQ WRs are flushed from the QP.  So rearrange the logic to fix this.
    Signed-off-by: NSteve Wise <swise@opengridcomputing.com>
    Signed-off-by: NRoland Dreier <roland@purestorage.com>
    678ea9b5
ev.c 5.5 KB