mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 18:13:26 -04:00
mlx5_en: use read sequence for gettimex64
The gettimex64() doesn't modify values in timecounter, that's why there is no need to update sequence counter. Reduce the contention on sequence lock for multi-thread PHC reading use-case. Signed-off-by: Vadim Fedorenko <vadfed@meta.com> Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com> Acked-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20241014170103.2473580-1-vadfed@meta.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
ccb35037c4
commit
0452a2d8b8
@@ -402,9 +402,7 @@ static int mlx5_ptp_gettimex(struct ptp_clock_info *ptp, struct timespec64 *ts,
|
||||
struct ptp_system_timestamp *sts)
|
||||
{
|
||||
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;
|
||||
u64 cycles, ns;
|
||||
|
||||
mdev = container_of(clock, struct mlx5_core_dev, clock);
|
||||
@@ -413,10 +411,8 @@ static int mlx5_ptp_gettimex(struct ptp_clock_info *ptp, struct timespec64 *ts,
|
||||
goto out;
|
||||
}
|
||||
|
||||
write_seqlock_irqsave(&clock->lock, flags);
|
||||
cycles = mlx5_read_time(mdev, sts, false);
|
||||
ns = timecounter_cyc2time(&timer->tc, cycles);
|
||||
write_sequnlock_irqrestore(&clock->lock, flags);
|
||||
ns = mlx5_timecounter_cyc2time(clock, cycles);
|
||||
*ts = ns_to_timespec64(ns);
|
||||
out:
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user