Skip to content

Commit ed4b066

Browse files
avihai1122rleon
authored andcommitted
RDMA/mlx5: Remove pcie_relaxed_ordering_enabled() check for RO write
pcie_relaxed_ordering_enabled() check was added to avoid a syndrome when creating a MKey with relaxed ordering (RO) enabled when the driver's relaxed_ordering_{read,write} HCA capabilities are out of sync with FW. While this can happen with relaxed_ordering_read, it can't happen with relaxed_ordering_write as it's set if the device supports RO write, regardless of RO in PCI config space, and thus can't change during runtime. Therefore, drop the pcie_relaxed_ordering_enabled() check for relaxed_ordering_write while keeping it for relaxed_ordering_read. Doing so will also allow the usage of RO write in VFs and VMs (where RO in PCI config space is not reported/emulated properly). Signed-off-by: Avihai Horon <avihaih@nvidia.com> Reviewed-by: Shay Drory <shayd@nvidia.com> Link: https://lore.kernel.org/r/7e8f55e31572c1702d69cae015a395d3a824a38a.1681131553.git.leon@kernel.org Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Leon Romanovsky <leon@kernel.org>
1 parent 8d7c7c0 commit ed4b066

3 files changed

Lines changed: 5 additions & 6 deletions

File tree

drivers/infiniband/hw/mlx5/mr.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ static void set_mkc_access_pd_addr_fields(void *mkc, int acc, u64 start_addr,
6767
MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE));
6868
MLX5_SET(mkc, mkc, lr, 1);
6969

70-
if ((acc & IB_ACCESS_RELAXED_ORDERING) &&
71-
pcie_relaxed_ordering_enabled(dev->mdev->pdev)) {
70+
if (acc & IB_ACCESS_RELAXED_ORDERING) {
7271
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write))
7372
MLX5_SET(mkc, mkc, relaxed_ordering_write, 1);
74-
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read))
73+
if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read) &&
74+
pcie_relaxed_ordering_enabled(dev->mdev->pdev))
7575
MLX5_SET(mkc, mkc, relaxed_ordering_read, 1);
7676
}
7777

drivers/net/ethernet/mellanox/mlx5/core/en/params.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -867,8 +867,7 @@ static void mlx5e_build_rx_cq_param(struct mlx5_core_dev *mdev,
867867
static u8 rq_end_pad_mode(struct mlx5_core_dev *mdev, struct mlx5e_params *params)
868868
{
869869
bool lro_en = params->packet_merge.type == MLX5E_PACKET_MERGE_LRO;
870-
bool ro = pcie_relaxed_ordering_enabled(mdev->pdev) &&
871-
MLX5_CAP_GEN(mdev, relaxed_ordering_write);
870+
bool ro = MLX5_CAP_GEN(mdev, relaxed_ordering_write);
872871

873872
return ro && lro_en ?
874873
MLX5_WQ_END_PAD_MODE_NONE : MLX5_WQ_END_PAD_MODE_ALIGN;

drivers/net/ethernet/mellanox/mlx5/core/en_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void mlx5e_mkey_set_relaxed_ordering(struct mlx5_core_dev *mdev, void *mkc)
4444
bool ro_read = MLX5_CAP_GEN(mdev, relaxed_ordering_read);
4545

4646
MLX5_SET(mkc, mkc, relaxed_ordering_read, ro_pci_enable && ro_read);
47-
MLX5_SET(mkc, mkc, relaxed_ordering_write, ro_pci_enable && ro_write);
47+
MLX5_SET(mkc, mkc, relaxed_ordering_write, ro_write);
4848
}
4949

5050
int mlx5e_create_mkey(struct mlx5_core_dev *mdev, u32 pdn, u32 *mkey)

0 commit comments

Comments
 (0)