On Wed, 2022-12-07 at 17:34 +0530, SyncMonk Technologies wrote:
> adding interface rate TLV as defined by ITU-T G.8275.2 Annex D to
> enable master to communicate PTP port interface rate to slave.
> 
> Signed-off-by: Greg Armstrong <greg.armstrong...@renesas.com>
> Signed-off-by: Leon Goldin <leon.goldin...@renesas.com>
> Signed-off-by: Devasish Dey <devasish....@syncmonk.net>
> Signed-off-by: Vipin Sharma <vipin.sha...@syncmonk.net>
> ---
>  config.c       |  1 +
>  pdt.h          |  1 +
>  port.c         |  1 +
>  port_private.h |  1 +
>  tlv.c          |  1 +
>  tlv.h          | 14 ++++++++++++++
>  6 files changed, 19 insertions(+)
> 
> diff --git a/config.c b/config.c
> index 08e3346..2fa95fc 100644
> --- a/config.c
> +++ b/config.c
> @@ -267,6 +267,7 @@ struct config_item config_tab[] = {
>         PORT_ITEM_INT("inhibit_delay_req", 0, 0, 1),
>         PORT_ITEM_INT("inhibit_multicast_service", 0, 0, 1),
>         GLOB_ITEM_INT("initial_delay", 0, 0, INT_MAX),
> +       PORT_ITEM_INT("interface_rate_tlv", 0, 0, 1),
>         GLOB_ITEM_INT("kernel_leap", 1, 0, 1),
>         GLOB_ITEM_STR("leapfile", NULL),
>         PORT_ITEM_INT("logAnnounceInterval", 1, INT8_MIN, INT8_MAX),
> diff --git a/pdt.h b/pdt.h
> index e46b218..1ad23d4 100644
> --- a/pdt.h
> +++ b/pdt.h
> @@ -39,6 +39,7 @@ typedef uint16_t  UInteger16;
>  typedef int32_t   Integer32;
>  typedef uint32_t  UInteger32;
>  typedef int64_t   Integer64;
> +typedef uint64_t  UInteger64;
IEEE 1588-2019 only define Integer64, but not UInteger64.
Not sure why, but probably there is no UInteger64 in IEEE standard.
Are you using UInteger64 for a standard parameter/variables?

>  typedef uint8_t   Octet;
>  
>  #endif
> diff --git a/port.c b/port.c
> index 7fd50dd..85cfa4a 100644
> --- a/port.c
> +++ b/port.c
> @@ -1854,6 +1854,7 @@ int port_initialize(struct port *p)
>         p->neighborPropDelayThresh = config_get_int(cfg, p->name,
> "neighborPropDelayThresh");
>         p->min_neighbor_prop_delay = config_get_int(cfg, p->name,
> "min_neighbor_prop_delay");
>         p->delay_response_timeout  = config_get_int(cfg, p->name,
> "delay_response_timeout");
> +       p->iface_rate_tlv          = config_get_int(cfg, p->name,
> "interface_rate_tlv");
>  
>         if (config_get_int(cfg, p->name, "asCapable") ==
> AS_CAPABLE_TRUE) {
>                 p->asCapable = ALWAYS_CAPABLE;
> diff --git a/port_private.h b/port_private.h
> index d27dceb..d6487eb 100644
> --- a/port_private.h
> +++ b/port_private.h
> @@ -145,6 +145,7 @@ struct port {
>         UInteger8           versionNumber; /* UInteger4 */
>         UInteger8           delay_response_counter;
>         UInteger8           delay_response_timeout;
> +       bool                iface_rate_tlv;
Again, using bool in structure is unwise.
Better use uint8_t and not UInteger8, so we now it is not standard type
and with a comment saying it holds a boolean value.

>         struct PortStats    stats;
>         struct PortServiceStats    service_stats;
>         /* foreignMasterDS */
> diff --git a/tlv.c b/tlv.c
> index 1c13460..35bee4f 100644
> --- a/tlv.c
> +++ b/tlv.c
> @@ -35,6 +35,7 @@
>         (tlv->length < sizeof(struct type) - sizeof(struct TLV))
>  
>  uint8_t ieee8021_id[3] = { IEEE_802_1_COMMITTEE };
> +uint8_t itu_t_id[3] = { ITU_T_COMMITTEE };
>  
>  static TAILQ_HEAD(tlv_pool, tlv_extra) tlv_pool =
>         TAILQ_HEAD_INITIALIZER(tlv_pool);
> diff --git a/tlv.h b/tlv.h
> index 8966696..ec22e2f 100644
> --- a/tlv.h
> +++ b/tlv.h
> @@ -395,6 +395,20 @@ struct tlv_extra {
>         };
>  };
>  
> +/* Organizationally Unique Identifiers */
> +#define ITU_T_COMMITTEE 0x00, 0x19, 0xA7
> +extern uint8_t itu_t_id[3];
> +
> +struct msg_interface_rate_tlv {
> +       Enumeration16 type;
> +       UInteger16    length;
> +       Octet         id[3];
> +       Octet         subtype[3];
> +       UInteger64    interfaceBitPeriod;
> +       UInteger16    numberOfBitsBeforeTimestamp;
> +       UInteger16    numberOfBitsAfterTimestamp;
> +} PACKED;
> +
>  /**
>   * Allocates a new tlv_extra structure.
>   * @return  Pointer to a new structure on success or NULL otherwise.


Erez

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

Reply via email to