> -----Original Message-----
> From: Rodney Greenstreet [mailto:rodney.greenstr...@ni.com]
> Sent: Thursday, August 03, 2017 2:22 PM
> To: linuxptp-devel@lists.sourceforge.net
> Cc: Rodney Greenstreet <rodney.greenstr...@ni.com>
> Subject: [Linuxptp-devel] [PATCH 1/6] This patch adds a new flag '-t' that 
> enables
> transparent clock mode. When active, the clock will be created as an E2E or 
> P2P
> TC, depending on the configured delay mechanism.
> 
> Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
> ---
>  ptp4l.c | 39 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 35 insertions(+), 4 deletions(-)
> 
> diff --git a/ptp4l.c b/ptp4l.c
> index f01ff6f..8a1dd4b 100644
> --- a/ptp4l.c
> +++ b/ptp4l.c
> @@ -1,6 +1,6 @@
>  /**
>   * @file ptp4l.c
> - * @brief PTP Boundary Clock main program
> + * @brief PTP Boundary Clock or Transparent Clock main program
>   * @note Copyright (C) 2011 Richard Cochran <richardcoch...@gmail.com>
>   *
>   * This program is free software; you can redistribute it and/or modify
> @@ -61,6 +61,7 @@ static void usage(char *progname)
>               " -p [dev]  PTP hardware clock device to use, default auto\n"
>               "           (ignored for SOFTWARE/LEGACY HW time stamping)\n"
>               " -s        slave only mode (overrides configuration file)\n"
> +             " -t        transparent clock\n"

This should have a configuration option. I'm not convinced it deserves a lower 
case letter, but it definitely should be a configure option.

>               " -l [num]  set the logging level to 'num'\n"
>               " -m        print messages to stdout\n"
>               " -q        do not print messages to the syslog\n"
> @@ -73,6 +74,7 @@ static void usage(char *progname)
>  int main(int argc, char *argv[])
>  {
>       char *config = NULL, *req_phc = NULL, *progname;
> +     enum clock_type type = CLOCK_TYPE_ORDINARY;
>       int c, err = -1, index, print_level;
>       struct clock *clock = NULL;
>       struct option *opts;
> @@ -90,7 +92,7 @@ int main(int argc, char *argv[])
>       /* Process the command line arguments. */
>       progname = strrchr(argv[0], '/');
>       progname = progname ? 1+progname : argv[0];
> -     while (EOF != (c = getopt_long(argc, argv, "AEP246HSLf:i:p:sl:mqvh",
> +     while (EOF != (c = getopt_long(argc, argv, "AEP246HSLf:i:p:stl:mqvh",
>                                      opts, &index))) {
>               switch (c) {
>               case 0:
> @@ -151,6 +153,9 @@ int main(int argc, char *argv[])
>                               goto out;
>                       }
>                       break;
> +             case 't':
> +                     type = CLOCK_TYPE_E2E;

This should probably be called: CLOCK_TYPE_TRANSPARENT.

> +                     break;
>               case 'l':
>                       if (get_arg_val_i(c, optarg, &print_level,
>                                         PRINT_LEVEL_MIN, PRINT_LEVEL_MAX))
> @@ -203,8 +208,34 @@ int main(int argc, char *argv[])
>               goto out;
>       }
> 
> -     clock = clock_create(cfg->n_interfaces > 1 ? CLOCK_TYPE_BOUNDARY :
> -                          CLOCK_TYPE_ORDINARY, cfg, req_phc);
> +     switch (type) {
> +     case CLOCK_TYPE_ORDINARY:
> +     case CLOCK_TYPE_BOUNDARY:
> +             if (cfg->n_interfaces > 1) {
> +                     type = CLOCK_TYPE_BOUNDARY;
> +             }
> +             break;
> +     case CLOCK_TYPE_P2P:

I don't think CLOCK_TYPE_P2P and CLOCK_TYPE_E2E need to exist. Just use 
CLOCK_TYPE_TRANSPARENT. Anywhere that you check the CLOCK_TYPE_E2E, check for 
CLOCK_TYPE_TRANSPARENT and then check for whether it's DM_E2E or DM_P2P?

Hmm. If you must separate them this early, call them CLOCK_TYPE_TRANSPARENT_P2P 
and CLOCK_TYPE_TRANSPARENT_E2E

> +     case CLOCK_TYPE_E2E:
> +             if (cfg->n_interfaces < 2) {
> +                     fprintf(stderr, "TC needs at least two interfaces\n");
> +                     goto out;
> +             }
> +             switch (config_get_int(cfg, NULL, "delay_mechanism")) {
> +             case DM_AUTO:
> +             case DM_E2E:
> +                     type = CLOCK_TYPE_E2E;
> +                     break;
> +             case DM_P2P:
> +                     type = CLOCK_TYPE_P2P;
> +                     break;
> +             }
> +             break;
> +     case CLOCK_TYPE_MANAGEMENT:
> +             goto out;
> +     }
> +
> +     clock = clock_create(type, cfg, req_phc);
>       if (!clock) {
>               fprintf(stderr, "failed to create a clock\n");
>               goto out;
> --
> 2.13.0
> 
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Linuxptp-devel mailing list
> Linuxptp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to