milan-avb: gptp: handle MANAGEMENT_ERROR_STATUS TLV as stale-data signal

This commit is contained in:
hackerman-kl 2026-04-29 07:50:44 +02:00
parent 09b3f0dc34
commit 4da6e39281
2 changed files with 13 additions and 1 deletions

View file

@ -588,8 +588,19 @@ static void on_ptp_mgmt_data(void *data, int fd, uint32_t mask)
continue; continue;
} }
if (ntohs(res.tlv_type_be) == PTP_TLV_TYPE_MGMT_ERROR_STATUS) {
pw_log_debug("PTP management error TLV for id=%04x seq=%u",
mgmt_id, seq);
gptp->req_in_flight = false;
gptp->consecutive_timeouts++;
if (gptp->consecutive_timeouts >= PTP_LOST_TIMEOUT_THRESHOLD) {
gptp_invalidate_state(gptp);
}
continue;
}
if (ntohs(res.tlv_type_be) != PTP_TLV_TYPE_MGMT) { if (ntohs(res.tlv_type_be) != PTP_TLV_TYPE_MGMT) {
pw_log_warn("PTP management returned tlv type %d, expected management", pw_log_debug("PTP management returned unexpected tlv type %d",
ntohs(res.tlv_type_be)); ntohs(res.tlv_type_be));
gptp->req_in_flight = false; gptp->req_in_flight = false;
continue; continue;

View file

@ -24,6 +24,7 @@ extern "C" {
#define PTP_MGMT_ACTION_GET 0 #define PTP_MGMT_ACTION_GET 0
#define PTP_MGMT_ACTION_RESPONSE 2 #define PTP_MGMT_ACTION_RESPONSE 2
#define PTP_TLV_TYPE_MGMT 0x0001 #define PTP_TLV_TYPE_MGMT 0x0001
#define PTP_TLV_TYPE_MGMT_ERROR_STATUS 0x0002
#define PTP_MGMT_ID_DEFAULT_DATA_SET 0x2000 #define PTP_MGMT_ID_DEFAULT_DATA_SET 0x2000
#define PTP_MGMT_ID_CURRENT_DATA_SET 0x2001 #define PTP_MGMT_ID_CURRENT_DATA_SET 0x2001
#define PTP_MGMT_ID_PARENT_DATA_SET 0x2002 #define PTP_MGMT_ID_PARENT_DATA_SET 0x2002