• Jianbo Liu's avatar
    net/mlx5: Reimplement write combining test · d98995b4
    Jianbo Liu authored
    The test of write combining was added before in mlx5_ib driver. It
    opens UD QP and posts NOP WQEs, and uses BlueFlame doorbell. When
    BlueFlame is used, WQEs get written directly to a PCI BAR of the
    device (in addition to memory) so that the device handles them without
    having to access memory.
    
    In this test, the WQEs written in memory are different from the ones
    written to the BlueFlame which request CQE update. By checking the
    completion reports posted on CQ, we can know if BlueFlame succeeds or
    not. The write combining must be supported if BlueFlame succeeds as
    its register is written using write combining.
    
    This patch reimplements the test in the same way, but using a pair of
    SQ and CQ only. It is moved to mlx5_core as a general feature used by
    both mlx5_core and mlx5_ib.
    
    Besides, save write combine test result of the PCI function, so that
    its thousands of child functions such as SF can query without paying
    the time and resource penalty by itself. The test function is called
    only after failing to get the cached result. With this enhancement,
    all thousands of SFs of the PF attached to same driver no longer need
    to perform WC check explicitly, which is already done in the system.
    This saves several commands per SF, thereby speeds up SF creation and
    also saves completion EQ creation.
    Signed-off-by: default avatarJianbo Liu <jianbol@nvidia.com>
    Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
    Link: https://lore.kernel.org/r/4ff5a8cc4c5b5b0d98397baa45a5019bcdbf096e.1717409369.git.leon@kernel.orgSigned-off-by: default avatarLeon Romanovsky <leon@kernel.org>
    d98995b4
qp.c 159 KB