Skip to content
  • Leon Romanovsky's avatar
    IB/core: Add cross-channel support · 8a06ce59
    Leon Romanovsky authored
    
    
    The cross-channel feature allows to execute WQEs that involve
    synchronization of I/O operations’ on different QPs.
    
    This capability enables to program complex flows with a single
    function call, hereby significantly reducing overhead associated
    with I/O processing.
    
    Cross-channel operations support is indicated by HCA capability
    information.
    
    The queue pairs can be configured to work as a “sync master queue”
    or “sync slave queues”.
    
    The added flags are:
    
    1. Device capability flag IB_DEVICE_CROSS_CHANNEL for the
       devices that can perform cross-channel operations.
    
    2. CQ property flag IB_CQ_FLAGS_IGNORE_OVERRUN to disable CQ overrun
       check. This check is useless in cross-channel scenario.
    
    3. QP property flags to indicate if queues are slave or master:
       * IB_QP_CREATE_MANAGED_SEND indicates that posted send work requests
         will not be executed immediately and requires enabling.
       * IB_QP_CREATE_MANAGED_RECV indicates that posted receive work
         requests will not be executed immediately and requires enabling.
       * IB_QP_CREATE_CROSS_CHANNEL declares the QP to work in cross-channel
         mode. If IB_QP_CREATE_MANAGED_SEND and IB_QP_CREATE_MANAGED_RECV are
         not provided, this QP will be sync master queue, else it will be sync
         slave.
    
    Reviewed-by: default avatarSagi Grimberg <sagig@mellanox.com>
    Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    8a06ce59