integ/base/linuxptp/debian/patches/0004-port-Don-t-renew-raw-transport.patch
Cole Walker acadeca144 Fix uninitialized ts2phc variable in nmea_scan_rmc
This change pulls in an upstream linuxptp fix to initialize the tm_isdst
variable.

An unitialized tm_isdst variable in ts2phc can result in mktime failing
and cause ts2phc to be unable to sync time with a "invalid master time
stamp" error.

The fault was intermittent based on the random value in the unitialized
variable. If it was read as a positive integer, mktime would fail and
the symptom would occur.

The upstream commit id is:
63fc1ef4fd5e5fc45dd4de3bf27920bb109a4357

Test plan:
Pass: Verify package build
Pass: Deploy updated ts2phc binary and perform repeated service
start/stops. The fault was not reproduced after 20 attempts.

Closes-bug: https://bugs.launchpad.net/starlingx/+bug/2055464

Change-Id: I9fb1722c6ab93f6bb9ec6cdc4fbe902a823b3e2e
Signed-off-by: Cole Walker <cole.walker@windriver.com>
2024-03-01 13:43:45 -05:00

44 lines
1.4 KiB
Diff

From ab617c7f70e8d8bc66673412a536fc1a8cf3584c Mon Sep 17 00:00:00 2001
From: Miroslav Lichvar <mlichvar@redhat.com>
Date: Mon, 31 May 2021 11:07:55 +0200
Subject: [PATCH 04/57] port: Don't renew raw transport.
Renewing of the transport on announce/sync timeout is needed in the
client-only mode to avoid getting stuck with a broken multicast socket
when the link goes down.
This shouldn't be necessary with the raw transport. Closing and binding
of raw sockets can apparently be so slow that it triggers a false
positive in the clock check.
Reported-by: Amar Subramanyam <asubramanyam@altiostar.com>
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
[commit 6df84259647757bc53818a039734f8ff85618c02 upstream]
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
---
port.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/port.c b/port.c
index 8cf3f59..f22bff4 100644
--- a/port.c
+++ b/port.c
@@ -1796,6 +1796,12 @@ static int port_renew_transport(struct port *p)
if (!port_is_enabled(p)) {
return 0;
}
+
+ /* Closing and binding of raw sockets is too slow and unnecessary */
+ if (transport_type(p->trp) == TRANS_IEEE_802_3) {
+ return 0;
+ }
+
transport_close(p->trp, &p->fda);
port_clear_fda(p, FD_FIRST_TIMER);
res = transport_open(p->trp, p->iface, &p->fda, p->timestamping);
--
2.30.2