* [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
@ 2023-08-01 15:44 Johannes Zink
2023-08-01 15:44 ` [PATCH v3 1/2] " Johannes Zink
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Johannes Zink @ 2023-08-01 15:44 UTC (permalink / raw)
To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin,
Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, Kurt Kanzenbach, kernel test robot,
Johannes Zink
---
Changes in v3:
- work in Richard's review feedback. Thank you for reviewing my patch:
- as some of the hardware may have no or invalid correction value
registers: introduce feature switch which can be enabled in the glue
code drivers depending on the actual hardware support
- only enable the feature on the i.MX8MP for the time being, as the patch
improves timing accuracy and is tested for this hardware
- Link to v2: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
Changes in v2:
- fix builds for 32bit, this was found by the kernel build bot
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@intel.com/
- while at it also fix an overflow by shifting a u32 constant from macro by 10bits
by casting the constant to u64
- Link to v1: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v1-1-768aa4d09334@pengutronix.de
---
Johannes Zink (2):
net: stmmac: correct MAC propagation delay
net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 5 +++
drivers/net/ethernet/stmicro/stmmac/hwif.h | 3 ++
.../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 43 ++++++++++++++++++++++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +++
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 6 +++
include/linux/stmmac.h | 1 +
6 files changed, 64 insertions(+)
---
base-commit: 01e6f8ad8d26ced14b0cf288c42e55d03a7c5070
change-id: 20230719-stmmac_correct_mac_delay-4278cb9d9bc1
Best regards,
--
Johannes Zink <j.zink@pengutronix.de>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3 1/2] net: stmmac: correct MAC propagation delay
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
@ 2023-08-01 15:44 ` Johannes Zink
2023-08-01 15:44 ` [PATCH v3 2/2] net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP Johannes Zink
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Johannes Zink @ 2023-08-01 15:44 UTC (permalink / raw)
To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin,
Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, Kurt Kanzenbach, kernel test robot,
Johannes Zink
The IEEE1588 Standard specifies that the timestamps of Packets must be
captured when the PTP message timestamp point (leading edge of first
octet after the start of frame delimiter) crosses the boundary between
the node and the network. As the MAC latches the timestamp at an
internal point, the captured timestamp must be corrected for the
additional data transmission latency, as described in the publicly
available datasheet [1].
This patch only corrects for the MAC-Internal delay, which can be read
out from the MAC_Ingress_Timestamp_Latency register on DWMAC version 5,
since the Phy framework currently does not support querying the Phy
ingress and egress latency. The Closs Domain Crossing Circuits errors as
indicated in [1] are already being accounted in the
stmmac_get_tx_hwtstamp() function and are not corrected here.
As the Latency varies for different link speeds and MII
modes of operation, the correction value needs to be updated on each
link state change.
As the delay also causes a phase shift in the timestamp counter compared
to the rest of the network, this correction will also reduce phase error
when generating PPS outputs from the timestamp counter.
Since the correction registers may be unavailable on some hardware and
no feature bits are documented for dynamically detection of the MAC
propagation delay readout, introduce a feature bit to explicitely enable
MAC delay Correction in the gluecode driver.
[1] i.MX8MP Reference Manual, rev.1 Section 11.7.2.5.3 "Timestamp
correction"
Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
Link: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
---
Changes in v3:
- worked in Richard's review findings. Thank your for your review:
- don't do the correction unconditionally, since the correction
registers are not guaranteed to be available on any hardware
- refactored function names to better reflect the functionality
- clarified commit message
Changes in v2:
- fix builds for 32bit, this was found by the kernel build bot
Reported-by: kernel test robot <lkp@intel.com>
Closes:
https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@intel.com/
- while at it also fix an overflow by shifting a u32 constant from macro by 10bits
by casting the constant to u64
---
drivers/net/ethernet/stmicro/stmmac/hwif.h | 3 ++
.../net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c | 43 ++++++++++++++++++++++
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +++
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h | 6 +++
include/linux/stmmac.h | 1 +
5 files changed, 59 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ethernet/stmicro/stmmac/hwif.h
index 652af8f6e75f..238f17c50a1e 100644
--- a/drivers/net/ethernet/stmicro/stmmac/hwif.h
+++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h
@@ -532,6 +532,7 @@ struct stmmac_hwtimestamp {
void (*get_systime) (void __iomem *ioaddr, u64 *systime);
void (*get_ptptime)(void __iomem *ioaddr, u64 *ptp_time);
void (*timestamp_interrupt)(struct stmmac_priv *priv);
+ void (*hwtstamp_correct_latency)(struct stmmac_priv *priv);
};
#define stmmac_config_hw_tstamping(__priv, __args...) \
@@ -550,6 +551,8 @@ struct stmmac_hwtimestamp {
stmmac_do_void_callback(__priv, ptp, get_ptptime, __args)
#define stmmac_timestamp_interrupt(__priv, __args...) \
stmmac_do_void_callback(__priv, ptp, timestamp_interrupt, __args)
+#define stmmac_hwtstamp_correct_latency(__priv, __args...) \
+ stmmac_do_void_callback(__priv, ptp, hwtstamp_correct_latency, __args)
struct stmmac_tx_queue;
struct stmmac_rx_queue;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c
index fa2c3ba7e9fe..540f6a4ec0b8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_hwtstamp.c
@@ -60,6 +60,48 @@ static void config_sub_second_increment(void __iomem *ioaddr,
*ssinc = data;
}
+static void hwtstamp_correct_latency(struct stmmac_priv *priv)
+{
+ void __iomem *ioaddr = priv->ptpaddr;
+ u32 reg_tsic, reg_tsicsns;
+ u32 reg_tsec, reg_tsecsns;
+ u64 scaled_ns;
+ u32 val;
+
+ /* MAC-internal ingress latency */
+ scaled_ns = readl(ioaddr + PTP_TS_INGR_LAT);
+
+ /* See section 11.7.2.5.3.1 "Ingress Correction" on page 4001 of
+ * i.MX8MP Applications Processor Reference Manual Rev. 1, 06/2021
+ */
+ val = readl(ioaddr + PTP_TCR);
+ if (val & PTP_TCR_TSCTRLSSR)
+ /* nanoseconds field is in decimal format with granularity of 1ns/bit */
+ scaled_ns = ((u64)NSEC_PER_SEC << 16) - scaled_ns;
+ else
+ /* nanoseconds field is in binary format with granularity of ~0.466ns/bit */
+ scaled_ns = ((1ULL << 31) << 16) -
+ DIV_U64_ROUND_CLOSEST(scaled_ns * PSEC_PER_NSEC, 466U);
+
+ reg_tsic = scaled_ns >> 16;
+ reg_tsicsns = scaled_ns & 0xff00;
+
+ /* set bit 31 for 2's compliment */
+ reg_tsic |= BIT(31);
+
+ writel(reg_tsic, ioaddr + PTP_TS_INGR_CORR_NS);
+ writel(reg_tsicsns, ioaddr + PTP_TS_INGR_CORR_SNS);
+
+ /* MAC-internal egress latency */
+ scaled_ns = readl(ioaddr + PTP_TS_EGR_LAT);
+
+ reg_tsec = scaled_ns >> 16;
+ reg_tsecsns = scaled_ns & 0xff00;
+
+ writel(reg_tsec, ioaddr + PTP_TS_EGR_CORR_NS);
+ writel(reg_tsecsns, ioaddr + PTP_TS_EGR_CORR_SNS);
+}
+
static int init_systime(void __iomem *ioaddr, u32 sec, u32 nsec)
{
u32 value;
@@ -221,4 +263,5 @@ const struct stmmac_hwtimestamp stmmac_ptp = {
.get_systime = get_systime,
.get_ptptime = get_ptptime,
.timestamp_interrupt = timestamp_interrupt,
+ .hwtstamp_correct_latency = hwtstamp_correct_latency,
};
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index e1f1c034d325..99aa5360b3ff 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -909,6 +909,9 @@ static int stmmac_init_ptp(struct stmmac_priv *priv)
priv->hwts_tx_en = 0;
priv->hwts_rx_en = 0;
+ if (priv->plat->flags & STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY)
+ stmmac_hwtstamp_correct_latency(priv, priv);
+
return 0;
}
@@ -1094,6 +1097,9 @@ static void stmmac_mac_link_up(struct phylink_config *config,
if (priv->dma_cap.fpesel)
stmmac_fpe_link_state_handle(priv, true);
+
+ if (priv->plat->flags & STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY)
+ stmmac_hwtstamp_correct_latency(priv, priv);
}
static const struct phylink_mac_ops stmmac_phylink_mac_ops = {
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h
index bf619295d079..d1fe4b46f162 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.h
@@ -26,6 +26,12 @@
#define PTP_ACR 0x40 /* Auxiliary Control Reg */
#define PTP_ATNR 0x48 /* Auxiliary Timestamp - Nanoseconds Reg */
#define PTP_ATSR 0x4c /* Auxiliary Timestamp - Seconds Reg */
+#define PTP_TS_INGR_CORR_NS 0x58 /* Ingress timestamp correction nanoseconds */
+#define PTP_TS_EGR_CORR_NS 0x5C /* Egress timestamp correction nanoseconds*/
+#define PTP_TS_INGR_CORR_SNS 0x60 /* Ingress timestamp correction subnanoseconds */
+#define PTP_TS_EGR_CORR_SNS 0x64 /* Egress timestamp correction subnanoseconds */
+#define PTP_TS_INGR_LAT 0x68 /* MAC internal Ingress Latency */
+#define PTP_TS_EGR_LAT 0x6c /* MAC internal Egress Latency */
#define PTP_STNSUR_ADDSUB_SHIFT 31
#define PTP_DIGITAL_ROLLOVER_MODE 0x3B9ACA00 /* 10e9-1 ns */
diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
index 3d0702510224..652404c03944 100644
--- a/include/linux/stmmac.h
+++ b/include/linux/stmmac.h
@@ -218,6 +218,7 @@ struct dwmac4_addrs {
#define STMMAC_FLAG_INT_SNAPSHOT_EN BIT(9)
#define STMMAC_FLAG_RX_CLK_RUNS_IN_LPI BIT(10)
#define STMMAC_FLAG_EN_TX_LPI_CLOCKGATING BIT(11)
+#define STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY BIT(12)
struct plat_stmmacenet_data {
int bus_id;
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v3 2/2] net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
2023-08-01 15:44 ` [PATCH v3 1/2] " Johannes Zink
@ 2023-08-01 15:44 ` Johannes Zink
2023-08-02 10:10 ` [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Kurt Kanzenbach
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Johannes Zink @ 2023-08-01 15:44 UTC (permalink / raw)
To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin,
Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, Kurt Kanzenbach, kernel test robot,
Johannes Zink
As the i.MX8MP supports reading MAC propagation delay and correcting the
Hardware timestamp counter for additional delays [1], enable the feature
for this SoC.
This reduces phase error of the PPS output from the PTP Hardware Clock
from approx 150ns to 100ns.
[1] i.MX8MP Reference Manual, rev.1 Section 11.7.2.5.3 "Timestamp
correction"
Signed-off-by: Johannes Zink <j.zink@pengutronix.de>
---
drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
index 92e06a96757a..645a9454a490 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c
@@ -42,6 +42,7 @@
struct imx_dwmac_ops {
u32 addr_width;
+ u32 flags;
bool mac_rgmii_txclk_auto_adj;
int (*fix_soc_reset)(void *priv, void __iomem *ioaddr);
@@ -311,6 +312,9 @@ static int imx_dwmac_probe(struct platform_device *pdev)
goto err_parse_dt;
}
+ if (data->flags & STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY)
+ plat_dat->flags |= STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY;
+
plat_dat->host_dma_width = dwmac->ops->addr_width;
plat_dat->init = imx_dwmac_init;
plat_dat->exit = imx_dwmac_exit;
@@ -350,6 +354,7 @@ static struct imx_dwmac_ops imx8mp_dwmac_data = {
.addr_width = 34,
.mac_rgmii_txclk_auto_adj = false,
.set_intf_mode = imx8mp_set_intf_mode,
+ .flags = STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY,
};
static struct imx_dwmac_ops imx8dxl_dwmac_data = {
--
2.39.2
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
2023-08-01 15:44 ` [PATCH v3 1/2] " Johannes Zink
2023-08-01 15:44 ` [PATCH v3 2/2] net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP Johannes Zink
@ 2023-08-02 10:10 ` Kurt Kanzenbach
2023-08-02 10:16 ` Johannes Zink
2023-08-04 20:24 ` Jakub Kicinski
2023-08-07 19:30 ` patchwork-bot+netdevbpf
4 siblings, 1 reply; 9+ messages in thread
From: Kurt Kanzenbach @ 2023-08-02 10:10 UTC (permalink / raw)
To: Johannes Zink, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Maxime Coquelin, Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, kernel test robot, Johannes Zink
[-- Attachment #1.1: Type: text/plain, Size: 2575 bytes --]
On Tue Aug 01 2023, Johannes Zink wrote:
> ---
> Changes in v3:
> - work in Richard's review feedback. Thank you for reviewing my patch:
> - as some of the hardware may have no or invalid correction value
> registers: introduce feature switch which can be enabled in the glue
> code drivers depending on the actual hardware support
> - only enable the feature on the i.MX8MP for the time being, as the patch
> improves timing accuracy and is tested for this hardware
> - Link to v2: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
>
> Changes in v2:
> - fix builds for 32bit, this was found by the kernel build bot
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@intel.com/
> - while at it also fix an overflow by shifting a u32 constant from macro by 10bits
> by casting the constant to u64
> - Link to v1: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v1-1-768aa4d09334@pengutronix.de
>
> ---
> Johannes Zink (2):
> net: stmmac: correct MAC propagation delay
> net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
Tested on imx8mp <-> TSN Switch <-> x86 with i225:
Before your patch:
|ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
|ptp4l[139.274]: rms 9 max 27 freq +29264 +/- 13 delay 347 +/- 2
|ptp4l[171.279]: rms 10 max 24 freq +29257 +/- 13 delay 344 +/- 2
|ptp4l[203.283]: rms 10 max 24 freq +29254 +/- 13 delay 347 +/- 2
|ptp4l[235.288]: rms 9 max 24 freq +29255 +/- 13 delay 346 +/- 1
|ptp4l[267.292]: rms 9 max 28 freq +29257 +/- 13 delay 347 +/- 2
After:
|ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
|ptp4l[214.186]: rms 9 max 29 freq +28868 +/- 16 delay 326 +/- 2
|ptp4l[246.190]: rms 8 max 22 freq +28902 +/- 15 delay 329 +/- 2
|ptp4l[278.194]: rms 9 max 24 freq +28930 +/- 15 delay 325 +/- 1
|ptp4l[310.199]: rms 9 max 25 freq +28956 +/- 15 delay 327 +/- 3
|ptp4l[342.203]: rms 9 max 27 freq +28977 +/- 14 delay 327 +/- 1
And the derived register values:
|[ 15.864016] KURT: PTP_TS_INGR_CORR_NS: 3147483248 PTP_TS_INGR_CORR_SNS: 0
|[ 15.870862] KURT: PTP_TS_EGR_CORR_NS: 400 PTP_TS_EGR_CORR_SNS: 0
|[ 20.000962] KURT: PTP_TS_INGR_CORR_NS: 3147483636 PTP_TS_INGR_CORR_SNS: 0
|[ 20.007809] KURT: PTP_TS_EGR_CORR_NS: 12 PTP_TS_EGR_CORR_SNS: 0
So, seems to work:
Tested-by: Kurt Kanzenbach <kurt@linutronix.de> # imx8mp
Thanks,
Kurt
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-02 10:10 ` [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Kurt Kanzenbach
@ 2023-08-02 10:16 ` Johannes Zink
2023-08-03 10:12 ` Kurt Kanzenbach
0 siblings, 1 reply; 9+ messages in thread
From: Johannes Zink @ 2023-08-02 10:16 UTC (permalink / raw)
To: Kurt Kanzenbach, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Maxime Coquelin, Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, kernel test robot
Hi Kurt,
On 8/2/23 12:10, Kurt Kanzenbach wrote:
> On Tue Aug 01 2023, Johannes Zink wrote:
>> ---
>> Changes in v3:
>> - work in Richard's review feedback. Thank you for reviewing my patch:
>> - as some of the hardware may have no or invalid correction value
>> registers: introduce feature switch which can be enabled in the glue
>> code drivers depending on the actual hardware support
>> - only enable the feature on the i.MX8MP for the time being, as the patch
>> improves timing accuracy and is tested for this hardware
>> - Link to v2: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
>>
>> Changes in v2:
>> - fix builds for 32bit, this was found by the kernel build bot
>> Reported-by: kernel test robot <lkp@intel.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@intel.com/
>> - while at it also fix an overflow by shifting a u32 constant from macro by 10bits
>> by casting the constant to u64
>> - Link to v1: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v1-1-768aa4d09334@pengutronix.de
>>
>> ---
>> Johannes Zink (2):
>> net: stmmac: correct MAC propagation delay
>> net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
>
> Tested on imx8mp <-> TSN Switch <-> x86 with i225:
>
> Before your patch:
>
> |ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
> |ptp4l[139.274]: rms 9 max 27 freq +29264 +/- 13 delay 347 +/- 2
> |ptp4l[171.279]: rms 10 max 24 freq +29257 +/- 13 delay 344 +/- 2
> |ptp4l[203.283]: rms 10 max 24 freq +29254 +/- 13 delay 347 +/- 2
> |ptp4l[235.288]: rms 9 max 24 freq +29255 +/- 13 delay 346 +/- 1
> |ptp4l[267.292]: rms 9 max 28 freq +29257 +/- 13 delay 347 +/- 2
>
> After:
>
> |ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
> |ptp4l[214.186]: rms 9 max 29 freq +28868 +/- 16 delay 326 +/- 2
> |ptp4l[246.190]: rms 8 max 22 freq +28902 +/- 15 delay 329 +/- 2
> |ptp4l[278.194]: rms 9 max 24 freq +28930 +/- 15 delay 325 +/- 1
> |ptp4l[310.199]: rms 9 max 25 freq +28956 +/- 15 delay 327 +/- 3
> |ptp4l[342.203]: rms 9 max 27 freq +28977 +/- 14 delay 327 +/- 1
>
> And the derived register values:
>
> |[ 15.864016] KURT: PTP_TS_INGR_CORR_NS: 3147483248 PTP_TS_INGR_CORR_SNS: 0
> |[ 15.870862] KURT: PTP_TS_EGR_CORR_NS: 400 PTP_TS_EGR_CORR_SNS: 0
> |[ 20.000962] KURT: PTP_TS_INGR_CORR_NS: 3147483636 PTP_TS_INGR_CORR_SNS: 0
> |[ 20.007809] KURT: PTP_TS_EGR_CORR_NS: 12 PTP_TS_EGR_CORR_SNS: 0
>
> So, seems to work:
>
> Tested-by: Kurt Kanzenbach <kurt@linutronix.de> # imx8mp
Thank you for testing!
Johannes
>
> Thanks,
> Kurt
--
Pengutronix e.K. | Johannes Zink |
Steuerwalder Str. 21 | https://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686| Fax: +49-5121-206917-5555 |
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-02 10:16 ` Johannes Zink
@ 2023-08-03 10:12 ` Kurt Kanzenbach
0 siblings, 0 replies; 9+ messages in thread
From: Kurt Kanzenbach @ 2023-08-03 10:12 UTC (permalink / raw)
To: Johannes Zink, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Maxime Coquelin, Richard Cochran, Russell King
Cc: patchwork-jzi, netdev, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, kernel test robot
[-- Attachment #1.1: Type: text/plain, Size: 3095 bytes --]
On Wed Aug 02 2023, Johannes Zink wrote:
> Hi Kurt,
>
> On 8/2/23 12:10, Kurt Kanzenbach wrote:
>> On Tue Aug 01 2023, Johannes Zink wrote:
>>> ---
>>> Changes in v3:
>>> - work in Richard's review feedback. Thank you for reviewing my patch:
>>> - as some of the hardware may have no or invalid correction value
>>> registers: introduce feature switch which can be enabled in the glue
>>> code drivers depending on the actual hardware support
>>> - only enable the feature on the i.MX8MP for the time being, as the patch
>>> improves timing accuracy and is tested for this hardware
>>> - Link to v2: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
>>>
>>> Changes in v2:
>>> - fix builds for 32bit, this was found by the kernel build bot
>>> Reported-by: kernel test robot <lkp@intel.com>
>>> Closes: https://lore.kernel.org/oe-kbuild-all/202307200225.B8rmKQPN-lkp@intel.com/
>>> - while at it also fix an overflow by shifting a u32 constant from macro by 10bits
>>> by casting the constant to u64
>>> - Link to v1: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v1-1-768aa4d09334@pengutronix.de
>>>
>>> ---
>>> Johannes Zink (2):
>>> net: stmmac: correct MAC propagation delay
>>> net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
>>
>> Tested on imx8mp <-> TSN Switch <-> x86 with i225:
>>
>> Before your patch:
>>
>> |ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
>> |ptp4l[139.274]: rms 9 max 27 freq +29264 +/- 13 delay 347 +/- 2
>> |ptp4l[171.279]: rms 10 max 24 freq +29257 +/- 13 delay 344 +/- 2
>> |ptp4l[203.283]: rms 10 max 24 freq +29254 +/- 13 delay 347 +/- 2
>> |ptp4l[235.288]: rms 9 max 24 freq +29255 +/- 13 delay 346 +/- 1
>> |ptp4l[267.292]: rms 9 max 28 freq +29257 +/- 13 delay 347 +/- 2
>>
>> After:
>>
>> |ptp4l -i eth0 -f configs/gPTP.cfg --summary_interval=5 -m
>> |ptp4l[214.186]: rms 9 max 29 freq +28868 +/- 16 delay 326 +/- 2
>> |ptp4l[246.190]: rms 8 max 22 freq +28902 +/- 15 delay 329 +/- 2
>> |ptp4l[278.194]: rms 9 max 24 freq +28930 +/- 15 delay 325 +/- 1
>> |ptp4l[310.199]: rms 9 max 25 freq +28956 +/- 15 delay 327 +/- 3
>> |ptp4l[342.203]: rms 9 max 27 freq +28977 +/- 14 delay 327 +/- 1
>>
>> And the derived register values:
>>
>> |[ 15.864016] KURT: PTP_TS_INGR_CORR_NS: 3147483248 PTP_TS_INGR_CORR_SNS: 0
>> |[ 15.870862] KURT: PTP_TS_EGR_CORR_NS: 400 PTP_TS_EGR_CORR_SNS: 0
>> |[ 20.000962] KURT: PTP_TS_INGR_CORR_NS: 3147483636 PTP_TS_INGR_CORR_SNS: 0
>> |[ 20.007809] KURT: PTP_TS_EGR_CORR_NS: 12 PTP_TS_EGR_CORR_SNS: 0
>>
>> So, seems to work:
>>
>> Tested-by: Kurt Kanzenbach <kurt@linutronix.de> # imx8mp
>
> Thank you for testing!
> Johannes
AFAICT from the manuals the MAC propagation delay should be corrected
for the Intel TSN NIC(s) as well. I'll follow up with testing and a
patch when this set is merged.
Thanks,
Kurt
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
` (2 preceding siblings ...)
2023-08-02 10:10 ` [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Kurt Kanzenbach
@ 2023-08-04 20:24 ` Jakub Kicinski
2023-08-05 15:04 ` Richard Cochran
2023-08-07 19:30 ` patchwork-bot+netdevbpf
4 siblings, 1 reply; 9+ messages in thread
From: Jakub Kicinski @ 2023-08-04 20:24 UTC (permalink / raw)
To: Richard Cochran
Cc: Johannes Zink, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Paolo Abeni, Maxime Coquelin,
Russell King, patchwork-jzi, netdev, linux-stm32,
linux-arm-kernel, linux-kernel, kernel, Kurt Kanzenbach,
kernel test robot
On Tue, 01 Aug 2023 17:44:28 +0200 Johannes Zink wrote:
> ---
Richard? Sure would be nice to have an official ack from you on this
one so I don't have to revert it again ;)
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-04 20:24 ` Jakub Kicinski
@ 2023-08-05 15:04 ` Richard Cochran
0 siblings, 0 replies; 9+ messages in thread
From: Richard Cochran @ 2023-08-05 15:04 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Johannes Zink, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S. Miller, Eric Dumazet, Paolo Abeni, Maxime Coquelin,
Russell King, patchwork-jzi, netdev, linux-stm32,
linux-arm-kernel, linux-kernel, kernel, Kurt Kanzenbach,
kernel test robot
On Fri, Aug 04, 2023 at 01:24:03PM -0700, Jakub Kicinski wrote:
> Richard? Sure would be nice to have an official ack from you on this
> one so I don't have to revert it again ;)
No objections to this version, as the correction is behind a feature
flag that is opt-in per device flavor.
Thanks,
Richard
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/2] net: stmmac: correct MAC propagation delay
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
` (3 preceding siblings ...)
2023-08-04 20:24 ` Jakub Kicinski
@ 2023-08-07 19:30 ` patchwork-bot+netdevbpf
4 siblings, 0 replies; 9+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-08-07 19:30 UTC (permalink / raw)
To: Johannes Zink
Cc: peppe.cavallaro, alexandre.torgue, joabreu, davem, edumazet, kuba,
pabeni, mcoquelin.stm32, richardcochran, linux, patchwork-jzi,
netdev, linux-stm32, linux-arm-kernel, linux-kernel, kernel, kurt,
lkp
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Tue, 01 Aug 2023 17:44:28 +0200 you wrote:
> ---
> Changes in v3:
> - work in Richard's review feedback. Thank you for reviewing my patch:
> - as some of the hardware may have no or invalid correction value
> registers: introduce feature switch which can be enabled in the glue
> code drivers depending on the actual hardware support
> - only enable the feature on the i.MX8MP for the time being, as the patch
> improves timing accuracy and is tested for this hardware
> - Link to v2: https://lore.kernel.org/r/20230719-stmmac_correct_mac_delay-v2-1-3366f38ee9a6@pengutronix.de
>
> [...]
Here is the summary with links:
- [v3,1/2] net: stmmac: correct MAC propagation delay
https://git.kernel.org/netdev/net-next/c/26cfb838aa00
- [v3,2/2] net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP
https://git.kernel.org/netdev/net-next/c/6cb2e613c796
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-08-07 19:30 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-01 15:44 [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Johannes Zink
2023-08-01 15:44 ` [PATCH v3 1/2] " Johannes Zink
2023-08-01 15:44 ` [PATCH v3 2/2] net: stmmac: dwmac-imx: enable MAC propagation delay correction for i.MX8MP Johannes Zink
2023-08-02 10:10 ` [PATCH v3 0/2] net: stmmac: correct MAC propagation delay Kurt Kanzenbach
2023-08-02 10:16 ` Johannes Zink
2023-08-03 10:12 ` Kurt Kanzenbach
2023-08-04 20:24 ` Jakub Kicinski
2023-08-05 15:04 ` Richard Cochran
2023-08-07 19:30 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).