> > 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? > [Devasish]: Yes this is not part of IEEE 1588. But it is part of ITU-T G.8275. But this can be used for other profiles as well.
>From ITU-T G.8275.2 (03/2020) Table D.1 " interfaceBitPeriod (Uinteger64) The period of 1-bit of the transmitting PTP timestamp interface, excluding line encoding. The value is encoded as an unsigned integer in units of attoseconds (10–18 s) to accommodate interface bit periods less than 1 ns." > 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 */ > [Devasish]: Will leave this to Richard for comments. Thanks, Devasish On Fri, 9 Dec 2022 at 17:39, Geva, Erez <erez.geva....@siemens.com> wrote: > 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 >
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel