tpd and pds Depending upon system load, the read pmc call can timeout. When it happens the corresponding data set is reset, allowing the HA algorithm to switch over the current source. Although the read timeout is undesirable, the error message is misleading because the failure is mitigated. Downgrade the error message to notice to disable it in the default log level. Test Plan: PASS: Deploy T-BC with single PTP4L instance - Load system (stress -c 64 -m 5 -t 60) check user.log, phc2sys not showing the error message phc2sys: notice [1200995.017] phc-inst2 pmc agent index 0, timeout reading pmc tpd PASS: Deploy T-BC with single PTP4L instance - Adjust the log to debug level system ptp-instance-parameter-add phc-inst2 logging_level=7 - Load system (stress -c 64 -m 5 -t 60) check user.log, phc2sys eventually shows the error message phc2sys: notice [1215208.628] phc-inst2 pmc agent index 0, timeout reading pmc tpd PASS: Build linuxptp package Closes-Bug: 2132273 Change-Id: I3e05de4006c0e35b725178d9e56eaf8c72d52747 Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
93 lines
2.6 KiB
Diff
93 lines
2.6 KiB
Diff
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Mon, 12 Jun 2023 14:58:09 -0300
|
|
Subject: [PATCH 17/67] Find a better home for the management TLV ID helper
|
|
function.
|
|
|
|
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
|
|
|
|
[commit d95bb9f9d62f4f372934905e97e052aa68dcfc58 upstream]
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
msg.h | 12 ++++++++++++
|
|
phc2sys.c | 2 +-
|
|
pmc_agent.c | 10 +---------
|
|
pmc_agent.h | 1 -
|
|
4 files changed, 14 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/msg.h b/msg.h
|
|
index e71d3ce..b600ff0 100644
|
|
--- a/msg.h
|
|
+++ b/msg.h
|
|
@@ -247,6 +247,18 @@ static inline uint8_t management_action(struct ptp_message *m)
|
|
return m->management.flags & 0x0f;
|
|
}
|
|
|
|
+/**
|
|
+ * Obtain the ID field from the TLV in a management message.
|
|
+ * @param m A management message.
|
|
+ * @return The value of the ID field.
|
|
+ */
|
|
+static inline int management_tlv_id(struct ptp_message *m)
|
|
+{
|
|
+ struct management_tlv *mgt;
|
|
+ mgt = (struct management_tlv *) m->management.suffix;
|
|
+ return mgt->id;
|
|
+}
|
|
+
|
|
/**
|
|
* Test a given bit in a message's flag field.
|
|
* @param m Message to test.
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index 037b1b9..1f74f27 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -819,7 +819,7 @@ static int phc2sys_recv_subscribed(void *context, struct ptp_message *msg,
|
|
struct port *port;
|
|
struct clock *clock;
|
|
|
|
- mgt_id = get_mgt_id(msg);
|
|
+ mgt_id = management_tlv_id(msg);
|
|
if (mgt_id == excluded)
|
|
return 0;
|
|
switch (mgt_id) {
|
|
diff --git a/pmc_agent.c b/pmc_agent.c
|
|
index 8ccafe2..6dfb3ca 100644
|
|
--- a/pmc_agent.c
|
|
+++ b/pmc_agent.c
|
|
@@ -85,14 +85,6 @@ static int is_msg_mgt(struct ptp_message *msg)
|
|
return 0;
|
|
}
|
|
|
|
-int get_mgt_id(struct ptp_message *msg)
|
|
-{
|
|
- struct management_tlv *mgt;
|
|
-
|
|
- mgt = (struct management_tlv *) msg->management.suffix;
|
|
- return mgt->id;
|
|
-}
|
|
-
|
|
void *get_mgt_data(struct ptp_message *msg)
|
|
{
|
|
struct management_tlv *mgt;
|
|
@@ -174,7 +166,7 @@ static int run_pmc(struct pmc_agent *node, int timeout, int ds_id,
|
|
}
|
|
if (res <= 0 ||
|
|
node->recv_subscribed(node->recv_context, *msg, ds_id) ||
|
|
- get_mgt_id(*msg) != ds_id) {
|
|
+ management_tlv_id(*msg) != ds_id) {
|
|
msg_put(*msg);
|
|
*msg = NULL;
|
|
continue;
|
|
diff --git a/pmc_agent.h b/pmc_agent.h
|
|
index c0b4525..09249ff 100644
|
|
--- a/pmc_agent.h
|
|
+++ b/pmc_agent.h
|
|
@@ -43,7 +43,6 @@ int run_pmc_port_properties(struct pmc_agent *agent, int timeout,
|
|
unsigned int port, int *state,
|
|
int *tstamping, char *iface);
|
|
int run_pmc_get_utc_offset(struct pmc_agent *agent, int timeout);
|
|
-int get_mgt_id(struct ptp_message *msg);
|
|
void *get_mgt_data(struct ptp_message *msg);
|
|
|
|
|