diff mbox series

[net,1/2] selftests/ptp: Add -x option for testing PTP_SYS_OFFSET_EXTENDED

Message ID e3e14166f0e92065d08a024159e29160b815d2bf.1686955631.git.alex.maftei@amd.com (mailing list archive)
State New
Headers show
Series selftests/ptp: Add support for new timestamp IOCTLs | expand

Commit Message

Alex Maftei June 16, 2023, 10:48 p.m. UTC
The -x option (where 'x' stands for eXtended) takes an argument which
represents the number of samples to request from the PTP device.
The help message will display the maximum number of samples allowed.
Providing an invalid argument will also display the maximum number of
samples allowed.

Signed-off-by: Alex Maftei <alex.maftei@amd.com>
---
 tools/testing/selftests/ptp/testptp.c | 42 +++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 2 deletions(-)

Comments

Horatiu Vultur June 19, 2023, 9:39 a.m. UTC | #1
The 06/16/2023 23:48, Alex Maftei wrote:

Hi Alex,

As I can see you will need to send another patch, I have just a small
comment bellow.


> The -x option (where 'x' stands for eXtended) takes an argument which
> represents the number of samples to request from the PTP device.
> The help message will display the maximum number of samples allowed.
> Providing an invalid argument will also display the maximum number of
> samples allowed.
> 
> Signed-off-by: Alex Maftei <alex.maftei@amd.com>
> ---
>  tools/testing/selftests/ptp/testptp.c | 42 +++++++++++++++++++++++++--
>  1 file changed, 40 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/ptp/testptp.c b/tools/testing/selftests/ptp/testptp.c
> index cfa9562f3cd8..2a99973ffc1b 100644
> --- a/tools/testing/selftests/ptp/testptp.c
> +++ b/tools/testing/selftests/ptp/testptp.c
> @@ -142,8 +142,9 @@ static void usage(char *progname)
>                 " -S         set the system time from the ptp clock time\n"
>                 " -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"
>                 " -z         test combinations of rising/falling external time stamp flags\n",
> -               progname);
> +               progname, PTP_MAX_SAMPLES);
>  }
> 
>  int main(int argc, char *argv[])
> @@ -157,6 +158,7 @@ int main(int argc, char *argv[])
>         struct timex tx;
>         struct ptp_clock_time *pct;
>         struct ptp_sys_offset *sysoff;
> +       struct ptp_sys_offset_extended *soe;
> 
>         char *progname;
>         unsigned int i;
> @@ -174,6 +176,7 @@ int main(int argc, char *argv[])
>         int index = 0;
>         int list_pins = 0;
>         int pct_offset = 0;
> +       int getextended = 0;
>         int n_samples = 0;
>         int pin_index = -1, pin_func;
>         int pps = -1;
> @@ -188,7 +191,7 @@ int main(int argc, char *argv[])
> 
>         progname = strrchr(argv[0], '/');
>         progname = progname ? 1+progname : argv[0];
> -       while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:p:P:sSt:T:w:z"))) {
> +       while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:p:P:sSt:T:w:x:Xz"))) {

The 'X' needs to be part of the next patch, as you introduce here only 'x'.

>                 switch (c) {
>                 case 'c':
>                         capabilities = 1;
> @@ -250,6 +253,13 @@ int main(int argc, char *argv[])
>                 case 'w':
>                         pulsewidth = atoi(optarg);
>                         break;
> +               case 'x':
> +                       getextended = atoi(optarg);
> +                       if (getextended < 1 || getextended > PTP_MAX_SAMPLES) {
> +                               fprintf(stderr, "number of extended timestamp samples must be between 1 and %d; was asked for %d\n", PTP_MAX_SAMPLES, getextended);
> +                               return -1;
> +                       }
> +                       break;
>                 case 'z':
>                         flagtest = 1;
>                         break;
> @@ -516,6 +526,34 @@ int main(int argc, char *argv[])
>                 free(sysoff);
>         }
> 
> +       if (getextended) {
> +               soe = calloc(1, sizeof(*soe));
> +               if (!soe) {
> +                       perror("calloc");
> +                       return -1;
> +               }
> +
> +               soe->n_samples = getextended;
> +
> +               if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, soe))
> +                       perror("PTP_SYS_OFFSET_EXTENDED");
> +               else {
> +                       printf("extended timestamp request returned %d samples\n",
> +                               getextended);
> +
> +                       for (i = 0; i < getextended; i++) {
> +                               printf("sample #%2d: system time before: %lld.%09u\n",
> +                               i, soe->ts[i][0].sec, soe->ts[i][0].nsec);
> +                               printf("            phc time: %lld.%09u\n",
> +                               soe->ts[i][1].sec, soe->ts[i][1].nsec);
> +                               printf("            system time after: %lld.%09u\n",
> +                               soe->ts[i][2].sec, soe->ts[i][2].nsec);
> +                       }
> +               }
> +
> +               free(soe);
> +       }
> +
>         close(fd);
>         return 0;
>  }
> --
> 2.28.0
> 
>
Alex Maftei June 19, 2023, 9:46 a.m. UTC | #2
I see I've accidentally sent an older revision of the patch series, before I've rebased properly and before I used checkpatch.
I will send the fixed one (and to the correct tree this time) in a v2 series.
Replying to the first patch because the cover letter did not land in my inbox, somehow.
I hope this is the right thing to add:
--
pw-bot: cr
Alex Maftei June 19, 2023, 9:48 a.m. UTC | #3
Hi Horatiu,

