diff options
author | Vadim Fedorenko <vadfed@meta.com> | 2024-10-14 10:01:03 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-11-05 15:47:14 -0800 |
commit | 0452a2d8b8b98a5b1a9139c1a9ed98bccee356cc (patch) | |
tree | c0c9ef8bcb69b4cc19413f86fd0c655e137aebf3 /drivers/net/ethernet/mellanox/mlx5/core | |
parent | ccb35037c48a16dfa377e3af3be2c164e73d54f0 (diff) | |
download | linux-stable-0452a2d8b8b98a5b1a9139c1a9ed98bccee356cc.tar.gz linux-stable-0452a2d8b8b98a5b1a9139c1a9ed98bccee356cc.tar.bz2 linux-stable-0452a2d8b8b98a5b1a9139c1a9ed98bccee356cc.zip |
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>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c index b306ae79bf97..4822d01123b4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/clock.c @@ -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; |