I understand that standard defines ptp at instance level, but look this

https://github.com/YangModels/yang/blob/main/experimental/ieee/1588/ni-ieee1588-ptp.yang

and my proposal was to support broken local hw and broken external hw in a
dynamic way.

ciao

luigi



Il giorno ven 10 nov 2023 alle ore 15:12 Maciek Machnikowski <
mac...@machnikowski.net> ha scritto:

>
>
> On 11/10/2023 2:48 PM, Luigi Mantellini wrote:
> > I prefer another approach :
> >
> >
> > 1) All should have the same request ptp version (es: delay-resp copy ptp
> > version from delay-req, management answers copy from queries, ... and so.
> NAK this would cause trying to respond with 2.1 packets to the 2.1
> delay-req which will cause some hw to still not generate timestamps
>
> >
> > 2) The major and  version numbers are explicit port level options
> NAK the standard says that version is implemented by the PTP Instance
> issuing a PTP message, not a per-port option.
>
> Thanks,
> Maciek
>
> >
> >
> >
> > 1) permits to fight with other legacy (And broken) network nodes and it
> > is enabled from a port level config like "ptp_version_auto"
> >
> > 2) permits to handle broken local HW. Here we have two port level
> > configs like "ptp_major_number" and "ptp_minor_number"
> >
> >
> > ciao
> >
> >
> > luigi
> >
> >
> >
> >
> > In data venerdì 10 novembre 2023 14:10:37 CET, Maciek Machnikowski ha
> > scritto:
> >
> >> Caution: This message was sent from an external source. Please take care
> >
> >> when clicking links or opening attachments. When in doubt, contact your
> IT
> >
> >> Department
> >
> >>
> >
> >>
> >
> >> Some hardware can't properly timestamp packets with the new PTP
> >
> >> header version 2.1. This patch introduces a global var ptp_hdr_ver
> >
> >> that can be changed externally to allow legacy PTP version to be
> >
> >> advertised.
> >
> >>
> >
> >> Forcing 2.1 also breaks interoperability with some older
> >
> >> grandmasters which will ignore packets with ptp_minor version set.
> >
> >>
> >
> >> v2: clarify compatibility issue caused by the change
> >
> >> v3: fix subject line
> >
> >>
> >
> >> Signed-off-by: Maciek Machnikowski <mac...@machnikowski.net>
> >
> >> ---
> >
> >>  msg.c  |  1 +
> >
> >>  msg.h  |  5 +++++
> >
> >>  port.c | 18 +++++++++---------
> >
> >>  3 files changed, 15 insertions(+), 9 deletions(-)
> >
> >>
> >
> >> diff --git a/msg.c b/msg.c
> >
> >> index ab841f0..7a7b149 100644
> >
> >> --- a/msg.c
> >
> >> +++ b/msg.c
> >
> >> @@ -29,6 +29,7 @@
> >
> >>  #include "tlv.h"
> >
> >>
> >
> >>  int assume_two_step = 0;
> >
> >> +uint8_t ptp_hdr_ver = PTP_VERSION;
> >
> >>
> >
> >>  /*
> >
> >>   * Head room fits a VLAN Ethernet header, and 'msg' is 64 bit aligned.
> >
> >> diff --git a/msg.h b/msg.h
> >
> >> index 484435d..9c80f45 100644
> >
> >> --- a/msg.h
> >
> >> +++ b/msg.h
> >
> >> @@ -441,6 +441,11 @@ static inline Boolean msg_unicast(struct
> ptp_message
> >
> >> *m) return field_is_set(m, 0, UNICAST);
> >
> >>  }
> >
> >>
> >
> >> +/**
> >
> >> + * Work around HW assuming PTP message version 2.0
> >
> >> + */
> >
> >> +extern uint8_t ptp_hdr_ver;
> >
> >> +
> >
> >>  /**
> >
> >>   * Work around buggy 802.1AS switches.
> >
> >>   */
> >
> >> diff --git a/port.c b/port.c
> >
> >> index 5803cd3..d79a510 100644
> >
> >> --- a/port.c
> >
> >> +++ b/port.c
> >
> >> @@ -1538,7 +1538,7 @@ static int port_pdelay_request(struct port *p)
> >
> >>         msg->hwts.type = p->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = PDELAY_REQ |
> > p->transportSpecific;
> >
> >> -       msg->header.ver                = PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct pdelay_req_msg);
> >
> >>         msg->header.domainNumber       = clock_domain_number(p->clock);
> >
> >>         msg->header.correction         = -p->asymmetry;
> >
> >> @@ -1601,7 +1601,7 @@ int port_delay_request(struct port *p)
> >
> >>         msg->hwts.type = p->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = DELAY_REQ |
> p->transportSpecific;
> >
> >> -       msg->header.ver                = PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct delay_req_msg);
> >
> >>         msg->header.domainNumber       = clock_domain_number(p->clock);
> >
> >>         msg->header.correction         = -p->asymmetry;
> >
> >> @@ -1653,7 +1653,7 @@ int port_tx_announce(struct port *p, struct
> address
> >
> >> *dst, uint16_t sequence_id) msg->hwts.type = p->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = ANNOUNCE |
> p->transportSpecific;
> >
> >> -       msg->header.ver                = PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct announce_msg);
> >
> >>         msg->header.domainNumber       = clock_domain_number(p->clock);
> >
> >>         msg->header.sourcePortIdentity = p->portIdentity;
> >
> >> @@ -1735,7 +1735,7 @@ int port_tx_sync(struct port *p, struct address
> > *dst,
> >
> >> uint16_t sequence_id) msg->hwts.type = p->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = SYNC | p->transportSpecific;
> >
> >> -       msg->header.ver                = PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct sync_msg);
> >
> >>         msg->header.domainNumber       = clock_domain_number(p->clock);
> >
> >>         msg->header.sourcePortIdentity = p->portIdentity;
> >
> >> @@ -1770,7 +1770,7 @@ int port_tx_sync(struct port *p, struct address
> > *dst,
> >
> >> uint16_t sequence_id) fup->hwts.type = p->timestamping;
> >
> >>
> >
> >>         fup->header.tsmt               = FOLLOW_UP |
> p->transportSpecific;
> >
> >> -       fup->header.ver                = PTP_VERSION;
> >
> >> +       fup->header.ver                = ptp_hdr_ver;
> >
> >>         fup->header.messageLength      = sizeof(struct follow_up_msg);
> >
> >>         fup->header.domainNumber       = clock_domain_number(p->clock);
> >
> >>         fup->header.sourcePortIdentity = p->portIdentity;
> >
> >> @@ -2119,7 +2119,7 @@ static int process_delay_req(struct port *p,
> struct
> >
> >> ptp_message *m) msg->hwts.type = p->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = DELAY_RESP |
> > p->transportSpecific;
> >
> >> -       msg->header.ver                = PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct delay_resp_msg);
> >
> >>         msg->header.domainNumber       = m->header.domainNumber;
> >
> >>         msg->header.correction         = m->header.correction;
> >
> >> @@ -2310,7 +2310,7 @@ int process_pdelay_req(struct port *p, struct
> >
> >> ptp_message *m) rsp->hwts.type = p->timestamping;
> >
> >>
> >
> >>         rsp->header.tsmt               = PDELAY_RESP |
> > p->transportSpecific;
> >
> >> -       rsp->header.ver                = PTP_VERSION;
> >
> >> +       rsp->header.ver                = ptp_hdr_ver;
> >
> >>         rsp->header.messageLength      = sizeof(struct pdelay_resp_msg);
> >
> >>         rsp->header.domainNumber       = m->header.domainNumber;
> >
> >>         rsp->header.sourcePortIdentity = p->portIdentity;
> >
> >> @@ -2356,7 +2356,7 @@ int process_pdelay_req(struct port *p, struct
> >
> >> ptp_message *m) fup->hwts.type = p->timestamping;
> >
> >>
> >
> >>         fup->header.tsmt               = PDELAY_RESP_FOLLOW_UP |
> >
> >> p->transportSpecific; -       fup->header.ver                =
> > PTP_VERSION;
> >
> >> +       fup->header.ver                = ptp_hdr_ver;
> >
> >>         fup->header.messageLength      = sizeof(struct
> > pdelay_resp_fup_msg);
> >
> >> fup->header.domainNumber       = m->header.domainNumber;
> >
> >>         fup->header.correction         = m->header.correction;
> >
> >> @@ -3204,7 +3204,7 @@ port_management_construct(struct PortIdentity pid,
> >
> >> struct port *ingress, msg->hwts.type = ingress->timestamping;
> >
> >>
> >
> >>         msg->header.tsmt               = MANAGEMENT |
> >
> >> ingress->transportSpecific; -       msg->header.ver                =
> >
> >> PTP_VERSION;
> >
> >> +       msg->header.ver                = ptp_hdr_ver;
> >
> >>         msg->header.messageLength      = sizeof(struct management_msg);
> >
> >>         msg->header.domainNumber       =
> >
> >> clock_domain_number(ingress->clock); msg->header.sourcePortIdentity =
> pid;
> >
> >> --
> >
> >> 2.30.2
> >
> >>
> >
> >>
> >
> >>
> >
> >> _______________________________________________
> >
> >> Linuxptp-devel mailing list
> >
> >> Linuxptp-devel@lists.sourceforge.net
> >
> >>
> >
> https://eur05.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.sour
> >
> >>
> > ceforge.net
> %2Flists%2Flistinfo%2Flinuxptp-devel&data=05%7C01%7Cluigi.mantell
> >
> >>
> > ini%40sm-optics.com
> %7C7209ac53114f49d6817f08dbe1eec643%7C213385be51b14c00838
> >
> >>
> >
> 4b599671fbf95%7C0%7C0%7C638352187880607373%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiM
> >
> >>
> >
> C4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sd
> >
> >> ata=FZoMXrd7WE%2BTj4KlbTTGipc8wdP2XrF9x%2BAq8oS0y2Q%3D&reserved=0
> >
> >
> >
> > --
> >
> > *Luigi Mantellini*
> >
> > Senior Software Developer
> >
> > Tel. (+39) 342 182 3893
> >
> > luigi.mantell...@sm-optics.com <mailto:luigi.mantell...@sm-optics.com>
> >
> >
> >
> >
> >
> > *SM-Optics s.r.l.*
> >
> > SIAE Microelettronica Group
> >
> > Via Michelangelo Buonarroti, 2
> >
> > 20093 Cologno Monzese, Milano
> >
> > ITALY
> >
> > Tel. (+39) 02 273 251
> >
> > Fax (+39) 02 253
> >
> > https://www.sm-optics.com <https://www.sm-optics.com>
> >
> >
>
>
> _______________________________________________
> Linuxptp-devel mailing list
> Linuxptp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxptp-devel
>


-- 
*Luigi 'Comio' Mantellini*
My Professional Profile <http://www.linkedin.com/in/comio>

*"UNIX is very simple, it just needs a genius to understand its
simplicity." [cit.]*
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to