Fixed the port id map in the Port Data Set event handling. The port id is composed by port number and node index after the HA implementation. Code tidying. As definition, the port id and the port number are different. An existing port number variable was rennamed to prevent missinterpretation. Code tidying. The HA node state change processing was disabled when HA feature is not enabled. Test plan: PASS: Verify the phc2sys executable recognizes the port in the port state change event, when -a configuration option is used PASS: Verify the events in the HA scenario are being recognized Story: 2010723 Task: 49405 Change-Id: Iea2b3c4e7d7dcd07ca2ad52bc4042f80282b1a9a Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
85 lines
2.7 KiB
Diff
85 lines
2.7 KiB
Diff
From e4fd6a930213e6f0f009eb070d51b1e14db60d1b Mon Sep 17 00:00:00 2001
|
|
From: Miroslav Lichvar <mlichvar@redhat.com>
|
|
Date: Wed, 18 May 2022 11:33:38 +0200
|
|
Subject: [PATCH 10/56] phc2sys: Don't exit when reading of PHC fails with EBUSY.
|
|
|
|
Reading of the PHC can occasionally fail with some drivers, e.g. the ice
|
|
driver returns EBUSY when it fails to get a lock. Continue in the loop
|
|
instead of exiting on the error.
|
|
|
|
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
|
|
|
|
[ commit e8dc364f9fd5fbdac5d2c5e433f28e9da0028d49 upstream
|
|
We drop two hunks of it, namely the stuff that applies to
|
|
clockadj_compare, because they apply to the source code
|
|
ahead of baseline currently used by StarlingX ]
|
|
|
|
Signed-off-by: Douglas Henrique Koerich <douglashenrique.koerich@windriver.com>
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
phc2sys.c | 31 +++++++++++++++++++------------
|
|
1 file changed, 19 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index 44d6872..7959015 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -722,6 +722,7 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions)
|
|
struct clock *clock;
|
|
uint64_t ts;
|
|
int64_t offset, delay;
|
|
+ int err;
|
|
|
|
interval.tv_sec = priv->phc_interval;
|
|
interval.tv_nsec = (priv->phc_interval - interval.tv_sec) * 1e9;
|
|
@@ -765,28 +766,34 @@ static int do_loop(struct phc2sys_private *priv, int subscriptions)
|
|
if (clock->clkid == CLOCK_REALTIME &&
|
|
priv->master->sysoff_method >= 0) {
|
|
/* use sysoff */
|
|
- if (sysoff_measure(CLOCKID_TO_FD(priv->master->clkid),
|
|
- priv->master->sysoff_method,
|
|
- priv->phc_readings,
|
|
- &offset, &ts, &delay) < 0)
|
|
- return -1;
|
|
+ err = sysoff_measure(CLOCKID_TO_FD(priv->master->clkid),
|
|
+ priv->master->sysoff_method,
|
|
+ priv->phc_readings,
|
|
+ &offset, &ts, &delay);
|
|
} else if (priv->master->clkid == CLOCK_REALTIME &&
|
|
clock->sysoff_method >= 0) {
|
|
/* use reversed sysoff */
|
|
- if (sysoff_measure(CLOCKID_TO_FD(clock->clkid),
|
|
- clock->sysoff_method,
|
|
- priv->phc_readings,
|
|
- &offset, &ts, &delay) < 0)
|
|
- return -1;
|
|
- offset = -offset;
|
|
- ts += offset;
|
|
+ err = sysoff_measure(CLOCKID_TO_FD(clock->clkid),
|
|
+ clock->sysoff_method,
|
|
+ priv->phc_readings,
|
|
+ &offset, &ts, &delay);
|
|
+ if (!err) {
|
|
+ offset = -offset;
|
|
+ ts += offset;
|
|
+ }
|
|
} else {
|
|
+ err = 0;
|
|
/* use phc */
|
|
if (!read_phc(priv->master->clkid, clock->clkid,
|
|
priv->phc_readings,
|
|
&offset, &ts, &delay))
|
|
continue;
|
|
}
|
|
+ if (err == -EBUSY)
|
|
+ continue;
|
|
+ if (err)
|
|
+ return -1;
|
|
+
|
|
update_clock(priv, clock, offset, ts, delay);
|
|
}
|
|
}
|
|
--
|
|
2.29.2
|
|
|