• Yishai Hadas's avatar
    IB/mlx5: Add support for drain SQ & RQ · d0e84c0a
    Yishai Hadas authored
    This patch follows the logic from ib_core but considers the internal
    device state upon executing the involved commands.
    
    Specifically,
    Upon internal error state modify QP to an error state can be assumed to
    be success as each in-progress WR going to be flushed in error in any
    case as expected by that modify command.
    
    In addition,
    As the drain should never fail the driver makes sure that post_send/recv
    will succeed even if the device is already in an internal error state.
    As such once the driver will supply the simulated/SW CQEs the CQE for
    the drain WR will be handled as well.
    
    In case of an internal error state the CQE for the drain WR may be
    completed as part of the main task that handled the error state or by
    the task that issued the drain WR.
    
    As the above depends on scheduling the code takes the relevant locks and
    actions to make sure that the completion handler for that WR will always
    be called after that the post_send/recv were issued but not in parallel
    to the other task that handles the error flow.
    Signed-off-by: default avatarYishai Hadas <yishaih@mellanox.com>
    Reviewed-by: default avatarMax Gurtovoy <maxg@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
    d0e84c0a
main.c 167 KB