Netdev List
 help / color / mirror / Atom feed
From: Arthur Kiyanovski <akiyano@amazon.com>
To: saeed bishara <saeed.bishara.os@gmail.com>
Cc: Arthur Kiyanovski <akiyano@amazon.com>,
	David Miller <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, <netdev@vger.kernel.org>,
	Richard Cochran <richardcochran@gmail.com>,
	"Eric Dumazet" <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	"David Woodhouse" <dwmw2@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Miroslav Lichvar <mlichvar@redhat.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	Wen Gu <guwen@linux.alibaba.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	David Woodhouse <dwmw@amazon.com>,
	Yonatan Sarna <ysarna@amazon.com>,
	"Zorik Machulsky" <zorik@amazon.com>,
	Alexander Matushevsky <matua@amazon.com>,
	"Saeed Bshara" <saeedb@amazon.com>, Matt Wilson <msw@amazon.com>,
	Anthony Liguori <aliguori@amazon.com>,
	Nafea Bshara <nafea@amazon.com>,
	Evgeny Schmeilin <evgenys@amazon.com>,
	Netanel Belgazal <netanel@amazon.com>,
	Ali Saidi <alisaidi@amazon.com>,
	Benjamin Herrenschmidt <benh@amazon.com>,
	Noam Dagan <ndagan@amazon.com>,
	David Arinzon <darinzon@amazon.com>,
	Evgeny Ostrovsky <evostrov@amazon.com>,
	Ofir Tabachnik <ofirt@amazon.com>,
	Amit Bernstein <amitbern@amazon.com>,
	<linux-kselftest@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<shuah@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
	Shuah Khan <skhan@linuxfoundation.org>,
	Simon Horman <horms@kernel.org>, <vadim.fedorenko@linux.dev>
Subject: Re: [PATCH v4 net-next 3/7] selftests/ptp: Add testptp support for attributes ioctls
Date: Fri, 17 Jul 2026 07:20:53 +0000	[thread overview]
Message-ID: <178427285301.16508.9929147333505968694.b4-reply@b4> (raw)
In-Reply-To: <CAHfVqdWDaLEKYMw-ZfkYvKLoSJ-_HOm3X9hUUhEf7ReBbOi__w@mail.gmail.com>