v2 of the series will have that fixed.
I've accidentally sent an older revision of this patch series, before I've rebased the changes properly.
Jakub Kicinski June 20, 2023, 4:42 p.m. UTC | #4
On Mon, 19 Jun 2023 09:46:33 +0000 Maftei, Alex wrote:
> I see I've accidentally sent an older revision of the patch series, before I've rebased properly and before I used checkpatch.
> I will send the fixed one (and to the correct tree this time) in a v2 series.
> Replying to the first patch because the cover letter did not land in my inbox, somehow.
> I hope this is the right thing to add:
> --
> pw-bot: cr

Eh, didn't work, the bot does a simple == comparison:

https://github.com/kuba-moo/nipa/blob/master/mailbot.py#L294

so "Maftei, Alex" <alex.maftei@amd.com>
vs Alex Maftei <alex.maftei@amd.com>

won't match.
diff mbox series

Patch

diff --git a/tools/testing/selftests/ptp/testptp.c b/tools/testing/selftests/ptp/testptp.c
index cfa9562f3cd8..2a99973ffc1b 100644
--- a/tools/testing/selftests/ptp/testptp.c
+++ b/tools/testing/selftests/ptp/testptp.c
@@ -142,8 +142,9 @@  static void usage(char *progname)
 		" -S         set the system time from the ptp clock time\n"
 		" -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"
 		" -z         test combinations of rising/falling external time stamp flags\n",
-		progname);
+		progname, PTP_MAX_SAMPLES);
 }
 
 int main(int argc, char *argv[])
@@ -157,6 +158,7 @@  int main(int argc, char *argv[])
 	struct timex tx;
 	struct ptp_clock_time *pct;
 	struct ptp_sys_offset *sysoff;
+	struct ptp_sys_offset_extended *soe;
 
 	char *progname;
 	unsigned int i;
@@ -174,6 +176,7 @@  int main(int argc, char *argv[])
 	int index = 0;
 	int list_pins = 0;
 	int pct_offset = 0;
+	int getextended = 0;
 	int n_samples = 0;
 	int pin_index = -1, pin_func;
 	int pps = -1;
@@ -188,7 +191,7 @@  int main(int argc, char *argv[])
 
 	progname = strrchr(argv[0], '/');
 	progname = progname ? 1+progname : argv[0];
-	while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:p:P:sSt:T:w:z"))) {
+	while (EOF != (c = getopt(argc, argv, "cd:e:f:ghH:i:k:lL:n:p:P:sSt:T:w:x:Xz"))) {
 		switch (c) {
 		case 'c':
 			capabilities = 1;
@@ -250,6 +253,13 @@  int main(int argc, char *argv[])
 		case 'w':
 			pulsewidth = atoi(optarg);
 			break;
+		case 'x':
+			getextended = atoi(optarg);
+			if (getextended < 1 || getextended > PTP_MAX_SAMPLES) {
+				fprintf(stderr, "number of extended timestamp samples must be between 1 and %d; was asked for %d\n", PTP_MAX_SAMPLES, getextended);
+				return -1;
+			}
+			break;
 		case 'z':
 			flagtest = 1;
 			break;
@@ -516,6 +526,34 @@  int main(int argc, char *argv[])
 		free(sysoff);
 	}
 
+	if (getextended) {
+		soe = calloc(1, sizeof(*soe));
+		if (!soe) {
+			perror("calloc");
+			return -1;
+		}
+
+		soe->n_samples = getextended;
+
+		if (ioctl(fd, PTP_SYS_OFFSET_EXTENDED, soe))
+			perror("PTP_SYS_OFFSET_EXTENDED");
+		else {
+			printf("extended timestamp request returned %d samples\n",
+				getextended);
+
+			for (i = 0; i < getextended; i++) {
+				printf("sample #%2d: system time before: %lld.%09u\n",
+				i, soe->ts[i][0].sec, soe->ts[i][0].nsec);
+				printf("            phc time: %lld.%09u\n",
+				soe->ts[i][1].sec, soe->ts[i][1].nsec);
+				printf("            system time after: %lld.%09u\n",
+				soe->ts[i][2].sec, soe->ts[i][2].nsec);
+			}
+		}
+
+		free(soe);
+	}
+
 	close(fd);
 	return 0;
 }