net/mlx5: Add helper functions for PTP callbacks
authorJianbo Liu <jianbol@nvidia.com>
Mon, 3 Feb 2025 21:35:02 +0000 (23:35 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 6 Feb 2025 09:14:00 +0000 (10:14 +0100)
The PTP callback functions should not be used directly by internal
callers. Add helpers that can be used internally and externally.

Signed-off-by: Jianbo Liu <jianbol@nvidia.com>
Reviewed-by: Carolina Jubran <cjubran@nvidia.com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c

index d61a1a9297c904f1184c601ea676f64617791b68..eaf3437560267db166279a86b9d592e4ebfc7709 100644 (file)
@@ -119,6 +119,13 @@ static u32 mlx5_ptp_shift_constant(u32 dev_freq_khz)
                   ilog2((U32_MAX / NSEC_PER_MSEC) * dev_freq_khz));
 }
 
+static s32 mlx5_clock_getmaxphase(struct mlx5_core_dev *mdev)
+{
+       return MLX5_CAP_MCAM_FEATURE(mdev, mtutc_time_adjustment_extended_range) ?
+                      MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MAX :
+                            MLX5_MTUTC_OPERATION_ADJUST_TIME_MAX;
+}
+
 static s32 mlx5_ptp_getmaxphase(struct ptp_clock_info *ptp)
 {
        struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock, ptp_info);
@@ -126,14 +133,12 @@ static s32 mlx5_ptp_getmaxphase(struct ptp_clock_info *ptp)
 
        mdev = container_of(clock, struct mlx5_core_dev, clock);
 
-       return MLX5_CAP_MCAM_FEATURE(mdev, mtutc_time_adjustment_extended_range) ?
-                      MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MAX :
-                            MLX5_MTUTC_OPERATION_ADJUST_TIME_MAX;
+       return mlx5_clock_getmaxphase(mdev);
 }
 
 static bool mlx5_is_mtutc_time_adj_cap(struct mlx5_core_dev *mdev, s64 delta)
 {
-       s64 max = mlx5_ptp_getmaxphase(&mdev->clock.ptp_info);
+       s64 max = mlx5_clock_getmaxphase(mdev);
 
        if (delta < -max || delta > max)
                return false;
@@ -361,15 +366,12 @@ static int mlx5_ptp_settime_real_time(struct mlx5_core_dev *mdev,
        return mlx5_set_mtutc(mdev, in, sizeof(in));
 }
 
-static int mlx5_ptp_settime(struct ptp_clock_info *ptp, const struct timespec64 *ts)
+static int mlx5_clock_settime(struct mlx5_core_dev *mdev, struct mlx5_clock *clock,
+                             const struct timespec64 *ts)
 {
-       struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock, ptp_info);
        struct mlx5_timer *timer = &clock->timer;
-       struct mlx5_core_dev *mdev;
        unsigned long flags;
 
-       mdev = container_of(clock, struct mlx5_core_dev, clock);
-
        if (mlx5_modify_mtutc_allowed(mdev)) {
                int err = mlx5_ptp_settime_real_time(mdev, ts);
 
@@ -385,6 +387,16 @@ static int mlx5_ptp_settime(struct ptp_clock_info *ptp, const struct timespec64
        return 0;
 }
 
+static int mlx5_ptp_settime(struct ptp_clock_info *ptp, const struct timespec64 *ts)
+{
+       struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock, ptp_info);
+       struct mlx5_core_dev *mdev;
+
+       mdev = container_of(clock, struct mlx5_core_dev, clock);
+
+       return  mlx5_clock_settime(mdev, clock, ts);
+}
+
 static
 struct timespec64 mlx5_ptp_gettimex_real_time(struct mlx5_core_dev *mdev,
                                              struct ptp_system_timestamp *sts)
@@ -1129,7 +1141,7 @@ static void mlx5_init_timer_clock(struct mlx5_core_dev *mdev)
                struct timespec64 ts;
 
                ktime_get_real_ts64(&ts);
-               mlx5_ptp_settime(&clock->ptp_info, &ts);
+               mlx5_clock_settime(mdev, clock, &ts);
        }
 }