On Wed, Aug 24, 2022 at 03:57:12PM +0530, SyncMonk Technologies wrote:
> @@ -1595,6 +1611,10 @@ int port_tx_announce(struct port *p, struct address
> *dst, uint16_t sequence_id)
>
> msg->header.flagField[1] = tp.flags;
>
> + if (p->state != PS_MASTER && clock_telecom_profile(p->clock)) {
> + msg->header.flagField[0] |= ALT_MASTER;
> + }
> +
This is so wrong.
1. When (p->state != PS_MASTER), then the port has no business
transmitting Announce messages.
2. The ALT_MASTER flag has nothing to do with "clock_telecom_profile()".
Rather it is an optional part of 1588, independent of any profile.
> @@ -1674,6 +1694,10 @@ int port_tx_sync(struct port *p, struct address *dst,
> uint16_t sequence_id)
> msg->header.flagField[0] |= TWO_STEP;
> }
>
> + if (p->state != PS_MASTER && clock_telecom_profile(p->clock)) {
> + msg->header.flagField[0] |= ALT_MASTER;
> + }
ditto
> @@ -2455,19 +2513,22 @@ void process_sync(struct port *p, struct ptp_message
> *m)
> case PS_DISABLED:
> case PS_LISTENING:
> case PS_PRE_MASTER:
> - case PS_MASTER:
> case PS_GRAND_MASTER:
> case PS_PASSIVE:
> return;
> + case PS_MASTER:
> + if (!p->altMaster) {
> + return;
> + }
> + break;
Seriously. If port state is PS_MASTER, then it shouldn't process Sync messages!
Thanks,
Richard
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel