Takashi Iwai 6450a2
From ebd0edad1cdfc0cee05632ca032b4a36f54356bf Mon Sep 17 00:00:00 2001
Takashi Iwai 6450a2
From: Patrisious Haddad <phaddad@nvidia.com>
Takashi Iwai 6450a2
Date: Wed, 6 Oct 2021 12:31:53 +0300
Takashi Iwai 6450a2
Subject: [PATCH] RDMA/mlx5: Set user priority for DCT
Takashi Iwai 6450a2
Git-commit: 1ab52ac1e9bc9391f592c9fa8340a6e3e9c36286
Takashi Iwai 6450a2
Patch-mainline: v5.15
Takashi Iwai 6450a2
References: stable-5.14.16
Takashi Iwai 6450a2
Takashi Iwai 6450a2
commit 1ab52ac1e9bc9391f592c9fa8340a6e3e9c36286 upstream.
Takashi Iwai 6450a2
Takashi Iwai 6450a2
Currently, the driver doesn't set the PCP-based priority for DCT, hence
Takashi Iwai 6450a2
DCT response packets are transmitted without user priority.
Takashi Iwai 6450a2
Takashi Iwai 6450a2
Fix it by setting user provided priority in the eth_prio field in the DCT
Takashi Iwai 6450a2
context, which in turn sets the value in the transmitted packet.
Takashi Iwai 6450a2
Takashi Iwai 6450a2
Fixes: 776a3906b692 ("IB/mlx5: Add support for DC target QP")
Takashi Iwai 6450a2
Link: https://lore.kernel.org/r/5fd2d94a13f5742d8803c218927322257d53205c.1633512672.git.leonro@nvidia.com
Takashi Iwai 6450a2
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
Takashi Iwai 6450a2
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Takashi Iwai 6450a2
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Takashi Iwai 6450a2
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Takashi Iwai 6450a2
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Takashi Iwai 6450a2
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 6450a2
Takashi Iwai 6450a2
---
Takashi Iwai 6450a2
 drivers/infiniband/hw/mlx5/qp.c | 2 ++
Takashi Iwai 6450a2
 1 file changed, 2 insertions(+)
Takashi Iwai 6450a2
Takashi Iwai 6450a2
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
Takashi Iwai 6450a2
index fd88b9ae96fe..80d989edb7dd 100644
Takashi Iwai 6450a2
--- a/drivers/infiniband/hw/mlx5/qp.c
Takashi Iwai 6450a2
+++ b/drivers/infiniband/hw/mlx5/qp.c
Takashi Iwai 6450a2
@@ -4309,6 +4309,8 @@ static int mlx5_ib_modify_dct(struct ib_qp *ibqp, struct ib_qp_attr *attr,
Takashi Iwai 6450a2
 		MLX5_SET(dctc, dctc, mtu, attr->path_mtu);
Takashi Iwai 6450a2
 		MLX5_SET(dctc, dctc, my_addr_index, attr->ah_attr.grh.sgid_index);
Takashi Iwai 6450a2
 		MLX5_SET(dctc, dctc, hop_limit, attr->ah_attr.grh.hop_limit);
Takashi Iwai 6450a2
+		if (attr->ah_attr.type == RDMA_AH_ATTR_TYPE_ROCE)
Takashi Iwai 6450a2
+			MLX5_SET(dctc, dctc, eth_prio, attr->ah_attr.sl & 0x7);
Takashi Iwai 6450a2
 
Takashi Iwai 6450a2
 		err = mlx5_core_create_dct(dev, &qp->dct.mdct, qp->dct.in,
Takashi Iwai 6450a2
 					   MLX5_ST_SZ_BYTES(create_dct_in), out,
Takashi Iwai 6450a2
-- 
Takashi Iwai 6450a2
2.26.2
Takashi Iwai 6450a2