Subject: Re: [PATCH net] net: stmmac: Fix E2E delay mechanism

From: Wong Vee Khee <[email-masked]>
Date: Thu, 21 Oct 2021 14:44:38 +0800

On Wed, Oct 20, 2021 at 09:04:33AM +0200, Kurt Kanzenbach wrote:
> When utilizing End to End delay mechanism, the following error messages show up:
> 
> |root@ehl1:~# ptp4l --tx_timestamp_timeout=50 -H -i eno2 -E -m
> |ptp4l[950.573]: selected /dev/ptp3 as PTP clock
> |ptp4l[950.586]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
> |ptp4l[950.586]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
> |ptp4l[952.879]: port 1: new foreign master 001395.fffe.4897b4-1
> |ptp4l[956.879]: selected best master clock 001395.fffe.4897b4
> |ptp4l[956.879]: port 1: assuming the grand master role
> |ptp4l[956.879]: port 1: LISTENING to GRAND_MASTER on RS_GRAND_MASTER
> |ptp4l[962.017]: port 1: received DELAY_REQ without timestamp
> |ptp4l[962.273]: port 1: received DELAY_REQ without timestamp
> |ptp4l[963.090]: port 1: received DELAY_REQ without timestamp
> 
> Commit f2fb6b6275eb ("net: stmmac: enable timestamp snapshot for required PTP
> packets in dwmac v5.10a") already addresses this problem for the dwmac
> v5.10. However, same holds true for all dwmacs above version v4.10. Correct the
> check accordingly. Afterwards everything works as expected.
> 
> Tested on Intel Atom(R) x6414RE Processor.
> 
> Fixes: 14f347334bf2 ("net: stmmac: Correctly take timestamp for PTPv2")
> Fixes: f2fb6b6275eb ("net: stmmac: enable timestamp snapshot for required PTP packets in dwmac v5.10a")
> Suggested-by: Ong Boon Leong <[email-masked]>
> Signed-off-by: Kurt Kanzenbach <[email-masked]>
> ---
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index eb3b7bf771d7..3d67d1fa3690 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -736,7 +736,7 @@ static int stmmac_hwtstamp_set(struct net_device *dev, struct ifreq *ifr)
>  			config.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
>  			ptp_v2 = PTP_TCR_TSVER2ENA;
>  			snap_type_sel = PTP_TCR_SNAPTYPSEL_1;
> -			if (priv->synopsys_id != DWMAC_CORE_5_10)
> +			if (priv->synopsys_id < DWMAC_CORE_4_10)
>  				ts_event_en = PTP_TCR_TSEVNTENA;
>  			ptp_over_ipv4_udp = PTP_TCR_TSIPV4ENA;
>  			ptp_over_ipv6_udp = PTP_TCR_TSIPV6ENA;

This fixes PTPv2 E2E issue on EHL-based boards. Can this also
be applied to 5.4 and onwards?

Thanks,
Vee Khee