Linux Documentation
 help / color / mirror / Atom feed
From: Kory Maincent <kory.maincent@bootlin.com>
To: Jacob Keller <jacob.e.keller@intel.com>
Cc: Florian Fainelli <florian.fainelli@broadcom.com>,
	Broadcom internal kernel review list
	<bcm-kernel-feedback-list@broadcom.com>,
	Andrew Lunn <andrew@lunn.ch>,
	"Heiner Kallweit" <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Richard Cochran <richardcochran@gmail.com>,
	Radu Pirea <radu-nicolae.pirea@oss.nxp.com>,
	"Jay Vosburgh" <j.vosburgh@gmail.com>,
	Andy Gospodarek <andy@greyhouse.net>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Claudiu Beznea <claudiu.beznea@tuxon.dev>,
	Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	Jonathan Corbet <corbet@lwn.net>,
	"Horatiu Vultur" <horatiu.vultur@microchip.com>,
	<UNGLinuxDriver@microchip.com>, "Simon Horman" <horms@kernel.org>,
	Vladimir Oltean <vladimir.oltean@nxp.com>,
	<donald.hunter@gmail.com>, <danieller@nvidia.com>,
	<ecree.xilinx@gmail.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	<linux-kernel@vger.kernel.org>, <netdev@vger.kernel.org>,
	<linux-doc@vger.kernel.org>,
	Maxime Chevallier <maxime.chevallier@bootlin.com>,
	Rahul Rameshbabu <rrameshbabu@nvidia.com>,
	Willem de Bruijn <willemb@google.com>,
	Shannon Nelson <shannon.nelson@amd.com>,
	Alexandra Winter <wintera@linux.ibm.com>
Subject: Re: [PATCH net-next v17 04/14] net: Change the API of PHY default timestamp to MAC
Date: Sat, 27 Jul 2024 15:44:26 +0200	[thread overview]
Message-ID: <20240727154426.7ba30ed9@kmaincent-XPS-13-7390> (raw)
In-Reply-To: <39c7fe45-fbee-4de5-ab43-bf042ed31504@intel.com>

On Mon, 15 Jul 2024 16:37:01 -0700
Jacob Keller <jacob.e.keller@intel.com> wrote:

> On 7/9/2024 6:53 AM, Kory Maincent wrote:
> > Change the API to select MAC default time stamping instead of the PHY.
> > Indeed the PHY is closer to the wire therefore theoretically it has less
> > delay than the MAC timestamping but the reality is different. Due to lower
> > time stamping clock frequency, latency in the MDIO bus and no PHC hardware
> > synchronization between different PHY, the PHY PTP is often less precise
> > than the MAC. The exception is for PHY designed specially for PTP case but
> > these devices are not very widespread. For not breaking the compatibility
> > default_timestamp flag has been introduced in phy_device that is set by
> > the phy driver to know we are using the old API behavior.
> >   
> 
> This description feels like it is making a pretty broad generalization
> about devices. The specifics of whether MAC or PHY timestamping is
> better will be device dependent.

As explained, except for specific PTP specialized PHY, the MAC is better in
term of PTP precision.
This patch was a requisite from Russell, who wanted to add support for the PTP
in the marvell PHY. Doing so would select the PHY PTP by default which cause a
regression as the PHY hardware timestamp is less precise than the MAC.
https://lore.kernel.org/netdev/20200729105807.GZ1551@shell.armlinux.org.uk/
https://lore.kernel.org/netdev/Y%2F4DZIDm1d74MuFJ@shell.armlinux.org.uk/
There is also discussion on how to support it in older version of this series.
 
> It looks like you introduce a default_timestamp flag to ensure existing
> devices default to PHY? I assume your goal here is to discourage this
> and not allow setting it for new devices? Or do we want to let device
> driver authors decide which is a better default?

Yes to not change the old behavior the current PHY with PTP support will still
behave as default PTP. The point is indeed to discourage future drivers to
select the PHY as default PTP.

> > Reviewed-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
> > Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>  
> 
> Overall this makes sense, with a couple questions I had during review.
> 
> Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
> 
> > ---
> > diff --git a/include/linux/phy.h b/include/linux/phy.h
> > index bd68f9d8e74f..e7a38137211c 100644
> > --- a/include/linux/phy.h
> > +++ b/include/linux/phy.h
> > @@ -616,6 +616,8 @@ struct macsec_ops;
> >   *                 handling shall be postponed until PHY has resumed
> >   * @irq_rerun: Flag indicating interrupts occurred while PHY was suspended,
> >   *             requiring a rerun of the interrupt handler after resume
> > + * @default_timestamp: Flag indicating whether we are using the phy
> > + *		       timestamp as the default one  
> 
> This is clearly intended to ensure existing drivers maintain legacy
> behavior. But what is our policy going forward for new devices? Do we
> want to leave it up to PHY driver authors?

