netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vinicius Costa Gomes <vinicius.gomes@intel.com>
To: Gerhard Engleder <gerhard@engleder-embedded.com>,
	richardcochran@gmail.com, yangbo.lu@nxp.com, davem@davemloft.net,
	kuba@kernel.org
Cc: mlichvar@redhat.com, netdev@vger.kernel.org,
	Gerhard Engleder <gerhard@engleder-embedded.com>
Subject: Re: [PATCH net-next v1 0/6] ptp: Support hardware clocks with additional free running time
Date: Thu, 24 Mar 2022 17:01:58 -0700	[thread overview]
Message-ID: <87tubm5289.fsf@intel.com> (raw)
In-Reply-To: <20220322210722.6405-1-gerhard@engleder-embedded.com>

Hi,

Gerhard Engleder <gerhard@engleder-embedded.com> writes:

> ptp vclocks require a clock with free running time for the timecounter.
> Currently only a physical clock forced to free running is supported.
> If vclocks are used, then the physical clock cannot be synchronized
> anymore. The synchronized time is not available in hardware in this
> case. As a result, timed transmission with TAPRIO hardware support
> is not possible anymore.
>
> If hardware would support a free running time additionally to the
> physical clock, then the physical clock does not need to be forced to
> free running. Thus, the physical clocks can still be synchronized while
> vclocks are in use.
>
> The physical clock could be used to synchronize the time domain of the
> TSN network and trigger TAPRIO. In parallel vclocks can be used to
> synchronize other time domains.
>
> One year ago I thought for two time domains within a TSN network also
> two physical clocks are required. This would lead to new kernel
> interfaces for asking for the second clock, ... . But actually for a
> time triggered system like TSN there can be only one time domain that
> controls the system itself. All other time domains belong to other
> layers, but not to the time triggered system itself. So other time
> domains can be based on a free running counter if similar mechanisms
> like 2 step synchroisation are used.

I tried to look at this series from the point of view of the Intel i225
NIC and its 4 sets of timer registers, and thinking how adding support
for the "extra" 4 timers would fit with this proposal.

From what I could gather, the idea that would make more sense would be
exposing the other(s?) i225 timers as vclocks. That sounds neat to me,
i.e. the extra timer registers are indeed other "views" to the same
clock (the name "virtual" makes sense).

When retrieving the timestamps from packets (we can timestamp each
packet with two timers), the driver knows what timestamp (and what to do
with it) the user is interested in.

Is this what you (and others) had in mind?

If so, API-wise this series looks good to me. I will take a closer look
at the code tomorrow.

>
> Synchronisation was tested with two time domains between two directly
> connected hosts. Each host run two ptp4l instances, the first used the
> physical clock and the second used the virtual clock. I used my FPGA
> based network controller as network device. ptp4l was used in
> combination with the virtual clock support patches from Miroslav
> Lichvar.
>
> v1:
> - comlete rework based on feedback to RFC (Richard Cochran)
>
> Gerhard Engleder (6):
>   ptp: Add cycles support for virtual clocks
>   ptp: Request cycles for TX timestamp
>   ptp: Pass hwtstamp to ptp_convert_timestamp()
>   ethtool: Add kernel API for PHC index
>   ptp: Support late timestamp determination
>   tsnep: Add physical clock cycles support
>
>  drivers/net/ethernet/engleder/tsnep_hw.h   |  9 ++-
>  drivers/net/ethernet/engleder/tsnep_main.c | 27 ++++++---
>  drivers/net/ethernet/engleder/tsnep_ptp.c  | 44 ++++++++++++++
>  drivers/ptp/ptp_clock.c                    | 58 +++++++++++++++++--
>  drivers/ptp/ptp_private.h                  | 10 ++++
>  drivers/ptp/ptp_sysfs.c                    | 10 ++--
>  drivers/ptp/ptp_vclock.c                   | 18 +++---
>  include/linux/ethtool.h                    |  8 +++
>  include/linux/ptp_clock_kernel.h           | 67 ++++++++++++++++++++--
>  include/linux/skbuff.h                     | 11 +++-
>  net/core/skbuff.c                          |  2 +
>  net/ethtool/common.c                       | 13 +++++
>  net/socket.c                               | 45 +++++++++++----
>  13 files changed, 275 insertions(+), 47 deletions(-)
>
> -- 
> 2.20.1
>

-- 
Vinicius

  parent reply	other threads:[~2022-03-25  0:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-22 21:07 [PATCH net-next v1 0/6] ptp: Support hardware clocks with additional free running time Gerhard Engleder
2022-03-22 21:07 ` [PATCH net-next v1 1/6] ptp: Add cycles support for virtual clocks Gerhard Engleder
2022-03-24 13:43   ` Richard Cochran
2022-03-24 19:39     ` Gerhard Engleder
2022-03-22 21:07 ` [PATCH net-next v1 2/6] ptp: Request cycles for TX timestamp Gerhard Engleder
2022-03-24 13:49   ` Richard Cochran
2022-03-24 13:55     ` Miroslav Lichvar
2022-03-24 19:43     ` Gerhard Engleder
2022-03-22 21:07 ` [PATCH net-next v1 3/6] ptp: Pass hwtstamp to ptp_convert_timestamp() Gerhard Engleder
2022-03-24 13:50   ` Richard Cochran
2022-03-22 21:07 ` [PATCH net-next v1 4/6] ethtool: Add kernel API for PHC index Gerhard Engleder
2022-03-24 13:51   ` Richard Cochran
2022-03-22 21:07 ` [PATCH net-next v1 5/6] ptp: Support late timestamp determination Gerhard Engleder
2022-03-23  0:54   ` kernel test robot
2022-03-23  1:05   ` kernel test robot
2022-03-23  2:06   ` kernel test robot
2022-03-24 14:01   ` Richard Cochran
2022-03-24 19:52     ` Gerhard Engleder
2022-03-25  0:04       ` Richard Cochran
2022-03-25  0:08         ` Richard Cochran
2022-03-25 20:51           ` Gerhard Engleder
2022-03-26  0:27   ` Vinicius Costa Gomes
2022-03-22 21:07 ` [PATCH net-next v1 6/6] tsnep: Add physical clock cycles support Gerhard Engleder
2022-03-25  0:01 ` Vinicius Costa Gomes [this message]
2022-03-25 22:01   ` [PATCH net-next v1 0/6] ptp: Support hardware clocks with additional free running time Gerhard Engleder

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=87tubm5289.fsf@intel.com \
    --to=vinicius.gomes@intel.com \
    --cc=davem@davemloft.net \
    --cc=gerhard@engleder-embedded.com \
    --cc=kuba@kernel.org \
    --cc=mlichvar@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=richardcochran@gmail.com \
    --cc=yangbo.lu@nxp.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;
as well as URLs for NNTP newsgroup(s).