On 2026-07-16 16:00:49+03:00, saeed bishara wrote:
> >                 " -t val     shift the ptp clock time by 'val' seconds\n"
> >                 " -T val     set the ptp clock time to 'val' seconds\n"
> >                 " -x val     get an extended ptp clock time with the desired number of samples (up to %d)\n"
> > +               " -a val     get extended timestamps with attributes (error_bound,\n"
> 
> timestamps -> ptp clock to be consistent
> also, have you considered making the "-a" additional flag to -x and -A
> instead of an exclusive option?
> 
> > +               printf("sample #%2d: unknown clock %d %s: %lld.%09u\n",
> > +                      sample_num, clockid, when, sec, nsec);
> 
> In the case of an unknown clock, will the additional parameters
> (when/sec/..) be useful?
> 
> >                 break;
> >         }
> >  }
> > @@ -188,6 +193,7 @@ int main(int argc, char *argv[])
> >         struct ptp_sys_offset *sysoff;
> >         struct ptp_sys_offset_extended *soe;
> >         struct ptp_sys_offset_precise *xts;
> > +       struct ptp_sys_offset_attrs *attrs_data;
> >
> >         char *progname;
> >         unsigned int i;
> > @@ -208,7 +214,9 @@ int main(int argc, char *argv[])
> >         int list_pins = 0;
> >         int pct_offset = 0;
> >         int getextended = 0;
> > +       int getextendedattrs = 0;
> >         int getcross = 0;
> > +       int getcrossattrs = 0;
> >         int n_samples = 0;
> >         int pin_index = -1, pin_func;
> >         int pps = -1;
> > @@ -226,7 +234,8 @@ int main(int argc, char *argv[])
> >
> >         progname = strrchr(argv[0], '/');
> >         progname = progname ? 1+progname : argv[0];
> > -       while (EOF != (c = getopt(argc, argv, "cd:e:E:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
> > +       while (EOF != (c = getopt(argc, argv,
> > +                                 "a:Acd:e:E:f:F:ghH:i:k:lL:n:o:p:P:rsSt:T:w:x:Xy:z"))) {
> >                 switch (c) {
> >                 case 'c':
> >                         capabilities = 1;
> > @@ -311,9 +320,22 @@ int main(int argc, char *argv[])
> >                                 return -1;
> >                         }
> >                         break;
> > +               case 'a':
> > +                       getextendedattrs = atoi(optarg);
> > +                       if (getextendedattrs < 1 ||
> > +                           getextendedattrs > PTP_MAX_SAMPLES) {
> > +                               fprintf(stderr,
> > +                                       "number of extended attrs timestamp samples must be between 1 and %d; was asked for %d\n",
> > +                                       PTP_MAX_SAMPLES, getextendedattrs);
> > +                               return -1;
> > +                       }
> > +                       break;
> >                 case 'X':
> >                         getcross = 1;
> >                         break;
> > +               case 'A':
> > +                       getcrossattrs = 1;
> > +                       break;
> >                 case 'y':
> >                         if (!strcasecmp(optarg, "realtime"))
> >                                 ext_clockid = CLOCK_REALTIME;
> > @@ -367,6 +389,8 @@ int main(int argc, char *argv[])
> >                                "  %d programmable pins\n"
> >                                "  %d cross timestamping\n"
> >                                "  %d adjust_phase\n"
> > +                              "  %d extended_attrs\n"
> > +                              "  %d precise_attrs\n"
> >                                "  %d maximum phase adjustment (ns)\n",
> >                                caps.max_adj,
> >                                caps.n_alarm,
> > @@ -376,6 +400,8 @@ int main(int argc, char *argv[])
> >                                caps.n_pins,
> >                                caps.cross_timestamping,
> >                                caps.adjust_phase,
> > +                              caps.extended_attrs,
> > +                              caps.precise_attrs,
> >                                caps.max_phase_adj);
> >                 }
> >         }
> > @@ -648,6 +674,49 @@ int main(int argc, char *argv[])
> >                 free(soe);
> >         }
> >
> > +       if (getextendedattrs) {
> > +               attrs_data = calloc(1, sizeof(*attrs_data) +
> > +                                   getextendedattrs * sizeof(struct ptp_timestamp));
> > +               if (!attrs_data) {
> > +                       perror("calloc");
> > +                       return -1;
> > +               }
> > +
> > +               attrs_data->request.num_samples = getextendedattrs;
> > +               attrs_data->request.clock_id = ext_clockid;
> > +
> > +               if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED_ATTRS, attrs_data)) {
> > +                       perror("PTP_SYS_OFFSET_EXTENDED_ATTRS");
> > +               } else {
> > +                       printf("extended attrs timestamp request returned %d samples\n",
> > +                              getextendedattrs);
> > +
> > +                       for (i = 0; i < getextendedattrs; i++) {
> > +                               struct ptp_timestamp *ts = &attrs_data->timestamps[i];
> > +
> > +                               printf("  sample #%u:\n", i);
> > +                               printf("    sys before: %lld ns\n",
> > +                                      (long long)ts->pre_systime.sys_time);
> > +                               printf("    phc time:   %lld.%09u\n",
> > +                                      ts->devtime.device_time.sec,
> > +                                      ts->devtime.device_time.nsec);
> > +                               if (ts->devtime.attrs.valid & PTP_ATTRS_VALID_ERROR_BOUND)
> > +                                       printf("    error_bound: %u ns\n",
> > +                                              ts->devtime.attrs.error_bound);
> 
> in case device doesn't report error bound, I think it's better to
> print explicit message

All addressed in v5: -a is now a modifier on -x/-X (dropped -A, use
-X -a) as you suggested; usage text updated; the unknown-clock line is
trimmed to just the clock id; and attributes the device doesn't report
now print "not reported".


  reply	other threads:[~2026-07-17  7:21 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-14  2:03 [PATCH v4 net-next 0/7] ptp: Add PHC timestamp quality attributes Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 1/7] ptp: Add ioctls for PHC timestamps with " Arthur Kiyanovski
2026-07-15  0:45   ` Jacob Keller
2026-07-16  8:09     ` Arthur Kiyanovski
2026-07-16 18:14       ` Jacob Keller
2026-07-28  8:10         ` Carolina Jubran
2026-07-29  0:26           ` Arthur Kiyanovski
2026-07-16 11:22   ` saeed bishara
2026-07-17  7:18     ` Arthur Kiyanovski
2026-07-28  7:52   ` Carolina Jubran
2026-07-29  0:25     ` Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 2/7] selftests/ptp: Extract print_system_timestamp helper in testptp Arthur Kiyanovski
2026-07-16 11:34   ` saeed bishara
2026-07-17  7:19     ` Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 3/7] selftests/ptp: Add testptp support for attributes ioctls Arthur Kiyanovski
2026-07-16 13:00   ` saeed bishara
2026-07-17  7:20     ` Arthur Kiyanovski [this message]
2026-07-14  2:03 ` [PATCH v4 net-next 4/7] ptp: ptp_vmclock: Implement " Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 5/7] net: ena: Update PHC admin interface for error bound support Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 6/7] net: ena: Add error bound to PHC communication layer Arthur Kiyanovski
2026-07-14  2:03 ` [PATCH v4 net-next 7/7] net: ena: Implement gettimexattrs64 callback for PTP attributes Arthur Kiyanovski
2026-07-15  0:47   ` Jacob Keller
2026-07-16  8:11     ` Arthur Kiyanovski
2026-07-16 18:07       ` Jacob Keller
2026-07-27  1:41 ` [PATCH v4 net-next 0/7] ptp: Add PHC timestamp quality attributes Richard Cochran
2026-07-27  9:40   ` David Woodhouse

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=178427285301.16508.9929147333505968694.b4-reply@b4 \
    --to=akiyano@amazon.com \
    --cc=aliguori@amazon.com \
    --cc=alisaidi@amazon.com \
    --cc=amitbern@amazon.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=benh@amazon.com \
    --cc=corbet@lwn.net \
    --cc=darinzon@amazon.com \
    --cc=davem@davemloft.net \
    --cc=dwmw2@infradead.org \
    --cc=dwmw@amazon.com \
    --cc=edumazet@google.com \
    --cc=evgenys@amazon.com \
    --cc=evostrov@amazon.com \
    --cc=guwen@linux.alibaba.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=matua@amazon.com \
    --cc=mlichvar@redhat.com \
    --cc=msw@amazon.com \
    --cc=nafea@amazon.com \
    --cc=ndagan@amazon.com \
    --cc=netanel@amazon.com \
    --cc=netdev@vger.kernel.org \
    --cc=ofirt@amazon.com \
    --cc=pabeni@redhat.com \
    --cc=richardcochran@gmail.com \
    --cc=saeed.bishara.os@gmail.com \
    --cc=saeedb@amazon.com \
    --cc=shuah@kernel.org \
    --cc=skhan@linuxfoundation.org \
    --cc=tglx@linutronix.de \
    --cc=vadim.fedorenko@linux.dev \
    --cc=xuanzhuo@linux.alibaba.com \
    --cc=ysarna@amazon.com \
    --cc=zorik@amazon.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