diff mbox series

[net] net: stmmac: Fix E2E delay mechanism

Message ID 20211020070433.71398-1-kurt@linutronix.de (mailing list archive)
State Accepted
Commit 3cb958027cb8b78d3ee639ce9af54c2ef1bf964f
Delegated to: Netdev Maintainers
Headers show
Series [net] net: stmmac: Fix E2E delay mechanism | expand

Checks

Context Check Description
netdev/cover_letter success Single patches do not need cover letters
netdev/fixes_present success Fixes tag present in non-next series
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for net
netdev/subject_prefix success Link
netdev/cc_maintainers warning 2 maintainers not CCed: linux-arm-kernel@lists.infradead.org linux-stm32@st-md-mailman.stormreply.com
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Fixes tag looks correct
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 8 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/header_inline success No static functions without inline keyword in header files

Commit Message

Kurt Kanzenbach Oct. 20, 2021, 7:04 a.m. UTC
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 <boon.leong.ong@intel.com>
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

patchwork-bot+netdevbpf@kernel.org Oct. 20, 2021, 1:50 p.m. UTC | #1
Hello:

This patch was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Wed, 20 Oct 2021 09:04:33 +0200 you 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
> 
> [...]

Here is the summary with links:
  - [net] net: stmmac: Fix E2E delay mechanism
    https://git.kernel.org/netdev/net/c/3cb958027cb8

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
Wong Vee Khee Oct. 21, 2021, 6:44 a.m. UTC | #2
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 <boon.leong.ong@intel.com>
> Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
> ---
>  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
Kurt Kanzenbach Oct. 21, 2021, 6:55 a.m. UTC | #3
On Thu Oct 21 2021, Wong Vee Khee wrote:
> This fixes PTPv2 E2E issue on EHL-based boards. Can this also
> be applied to 5.4 and onwards?

I've submitted the patch to net tree (instead of net-next) meaning it
will be picked up for stable kernels automatically.

Thanks,
Kurt
diff mbox series

Patch

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;