]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: lan966x: Fix the initialization of taprio
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Fri, 21 Nov 2025 06:14:11 +0000 (07:14 +0100)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 25 Nov 2025 14:45:19 +0000 (15:45 +0100)
To initialize the taprio block in lan966x, it is required to configure
the register REVISIT_DLY. The purpose of this register is to set the
delay before revisit the next gate and the value of this register depends
on the system clock. The problem is that the we calculated wrong the value
of the system clock period in picoseconds. The actual system clock is
~165.617754MHZ and this correspond to a period of 6038 pico seconds and
not 15125 as currently set.

Fixes: e462b2717380b4 ("net: lan966x: Add offload support for taprio")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20251121061411.810571-1-horatiu.vultur@microchip.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/microchip/lan966x/lan966x_ptp.c

index b4377b8613c3a235a16a9a0a986a4fd735438ca7..8c40db90ee8f6466ff457f8f052847e65abac163 100644 (file)
@@ -1,11 +1,14 @@
 // SPDX-License-Identifier: GPL-2.0+
 
 #include <linux/ptp_classify.h>
+#include <linux/units.h>
 
 #include "lan966x_main.h"
 #include "vcap_api.h"
 #include "vcap_api_client.h"
 
+#define LAN9X66_CLOCK_RATE     165617754
+
 #define LAN966X_MAX_PTP_ID     512
 
 /* Represents 1ppm adjustment in 2^59 format with 6.037735849ns as reference
@@ -1126,5 +1129,5 @@ void lan966x_ptp_rxtstamp(struct lan966x *lan966x, struct sk_buff *skb,
 u32 lan966x_ptp_get_period_ps(void)
 {
        /* This represents the system clock period in picoseconds */
-       return 15125;
+       return PICO / LAN9X66_CLOCK_RATE;
 }