mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
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: Rahul Rameshbabu <rrameshbabu@nvidia.com> Acked-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c3b60ab7a4
commit
67ac72a599
@ -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 s32 mlx5_ptp_getmaxphase(struct ptp_clock_info *ptp)
|
||||||
|
{
|
||||||
|
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_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)
|
static bool mlx5_is_mtutc_time_adj_cap(struct mlx5_core_dev *mdev, s64 delta)
|
||||||
{
|
{
|
||||||
s64 min = MLX5_MTUTC_OPERATION_ADJUST_TIME_MIN;
|
s64 max = mlx5_ptp_getmaxphase(&mdev->clock.ptp_info);
|
||||||
s64 max = MLX5_MTUTC_OPERATION_ADJUST_TIME_MAX;
|
|
||||||
|
|
||||||
if (MLX5_CAP_MCAM_FEATURE(mdev, mtutc_time_adjustment_extended_range)) {
|
if (delta < -max || delta > max)
|
||||||
min = MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MIN;
|
|
||||||
max = MLX5_MTUTC_OPERATION_ADJUST_TIME_EXTENDED_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (delta < min || 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)
|
|||||||
|
|
||||||
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 = {
|
|||||||
.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,
|
||||||
|
Loading…
Reference in New Issue
Block a user