I have not received patch 02/11 from the series and I don't see it
in the archives. Also, patch 11/11 needs to be rebased on top of
the current HEAD as there is a conflict in makefile with recent ts2phc
changes.

On Thu, May 26, 2022 at 05:16:32PM +0200, Arkadiusz Kubalewski wrote:
> Add main code of synce4l - user space application implementing
> standard - Recommendation ITU-T G.8264/Y.1364.
> On init the application parses SyncE config file and initializes
> a synce_clock with SyncE devices and configured ports.
> synce_clock is later polled until application termination.
> 
> Add documentation in form of Linux manual and 'synce4l_README.md'.
> 
> Add synce4l to the linuxptp makefile.
> 
> Co-developed-by: Andrzej Sawula <andrzej.saw...@intel.com>
> Signed-off-by: Andrzej Sawula <andrzej.saw...@intel.com>
> Co-developed-by: Piotr Kwapulinski <piotr.kwapulin...@intel.com>
> Signed-off-by: Piotr Kwapulinski <piotr.kwapulin...@intel.com>
> Co-developed-by: Michal Michalik <michal.micha...@intel.com>
> Signed-off-by: Michal Michalik <michal.micha...@intel.com>
> Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalew...@intel.com>
> 
> ---
> v2:
> - fix duplicated entry in synce4l.8
> - updated license headers
> 
>  README.org        |   2 +
>  makefile          |  17 ++--
>  synce4l.8         | 239 ++++++++++++++++++++++++++++++++++++++++++++++
>  synce4l.c         | 132 +++++++++++++++++++++++++
>  synce4l_README.md | 194 +++++++++++++++++++++++++++++++++++++
>  5 files changed, 578 insertions(+), 6 deletions(-)
>  create mode 100644 synce4l.8
>  create mode 100644 synce4l.c
>  create mode 100644 synce4l_README.md
> 
> diff --git a/README.org b/README.org
> index 063b5425da43..ab0d5a02022e 100644
> --- a/README.org
> +++ b/README.org
> @@ -51,6 +51,8 @@
>  
>    - Supports bonded, IPoIB, and vlan interfaces.
>  
> +  - Supports Synchronous Ethernet (Recommendation ITU-T G.8264/Y.1364).
> +
>  * Getting the Code
>  
>    You can download the latest released version at Source Forge.
> diff --git a/makefile b/makefile
> index 33e7ca0f038b..1973c1dd2fa9 100644
> --- a/makefile
> +++ b/makefile
> @@ -22,20 +22,22 @@ CC        = $(CROSS_COMPILE)gcc
>  VER     = -DVER=$(version)
>  CFLAGS       = -Wall $(VER) $(incdefs) $(DEBUG) $(EXTRA_CFLAGS)
>  LDLIBS       = -lm -lrt -pthread $(EXTRA_LDFLAGS)
> -PRG  = ptp4l hwstamp_ctl nsm phc2sys phc_ctl pmc timemaster ts2phc
> +PRG  = ptp4l hwstamp_ctl nsm phc2sys phc_ctl pmc timemaster ts2phc synce4l
>  FILTERS      = filter.o mave.o mmedian.o
>  SERVOS       = linreg.o ntpshm.o nullf.o pi.o servo.o
>  TRANSP       = raw.o transport.o udp.o udp6.o uds.o
>  TS2PHC       = ts2phc.o lstab.o nmea.o serial.o sock.o 
> ts2phc_generic_master.o \
>   ts2phc_master.o ts2phc_phc_master.o ts2phc_nmea_master.o ts2phc_slave.o
> +SYNCE        = esmc_socket.o synce_clock.o synce_dev.o synce_dev_ctrl.o \
> + synce_msg.o synce_port.o synce_port_ctrl.o synce_transport.o
> +
>  OBJ  = bmc.o clock.o clockadj.o clockcheck.o config.o designated_fsm.o \
>   e2e_tc.o fault.o $(FILTERS) fsm.o hash.o interface.o monitor.o msg.o phc.o \
>   port.o port_signaling.o pqueue.o print.o ptp4l.o p2p_tc.o rtnl.o $(SERVOS) \
> - sk.o stats.o tc.o $(TRANSP) telecom.o tlv.o tsproc.o unicast_client.o \
> - unicast_fsm.o unicast_service.o util.o version.o
> -
> -OBJECTS      = $(OBJ) hwstamp_ctl.o nsm.o phc2sys.o phc_ctl.o pmc.o 
> pmc_agent.o \
> - pmc_common.o sysoff.o timemaster.o $(TS2PHC)
> + sk.o stats.o tc.o $(TRANSP) telecom.o tlv.o tsproc.o \
> + unicast_client.o unicast_fsm.o unicast_service.o util.o version.o
> +OBJECTS      = $(OBJ) hwstamp_ctl.o nsm.o phc2sys.o phc_ctl.o pmc.o 
> pmc_common.o \
> + pmc_common.o $(SYNCE) sysoff.o timemaster.o $(TS2PHC)
>  SRC  = $(OBJECTS:.o=.c)
>  DEPEND       = $(OBJECTS:.o=.d)
>  srcdir       := $(dir $(lastword $(MAKEFILE_LIST)))
> @@ -50,6 +52,9 @@ man8dir     = $(mandir)/man8
>  
>  all: $(PRG)
>  
> +synce4l: config.o hash.o interface.o phc.o print.o sk.o $(SYNCE) util.o \
> + version.o
> +
>  ptp4l: $(OBJ)
>  
>  nsm: config.o $(FILTERS) hash.o interface.o msg.o nsm.o phc.o print.o \
> diff --git a/synce4l.8 b/synce4l.8
> new file mode 100644
> index 000000000000..a266e80f8e15
> --- /dev/null
> +++ b/synce4l.8
> @@ -0,0 +1,239 @@
> +.\" Manpage for synce4l.
> +.\" Contact linuxptp-devel@lists.sourceforge.net to correct errors or typos.
> +.TH man 8 "21 Apr 2022" "1.0" "synce4l man page"
> +
> +.SH NAME
> +synce4l \- Synchronous Ethernet (Sync-E) controller application
> +
> +.SH SYNOPSIS
> +synce4l -f [file] [-l <num>] [-m] [-q] [-v] [-h]
> +
> +.SH DESCRIPTION
> +synce4l is an implementation of the Synchronous Ethernet (Sync-E) protocol
> +according to ITU-T Rec. G.8264. The design goal is to provide logic to 
> supported
> +hardware by processing Ethernet Synchronization Messaging Channel (ESMC) and
> +control Digital Phase Locked Loop (DPLL) clock on Network Card Interface 
> (NIC).
> +.P
> +Application can operate in two mutually exclusive modes. If both modes are
> +configured simultaneously, the external input takes precedence over internal 
> one
> +(internal is disabled implicitly).
> +
> +.TP
> +External input
> +If `synce4l` is configured to run in "external input" mode then DPLL needs to
> +have external 1PPS source attached (GPS or other generator).
> +In this scenario `synce4l` always broadcasts clock quality level (QL) defined
> +in configuration file. Additionally, for "external input" mode incoming 
> Sync-E
> +frames do not participate in best source selection algorithm for DPLL.
> +
> +.TP
> +Internal input
> +In "internal input" mode incoming Sync-E frames are processed and best clock
> +source is extracted from the link having the best quality level.
> +`synce4l` configures such "best quality" port as a source to recover clock
> +for DPLL. The recovered QL is broadcasted to all other interfaces then.
> +An external clock cannot be used in this mode.
> +
> +.SH OPTIONS
> +.TP
> +.B \-f [file]
> +read configuration from 'file' (config file takes precedence over
> +command line arguments)
> +.TP
> +.B \-l [num]
> +set the logging level to 'num' (0: least detailed, 7: most detailed)
> +.TP
> +.B \-m
> +print messages to stdout
> +.TP
> +.B \-q
> +do not print messages to the syslog
> +.TP
> +.B \-v
> +print synce4l version and exit
> +.TP
> +.B \-h
> +print this message and exit
> +
> +.SH CONFIGURATION FILE
> +Configuration file contains three sections:
> +.IP -
> +global,
> +.IP -
> +device,
> +.IP -
> +port.
> +
> +.SS Global section
> +This section starts with `[global]` keyword. It sets the logging options.
> +.RS
> +Available options:
> +.IP logging_level
> +Minimum log level required to appear in a log.
> +.P
> +.RS
> +Defaults to 6, valid values are 0 - 7
> +.RE
> +.IP message_tag
> +Tag reported in a log.
> +.IP use_syslog
> +Set to 1 if `syslog` should be used.
> +.P
> +.RS
> +Defaults to 1, valid values are 0 or 1
> +.RE
> +.IP verbose
> +Set to 1 to log extra information.
> +.P
> +.RS
> +Defaults to 0, valid values are 0 or 1
> +.RE
> +.RE
> +
> +.SS Device section
> +This section specifies the configuration of a device e.g. ptp1.
> +It starts with the full path name of a device e.g. [/dev/ptp1].
> +DPLL state is retrieved using shell command defined by the user. Expected 
> values
> +for each dpll state are also defined by the user.
> +.RS
> +Available options:
> +.IP internal_input
> +Set to 1 to enable "internal input" mode. Mutually exclusive with
> +"external_input" parameter.
> +.P
> +.RS
> +Defaults to 1, valid values are 0 or 1
> +.RE
> +.IP external_input
> +Set to 1 to enable "external input" mode. Mutually exclusive with
> +"internal_input" parameter. Takes precedence over "internal_input" parameter.
> +.P
> +.RS
> +Defaults to 0, valid values are 0 or 1
> +.RE
> +.IP external_input_QL
> +Quality Level (QL) for "external input" mode.
> +.P
> +.RS
> +Valid values specified in ITU-T Recommendations
> +.RE
> +.IP external_input_ext_QL
> +Extended Quality Level for "external input" mode.
> +.P
> +.RS
> +Valid values specified in ITU-T Recommendations
> +.RE
> +.IP extended_tlv
> +Set to 1 to enable extended QL.
> +.P
> +.RS
> +Defaults to 0, valid values are 0 or 1
> +.RE
> +.IP network_option
> +Network option according to T-REC-G.8264. All devices in Sync-E domain
> +should have the same option configured.
> +.P
> +.RS
> +Defaults to 1, valid values are 1 or 2
> +.RE
> +.IP recover_time
> +Seconds indicating the minimum time to recover from the QL-failed state on 
> the port.
> +.P
> +.RS
> +Defaults to 60, valid values are 10 - 720
> +.RE
> +.IP get_dpll_state_cmd
> +Defines a shell command which will be executed by synce4l to acquire current
> +state of a Sync-E DPLL on the device. Separated command must be provided by 
> the
> +user for each device confgured for frequency synchronization. The command 
> shall
> +output current state of DPLL to stdout, expected values are defined (also by 
> the
> +user) with following configuration items:
> +dpll_holdover_value, dpll_locked_ho_value, dpll_locked_value,
> +dpll_freerun_value, dpll_invalid_value.
> +.RS
> +.RE
> +.IP dpll_holdover_value
> +Defines a string value expected on stdout stream when DPLL is in HOLDOVER 
> state.
> +.P
> +.RS
> +.RE
> +.IP dpll_locked_ho_value
> +Defines a string value expected on stdout stream when DPLL is in LOCKED 
> HOLDOVER
> +state.
> +.P
> +.RS
> +.RE
> +.IP dpll_locked_value
> +Defines a string value expected on stdout stream when DPLL is in LOCKED 
> state.
> +.P
> +.RS
> +.RE
> +.IP dpll_freerun_value
> +Defines a string value expected on stdout stream when DPLL is in FREERUN 
> state.
> +.P
> +.RS
> +.RE
> +.IP dpll_invalid_value
> +Defines a string value expected on stdout stream when DPLL is in INVALID 
> state.
> +.P
> +.RE
> +
> +.SS Port section
> +Any other section not starting with `/` (e.g. [eth0]) is the port section.
> +Multiple port sections are allowed. Each port participates in Sync-E
> +communication.
> +.RS
> +Available options:
> +.IP sync
> +Set to 1 to enable the port for Sync-E communication (i.e. best source
> +selection and QLs advertisement).
> +.P
> +.RS
> +Defaults to 0, valid values are 0 or 1
> +.RE
> +.IP tx_heartbeat_msec
> +Interval between consecutive Sync-E frame transmissions (1000ms recommended).
> +.P
> +.RS
> +Defaults to 1000, valid values are 100 - 3000
> +.RE
> +.IP rx_heartbeat_msec
> +Interval between consecutive Sync-E socket polls (frame receive).
> +.P
> +.RS
> +Defaults to 50, valid values are 10 - 500
> +.RE
> +.IP recover_clock_enable_cmd
> +A shell command which enables PHY port pointed by this Port section as a 
> source
> +of frequency for the Sync-E DPLL on this device (required only in
> +"internal input" mode).
> +.RS
> +.RE
> +.IP recover_clock_disable_cmd
> +A shell command which disables PHY port pointed by this Port section as a 
> source
> +of frequency for the Sync-E DPLL on this device (required only in
> +"internal input" mode).
> +.IP allowed_qls
> +List of integers containing allowed SSM QLs separated by comma (`,`), other
> +received ones would be discarded. If parameter is not provided, all QLs will 
> be
> +accepted.
> +.P
> +.IP allowed_ext_qls
> +List of integers containing allowed extended SSM QLs separated by comma 
> (`,`),
> +other received ones would be discarded. If parameter is not provided, all 
> QLs will
> +be accepted.
> +.P
> +.RE
> +
> +.SH SEE ALSO
> +.BR ptp4l (8)
> +
> +.SH BUGS
> +No known bugs.
> +
> +.SH AUTHOR
> +Arkadiusz Kubalewski <arkadiusz.kubalew...@intel.com>
> +.P
> +Michal Michalik <michal.micha...@intel.com>
> +.P
> +Piotr Kwapulinski <piotr.kwapulin...@intel.com>
> diff --git a/synce4l.c b/synce4l.c
> new file mode 100644
> index 000000000000..e16bcd4dc3eb
> --- /dev/null
> +++ b/synce4l.c
> @@ -0,0 +1,132 @@
> +/**
> + * @file synce4l.c
> + * @brief Synchronous Ethernet (Sync-E) userspace client
> + * @note SPDX-FileCopyrightText: Copyright 2022 Intel Corporation
> + * @note SPDX-License-Identifier: GPL-2.0+
> + */
> +#include <limits.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +#include <unistd.h>
> +#include <sys/queue.h>
> +#include <errno.h>
> +
> +#include "synce_clock.h"
> +#include "config.h"
> +#include "print.h"
> +#include "version.h"
> +
> +static void usage(char *progname)
> +{
> +     fprintf(stderr,
> +             "\nusage: %s [options]\n\n"
> +             " ...\n\n"
> +             " Other Options\n\n"
> +             " -f [file] read configuration from 'file'\n"
> +             "           (config file takes precedence over command line 
> arguments)\n"
> +             " -l [num]  set the logging level to 'num'\n"
> +             "           (%d: least detailed, %d: most detailed)\n"
> +             " -m        print messages to stdout\n"
> +             " -q        do not print messages to the syslog\n"
> +             " -v        print synce4l version and exit\n"
> +             " -h        print this message and exit\n"
> +             "\n",
> +             progname, PRINT_LEVEL_MIN, PRINT_LEVEL_MAX);
> +}
> +
> +static void synce4l_cleanup(struct config *cfg)
> +{
> +     if (cfg)
> +             config_destroy(cfg);
> +}
> +
> +int main(int argc, char *argv[])
> +{
> +     int c, err = -EACCES, index, print_level;
> +     char *config = NULL, *progname;
> +     struct synce_clock *clock;
> +     struct option *opts;
> +     struct config *cfg;
> +
> +     if (handle_term_signals())
> +             return -EPERM;
> +
> +     cfg = config_create_synce();
> +     if (!cfg) {
> +             return -EINVAL;
> +     }
> +     opts = config_long_options(cfg);
> +
> +     /* Process the command line arguments. */
> +     progname = strrchr(argv[0], '/');
> +     progname = progname ? 1+progname : argv[0];
> +     while (EOF != (c = getopt_long(argc, argv, "f:l:mqvh",
> +                                    opts, &index))) {
> +             switch (c) {
> +             case 'f':
> +                     config = optarg;
> +                     break;
> +             case 'l':
> +                     if (get_arg_val_i(c, optarg, &print_level,
> +                                       PRINT_LEVEL_MIN, PRINT_LEVEL_MAX))
> +                             goto out;
> +                     config_set_int(cfg, "logging_level", print_level);
> +                     break;
> +             case 'm':
> +                     config_set_int(cfg, "verbose", 1);
> +                     break;
> +             case 'q':
> +                     config_set_int(cfg, "use_syslog", 0);
> +                     break;
> +             case 'v':
> +                     version_show(stdout);
> +                     synce4l_cleanup(cfg);
> +                     return 0;
> +             case 'h':
> +                     usage(progname);
> +                     synce4l_cleanup(cfg);
> +                     return 0;
> +             case '?':
> +                     usage(progname);
> +                     goto out;
> +             default:
> +                     usage(progname);
> +                     goto out;
> +             }
> +     }
> +
> +     if (config && (c = config_read(config, cfg))) {
> +             synce4l_cleanup(cfg);
> +             return c;
> +     }
> +
> +     print_set_progname(progname);
> +     print_set_tag(config_get_string(cfg, NULL, "message_tag"));
> +     print_set_verbose(config_get_int(cfg, NULL, "verbose"));
> +     print_set_syslog(config_get_int(cfg, NULL, "use_syslog"));
> +     print_set_level(config_get_int(cfg, NULL, "logging_level"));
> +
> +     if (STAILQ_EMPTY(&cfg->interfaces)) {
> +             fprintf(stderr, "%s", "no interface specified\n");
> +             usage(progname);
> +             goto out;
> +     }
> +
> +     clock = synce_clock_create(cfg);
> +     if (!clock) {
> +             fprintf(stderr, "%s", "failed to create a synce clock\n");
> +             goto out;
> +     }
> +
> +     while (is_running())
> +             if (synce_clock_poll(clock))
> +                     break;
> +
> +     synce_clock_destroy(clock);
> +
> +     err = 0;
> +out:
> +     synce4l_cleanup(cfg);
> +     return err;
> +}
> diff --git a/synce4l_README.md b/synce4l_README.md
> new file mode 100644
> index 000000000000..a1fb59324939
> --- /dev/null
> +++ b/synce4l_README.md
> @@ -0,0 +1,194 @@
> +# Table of contents
> +
> +1. Introduction
> +2. Compilation
> +3. Installation
> +4. Usage
> +5. Config
> +
> +---
> +## 1\. Introduction
> +`synce4l` is a software implementation of Synchronous Ethernet (Sync-E) 
> according
> +to ITU-T Recommendation G.8264. The design goal is to provide logic to 
> supported
> +hardware by processing Ethernet Synchronization Messaging Channel (ESMC) and
> +control Digital Phase Locked Loop (DPLL) clock on Network Card Interface 
> (NIC).
> +
> +Application can operate in two mutually exclusive modes. If both modes are
> +configured simultaneously, the "external input" mode takes precedence over
> +internal one ("internal input" mode is disabled implicitly).
> +
> +The best source selection is done according to ITU-T Recommendations G.781 
> and
> +G.8264. Two network options are supported: option 1 and option 2.
> +
> +Table showing priority of quality levels (QLs) in option 1 networks:
> +| Quality Level | Priority* | SSM | Extended SSM** |
> +| ------------- | --------- | --- | -------------- |
> +| ePRTC         | 0         | 0x2 | 0x21           |
> +| PRTC          | 1         | 0x2 | 0x20           |
> +| PRC           | 2         | 0x2 | 0xFF           |
> +| SSU-A         | 3         | 0x4 | 0xFF           |
> +| SSU-B         | 4         | 0x8 | 0xFF           |
> +
> +Table showing priority of quality levels (QLs) in option 2 networks:
> +| Quality Level | Priority* | SSM | Extended SSM** |
> +| ------------- | --------- | --- | -------------- |
> +| ePRTC         | 0         | 0x1 | 0x21           |
> +| PRTC          | 1         | 0x1 | 0x20           |
> +| PRS           | 2         | 0x1 | 0xFF           |
> +| STU           | 3         | 0x0 | 0xFF           |
> +| ST2           | 4         | 0x7 | 0xFF           |
> +| TNC           | 5         | 0x4 | 0xFF           |
> +| ST3E          | 6         | 0xD | 0xFF           |
> +| PROV          | 7         | 0xE | 0xFF           |
> +
> +> *Remark:* *Lower number means higher priority
> +
> +> *Remark:* **If extended SSM is not enabled, it's implicitly assumed as 
> `0xFF`
> +
> +### External input
> +If `synce4l` is configured to run in "external" input mode then DPLL needs to
> +have external 1PPS source attached (GPS or other generator).
> +In this scenario `synce4l` always broadcasts clock quality level (QL) defined
> +in configuration file. Additionally, for “external” mode incoming Sync-E
> +frames do not participate in best source selection algorithm for DPLL.
> +
> +### Internal input
> +In "internal input" mode incoming Sync-E frames are processed and best clock
> +source is extracted from the link having the best quality level.
> +`synce4l` configures such "best quality" port as a source to recover clock
> +for DPLL. The recovered QL is broadcasted to all other interfaces then.
> +An external clock cannot be used in this mode.
> +
> +---
> +## 2\. Compilation
> +Makefile rules are included in linuxptp `makefile` and compilation is done 
> using
> +the command:
> +```
> +make synce4l
> +```
> +
> +---
> +## 3\. Installation
> +Use `make install` target to install `synce4l` in a system.
> +
> +---
> +## 4\. Usage
> +Use `-h` command line argument to print the help page:
> +```
> +$? ./synce4l -h
> +usage: synce4l [options]
> +
> + ...
> +
> + Other Options
> +
> + -f [file] read configuration from 'file'
> +           (config file takes precedence over command line arguments)
> + -l [num]  set the logging level to 'num'
> +           (0: least detailed, 7: most detailed)
> + -m        print messages to stdout
> + -q        do not print messages to the syslog
> + -v        print synce4l version and exit
> + -h        print this message and exit
> +```
> +
> +> *Remark:* `synce4l` requires root privileges since it opens raw sockets.
> +
> +---
> +## 5\. Config
> +### Configuration file contains three sections:
> +- global,
> +- device,
> +- port.
> +
> +### Global section
> +This section starts with `[global]` keyword. It sets the logging options.
> +
> +| Parameter       | Default | Valid values | Description                     
>                |
> +| --------------- | ------- | ------------ | 
> ---------------------------------------------- |
> +| `logging_level` | `6`     | `0-7`        | Minimum log level required to 
> appear in a log. |
> +| `message_tag`   | None    | string       | Tag reported in a log.          
>                |
> +| `use_syslog`    | `1`     | `0`, `1`     | Set to 1 if `syslog` should be 
> used.           |
> +| `verbose`       | `0`     | `0`, `1`     | Set to 1 to log extra 
> information.             |
> +
> +### Device section
> +This section specifies the configuration of a one logical device e.g. 
> 'synce1'.
> +The name is defined by the user. The name has no impact for any functionality
> +except traces.
> +The name must be enclosed in extra angle bracket when defining new device
> +section e.g. [<synce1>].
> +All ports defined by port sections after the device section will create one
> +SyncE device (until next device section).
> +
> +| Parameter               | Default | Valid values | Description             
>                                                                               
>                                                              |
> +| ----------------------- | ------- | ------------ | 
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------
>  |
> +| `internal_input`        | `1`     | `0`, `1`     | Set to 1 to enable 
> "internal input" mode. Mutually exclusive with `external_input` parameter.    
>                                                                   |
> +| `external_input`        | `0`     | `0`, `1`     | Set to 1 to enable 
> "external input" mode. Mutually exclusive with `internal_input` parameter. 
> Takes precedence over `internal_input` parameter.                    |
> +| `external_input_QL`     | `0`     | `0-15`       | Quality Level (QL) for 
> "external input" mode.                                                        
>                                                               |
> +| `external_input_ext_QL` | `0`     | `0-255`      | Extended Quality Level 
> for "external input" mode.                                                    
>                                                               |
> +| `extended_tlv`          | `0`     | `0`, `1`     | Set to 1 to enable 
> extended QL.                                                                  
>                                                                   |
> +| `network_option`        | `1`     | `1`, `2`     | Network option 
> according to T-REC-G.8264. All devices in Sync-E domain should have the same 
> option configured.                                                     |
> +| `recover_time`          | `60`    | `10-720`     | Seconds indicating the 
> minimum time to recover from the QL-failed state on the port.                 
>                                                               |
> +| `get_dpll_state_cmd`    | None    | string       | Shell command which 
> will be executed by synce4l to acquire current state of a Sync-E DPLL on the 
> device. The command shall output current state of DPLL to stdout. |
> +| `dpll_holdover_value`   | None    | string       | Value expected on 
> stdout stream when DPLL is in HOLDOVER state, after calling command defined 
> in get_dpll_state_cmd                                                |
> +| `dpll_locked_ho_value`  | None    | string       | Value expected on 
> stdout stream when DPLL is in LOCKED HOLDOVER state, after calling command 
> defined in get_dpll_state_cmd                                         |
> +| `dpll_locked_value`     | None    | string       | Value expected on 
> stdout stream when DPLL is in LOCKED state, after calling command defined in 
> get_dpll_state_cmd                                                  |
> +| `dpll_freerun_value`    | None    | string       | Value expected on 
> stdout stream when DPLL is in FREERUN state, after calling command defined in 
> get_dpll_state_cmd                                                 |
> +| `dpll_invalid_value`    | None    | string       | Value expected on 
> stdout stream when DPLL is in INVALID state, after calling command defined in 
> get_dpll_state_cmd                                                 |
> +
> +### Port section
> +Any other section not starting with `<` (e.g. [eth0]) is the port section.
> +Multiple port sections are allowed. Each port participates in Sync-E
> +communication.
> +
> +| Parameter                   | Default | Valid values | Description         
>                                                                               
>                                                                              |
> +| --------------------------- | ------- | ------------ | 
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>  |
> +| `sync`                      | `0`     | `0`, `1`     | Set to 1 to enable 
> the port for Sync-E communication (i.e. best source selection and QLs 
> advertisement).                                                               
>         |
> +| `tx_heartbeat_msec`         | `1000`  | `100-3000`   | Interval between 
> consecutive Sync-E frame transmissions (1000ms is recommended).               
>                                                                               
>   |
> +| `rx_heartbeat_msec`         | `50`    | `10-500`     | Interval between 
> consecutive Sync-E socket polls (frame receive).                              
>                                                                               
>   |
> +| `recover_clock_enable_cmd`  | None    | string       | Shell command which 
> enables PHY port pointed by this Port section as a source of frequency for 
> the Sync-E DPLL on this device (required only in "internal_input" mode).      
>   |
> +| `recover_clock_disable_cmd` | None    | string       | Shell command which 
> disables PHY port pointed by this Port section as a source of frequency for 
> the Sync-E DPLL on this device (required only in "internal_input" mode).      
>  |
> +| `allowed_qls`               | None    | string       | List of integers 
> containing allowed SSM QLs separated by comma (`,`), other received ones 
> would be discarded - if parameter is not provided, all QLs will be accepted   
>        |
> +| `allowed_ext_qls`           | None    | string       | List of integers 
> containing allowed extended SSM QLs separated by comma (`,`), other received 
> ones would be discarded - if parameter is not provided, all QLs will be 
> accepted |
> +
> +> *Remark:* Please do not use backslashes in config file in 'string' fields 
> - for example do not use it like this: 
> `"/sys/kernel/debug/ice/0000\:5e\:00\.0/cgu_state"`
> +
> +### Config example
> +
> +```
> +[global]
> +logging_level              7
> +use_syslog                 0
> +verbose                    1
> +message_tag                [synce4l]
> +
> +[<synce1>]
> +internal_input             0
> +external_input             1
> +network_option             1
> +external_input_QL          11
> +external_input_ext_QL      33
> +extended_tlv               1
> +recover_time               20
> +dpll_get_state_cmd         cat /sys/class/net/eth0/device/cgu_state
> +dpll_holdover_value        4
> +dpll_locked_ho_value       3
> +dpll_locked_value          2
> +dpll_freerun_value         1
> +dpll_invalid_value         0
> +
> +[eth0]
> +sync                       1
> +tx_heartbeat_msec          1000
> +rx_heartbeat_msec          500
> +recover_clock_enable_cmd   echo 1 0 > /sys/class/net/eth0/device/phy/synce
> +recover_clock_disable_cmd  echo 0 0 > /sys/class/net/eth0/device/phy/synce
> +allowed_qls                3,4,7
> +allowed_ext_qls            20,21
> +
> +[eth1]
> +sync                       0
> +```
> +
> +---
> +
> -- 
> 2.34.1
> 
> 
> 
> _______________________________________________
> Linuxptp-devel mailing list
> Linuxptp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxptp-devel



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to