Yes, new devices should not set this flag.

> > diff --git a/net/core/timestamping.c b/net/core/timestamping.c
> > index 04840697fe79..3717fb152ecc 100644
> > --- a/net/core/timestamping.c
> > +++ b/net/core/timestamping.c
> > @@ -25,7 +25,8 @@ void skb_clone_tx_timestamp(struct sk_buff *skb)
> >  	struct sk_buff *clone;
> >  	unsigned int type;
> >  
> > -	if (!skb->sk)
> > +	if (!skb->sk || !skb->dev ||
> > +	    !phy_is_default_hwtstamp(skb->dev->phydev))  
> 
> I don't follow why this check is added and its not calling something
> like "phy_is_current_hwtstamp"? I guess because we don't yet have a way
> to select between MAC/PHY at this point in the series? Ok.

skb_clone_tx_timestamp is only used for PHY timestamping so we should do nothing
if the default PTP is the MAC.

Regards,
-- 
Köry Maincent, Bootlin
Embedded Linux and kernel engineering
https://bootlin.com

  reply	other threads:[~2024-07-27 13:44 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-09 13:53 [PATCH net-next v17 00/14] net: Make timestamping selectable Kory Maincent
2024-07-09 13:53 ` [PATCH net-next v17 01/14] net_tstamp: Add TIMESTAMPING SOFTWARE and HARDWARE mask Kory Maincent
2024-07-15 23:28   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 02/14] net: Make dev_get_hwtstamp_phylib accessible Kory Maincent
2024-07-15 23:29   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 03/14] net: Make net_hwtstamp_validate accessible Kory Maincent
2024-07-15 23:30   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 04/14] net: Change the API of PHY default timestamp to MAC Kory Maincent
2024-07-15 23:37   ` Jacob Keller
2024-07-27 13:44     ` Kory Maincent [this message]
2024-07-29 18:08       ` Jacob Keller
2024-09-25 12:46         ` Kory Maincent
2024-07-09 13:53 ` [PATCH net-next v17 05/14] net: net_tstamp: Add unspec field to hwtstamp_source enumeration Kory Maincent
2024-07-15 23:37   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 06/14] net: Add struct kernel_ethtool_ts_info Kory Maincent
2024-07-15 23:41   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 07/14] ptp: Add phc source and helpers to register specific PTP clock or get information Kory Maincent
2024-07-15 23:44   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 08/14] net: Add the possibility to support a selected hwtstamp in netdevice Kory Maincent
2024-07-17 17:22   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 09/14] net: netdevsim: ptp_mock: Convert to netdev_ptp_clock_register Kory Maincent
2024-07-17 17:23   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 10/14] net: macb: " Kory Maincent
2024-07-17 17:24   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 11/14] net: ptp: Move ptp_clock_index() to builtin symbol Kory Maincent
2024-07-17 17:24   ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 12/14] net: ethtool: tsinfo: Add support for reading tsinfo for a specific hwtstamp provider Kory Maincent
2024-07-17 17:35   ` Jacob Keller
2024-07-26 19:04     ` Kory Maincent
2024-07-29 17:58       ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 13/14] net: ethtool: Add support for tsconfig command to get/set hwtstamp config Kory Maincent
2024-07-15 14:59   ` Jakub Kicinski
2024-09-26  8:47     ` Kory Maincent
2024-07-17 17:43   ` Jacob Keller
2024-07-27 13:00     ` Kory Maincent
2024-07-29 18:02       ` Jacob Keller
2024-07-09 13:53 ` [PATCH net-next v17 14/14] netlink: specs: Enhance tsinfo netlink attributes and add a tsconfig set command Kory Maincent
2024-07-17 17:44   ` Jacob Keller
2024-07-15 15:30 ` [PATCH net-next v17 00/14] net: Make timestamping selectable patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240727154426.7ba30ed9@kmaincent-XPS-13-7390 \
    --to=kory.maincent@bootlin.com \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=andy@greyhouse.net \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=corbet@lwn.net \
    --cc=danieller@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=donald.hunter@gmail.com \
    --cc=ecree.xilinx@gmail.com \
    --cc=edumazet@google.com \
    --cc=florian.fainelli@broadcom.com \
    --cc=hkallweit1@gmail.com \
    --cc=horatiu.vultur@microchip.com \
    --cc=horms@kernel.org \
    --cc=j.vosburgh@gmail.com \
    --cc=jacob.e.keller@intel.com \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=maxime.chevallier@bootlin.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=pabeni@redhat.com \
    --cc=radu-nicolae.pirea@oss.nxp.com \
    --cc=richardcochran@gmail.com \
    --cc=rrameshbabu@nvidia.com \
    --cc=shannon.nelson@amd.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=vladimir.oltean@nxp.com \
    --cc=willemb@google.com \
    --cc=willemdebruijn.kernel@gmail.com \
    --cc=wintera@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox