Patch "RDMA/mlx5: Use sq timestamp as QP timestamp when RoCE is disabled" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RDMA/mlx5: Use sq timestamp as QP timestamp when RoCE is disabled

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rdma-mlx5-use-sq-timestamp-as-qp-timestamp-when-roce.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit fa82647de2b90422e05e63422314a440e174e420
Author: Or Har-Toov <ohartoov@xxxxxxxxxx>
Date:   Sun Jun 16 19:10:36 2024 +0300

    RDMA/mlx5: Use sq timestamp as QP timestamp when RoCE is disabled
    
    [ Upstream commit 0c5275bf75ec3708d95654195ae4ed80d946d088 ]
    
    When creating a QP, one of the attributes is TS format (timestamp).
    In some devices, we have a limitation that all QPs should have the same
    ts_format. The ts_format is chosen based on the device's capability.
    The qp_ts_format cap resides under the RoCE caps table, and the
    cap will be 0 when RoCE is disabled. So when RoCE is disabled, the
    value that should be queried is sq_ts_format under HCA caps.
    
    Consider the case when the system supports REAL_TIME_TS format (0x2),
    some QPs are created with REAL_TIME_TS as ts_format, and afterwards
    RoCE gets disabled. When trying to construct a new QP, we can't use
    the qp_ts_format, that is queried from the RoCE caps table, Since it
    leads to passing 0x0 (FREE_RUNNING_TS) as the value of the qp_ts_format,
    which is different than the ts_format of the previously allocated
    QPs REAL_TIME_TS format (0x2).
    
    Thus, to resolve this, read the sq_ts_format, which also reflect
    the supported ts format for the QP when RoCE is disabled.
    
    Fixes: 4806f1e2fee8 ("net/mlx5: Set QP timestamp mode to default")
    Signed-off-by: Maher Sanalla <msanalla@xxxxxxxxxx>
    Signed-off-by: Or Har-Toov <ohartoov@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/32801966eb767c7fd62b8dea3b63991d5fbfe213.1718554199.git.leon@xxxxxxxxxx
    Reviewed-by: Simon Horman <horms@xxxxxxxxxx>
    Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx>
    Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/mlx5/qp.h b/include/linux/mlx5/qp.h
index f0e55bf3ec8b5..ad1ce650146cb 100644
--- a/include/linux/mlx5/qp.h
+++ b/include/linux/mlx5/qp.h
@@ -576,9 +576,12 @@ static inline const char *mlx5_qp_state_str(int state)
 
 static inline int mlx5_get_qp_default_ts(struct mlx5_core_dev *dev)
 {
-	return !MLX5_CAP_ROCE(dev, qp_ts_format) ?
-		       MLX5_TIMESTAMP_FORMAT_FREE_RUNNING :
-		       MLX5_TIMESTAMP_FORMAT_DEFAULT;
+	u8 supported_ts_cap = mlx5_get_roce_state(dev) ?
+			      MLX5_CAP_ROCE(dev, qp_ts_format) :
+			      MLX5_CAP_GEN(dev, sq_ts_format);
+
+	return supported_ts_cap ? MLX5_TIMESTAMP_FORMAT_DEFAULT :
+	       MLX5_TIMESTAMP_FORMAT_FREE_RUNNING;
 }
 
 #endif /* MLX5_QP_H */




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux