Commit 67ac72a5 authored by Rahul Rameshbabu's avatar Rahul Rameshbabu Committed by David S. Miller

net/mlx5: Add .getmaxphase ptp_clock_info callback

Implement .getmaxphase callback of ptp_clock_info in mlx5 driver. No longer
do a range check in .adjphase callback implementation. Handled by the ptp
stack.

Cc: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: default avatarRahul Rameshbabu <rrameshbabu@nvidia.com>
Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c3b60ab7
...@@ -93,17 +93,23 @@ static bool mlx5_modify_mtutc_allowed(struct mlx5_core_dev *mdev) ...@@ -93,17 +93,23 @@ static bool mlx5_modify_mtutc_allowed(struct mlx5_core_dev *mdev)
return MLX5_CAP_MCAM_FEATURE(mdev, ptpcyc2realtime_modify); return MLX5_CAP_MCAM_FEATURE(mdev, ptpcyc2realtime_modify);
} }
static bool mlx5_is_mtutc_time_adj_cap(struct mlx5_core_dev *mdev, s64 delta) static s32 mlx5_ptp_getmaxphase(struct ptp_clock_info *ptp)
{ {
s64 min = MLX5_MTUTC_OPERATION_ADJUST_TIME_MIN; struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock, ptp_info);
s64 max = MLX5_MTUTC_OPERATION_ADJUST_TIME_MAX; struct mlx5_core_dev *mdev;
if (MLX5_CAP_MCAM_FEATURE(mdev, mtutc_time_adjustment_extended_range)) { mdev = container_of(clock, struct mlx5_core_dev, clock);
min = MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MIN;
max = MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MAX; 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 bool mlx5_is_mtutc_time_adj_cap(struct mlx5_core_dev *mdev, s64 delta)
{
s64 max = mlx5_ptp_getmaxphase(&mdev->clock.ptp_info);
if (delta < min || delta > max) if (delta < -max || delta > max)
return false; return false;
return true; return true;
...@@ -351,14 +357,6 @@ static int mlx5_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta) ...@@ -351,14 +357,6 @@ static int mlx5_ptp_adjtime(struct ptp_clock_info *ptp, s64 delta)
static int mlx5_ptp_adjphase(struct ptp_clock_info *ptp, s32 delta) static int mlx5_ptp_adjphase(struct ptp_clock_info *ptp, s32 delta)
{ {
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);
if (!mlx5_is_mtutc_time_adj_cap(mdev, delta))
return -ERANGE;
return mlx5_ptp_adjtime(ptp, delta); return mlx5_ptp_adjtime(ptp, delta);
} }
...@@ -734,6 +732,7 @@ static const struct ptp_clock_info mlx5_ptp_clock_info = { ...@@ -734,6 +732,7 @@ static const struct ptp_clock_info mlx5_ptp_clock_info = {
.pps = 0, .pps = 0,
.adjfine = mlx5_ptp_adjfine, .adjfine = mlx5_ptp_adjfine,
.adjphase = mlx5_ptp_adjphase, .adjphase = mlx5_ptp_adjphase,
.getmaxphase = mlx5_ptp_getmaxphase,
.adjtime = mlx5_ptp_adjtime, .adjtime = mlx5_ptp_adjtime,
.gettimex64 = mlx5_ptp_gettimex, .gettimex64 = mlx5_ptp_gettimex,
.settime64 = mlx5_ptp_settime, .settime64 = mlx5_ptp_settime,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment