IB/mlx5: Fix RSS Toeplitz setup to be aligned with the HW specification [Linux 4.14.137]

This Linux kernel change "IB/mlx5: Fix RSS Toeplitz setup to be aligned with the HW specification" is included in the Linux 4.14.137 release. This change is authored by Yishai Hadas <yishaih [at] mellanox.com> on Tue Jul 23 09:57:29 2019 +0300. The commit for this change in Linux stable tree is d8bd04e (patch) which is from upstream commit b7165bd. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream b7165bd.

IB/mlx5: Fix RSS Toeplitz setup to be aligned with the HW specification

commit b7165bd0d6cbb93732559be6ea8774653b204480 upstream.

The specification for the Toeplitz function doesn't require to set the key
explicitly to be symmetric. In case a symmetric functionality is required
a symmetric key can be simply used.

Wrongly forcing the algorithm to symmetric causes the wrong packet
distribution and a performance degradation.

Link: https://lore.kernel.org/r/20190723065733.4899-7-leon@kernel.org
Cc: <stable@vger.kernel.org> # 4.7
Fixes: 28d6137008b2 ("IB/mlx5: Add RSS QP support")
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Reviewed-by: Alex Vainman <alexv@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

There is one line of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/infiniband/hw/mlx5/qp.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 49251ae..5a7dcb5 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -1425,7 +1425,6 @@ static int create_rss_raw_qp_tir(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
        }

        MLX5_SET(tirc, tirc, rx_hash_fn, MLX5_RX_HASH_FN_TOEPLITZ);
-       MLX5_SET(tirc, tirc, rx_hash_symmetric, 1);
        memcpy(rss_key, ucmd.rx_hash_key, len);
        break;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *