mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping
@ 2024-04-02  7:16 Horatiu Vultur
  2024-04-02  7:55 ` Divya.Koppera
  2024-04-04  2:30 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 3+ messages in thread
From: Horatiu Vultur @ 2024-04-02  7:16 UTC (permalink / raw)
  To: andrew, hkallweit1, linux, davem, edumazet, kuba, pabeni,
	richardcochran, Divya.Koppera
  Cc: netdev, linux-kernel, UNGLinuxDriver, Horatiu Vultur

There are 2 issues with the blamed commit.
1. When the phy is initialized, it would enable the disabled of UDPv4
   checksums. The UDPv6 checksum is already enabled by default. So when
   1-step is configured then it would clear these flags.
2. After the 1-step is configured, then if 2-step is configured then the
   1-step would be still configured because it is not clearing the flag.
   So the sync frames will still have origin timestamps set.

Fix this by reading first the value of the register and then
just change bit 12 as this one determines if the timestamp needs to
be inserted in the frame, without changing any other bits.

Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
---
 drivers/net/phy/micrel.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 8b8634600c519..242f433d9184d 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -2431,6 +2431,7 @@ static int lan8814_hwtstamp(struct mii_timestamper *mii_ts,
 	struct lan8814_ptp_rx_ts *rx_ts, *tmp;
 	int txcfg = 0, rxcfg = 0;
 	int pkt_ts_enable;
+	int tx_mod;
 
 	ptp_priv->hwts_tx_type = config->tx_type;
 	ptp_priv->rx_filter = config->rx_filter;
@@ -2477,9 +2478,14 @@ static int lan8814_hwtstamp(struct mii_timestamper *mii_ts,
 	lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_RX_TIMESTAMP_EN, pkt_ts_enable);
 	lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_TIMESTAMP_EN, pkt_ts_enable);
 
-	if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ONESTEP_SYNC)
+	tx_mod = lanphy_read_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD);
+	if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ONESTEP_SYNC) {
 		lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD,
-				      PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_);
+				      tx_mod | PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_);
+	} else if (ptp_priv->hwts_tx_type == HWTSTAMP_TX_ON) {
+		lanphy_write_page_reg(ptp_priv->phydev, 5, PTP_TX_MOD,
+				      tx_mod & ~PTP_TX_MOD_TX_PTP_SYNC_TS_INSERT_);
+	}
 
 	if (config->rx_filter != HWTSTAMP_FILTER_NONE)
 		lan8814_config_ts_intr(ptp_priv->phydev, true);
-- 
2.34.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping
  2024-04-02  7:16 [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping Horatiu Vultur
@ 2024-04-02  7:55 ` Divya.Koppera
  2024-04-04  2:30 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: Divya.Koppera @ 2024-04-02  7:55 UTC (permalink / raw)
  To: Horatiu.Vultur, andrew, hkallweit1, linux, davem, edumazet, kuba,
	pabeni, richardcochran
  Cc: netdev, linux-kernel, UNGLinuxDriver, Horatiu.Vultur

> There are 2 issues with the blamed commit.
> 1. When the phy is initialized, it would enable the disabled of UDPv4
>    checksums. The UDPv6 checksum is already enabled by default. So when
>    1-step is configured then it would clear these flags.
> 2. After the 1-step is configured, then if 2-step is configured then the
>    1-step would be still configured because it is not clearing the flag.
>    So the sync frames will still have origin timestamps set.
> 
> Fix this by reading first the value of the register and then just change bit 12 as
> this one determines if the timestamp needs to be inserted in the frame,
> without changing any other bits.
> 
> Fixes: ece19502834d ("net: phy: micrel: 1588 support for LAN8814 phy")
> Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
> ---
>  drivers/net/phy/micrel.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)

Reviewed-by: Divya Koppera <divya.koppera@microchip.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping
  2024-04-02  7:16 [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping Horatiu Vultur
  2024-04-02  7:55 ` Divya.Koppera
@ 2024-04-04  2:30 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-04-04  2:30 UTC (permalink / raw)
  To: Horatiu Vultur
  Cc: andrew, hkallweit1, linux, davem, edumazet, kuba, pabeni,
	richardcochran, Divya.Koppera, netdev, linux-kernel,
	UNGLinuxDriver

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 2 Apr 2024 09:16:34 +0200 you wrote:
> There are 2 issues with the blamed commit.
> 1. When the phy is initialized, it would enable the disabled of UDPv4
>    checksums. The UDPv6 checksum is already enabled by default. So when
>    1-step is configured then it would clear these flags.
> 2. After the 1-step is configured, then if 2-step is configured then the
>    1-step would be still configured because it is not clearing the flag.
>    So the sync frames will still have origin timestamps set.
> 
> [...]

Here is the summary with links:
  - [net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping
    https://git.kernel.org/netdev/net/c/de99e1ea3a35

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-04-04  2:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-02  7:16 [PATCH net] net: phy: micrel: lan8814: Fix when enabling/disabling 1-step timestamping Horatiu Vultur
2024-04-02  7:55 ` Divya.Koppera
2024-04-04  2: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

all inboxes | Powered by JetHome®