From 818d90efda229fb41e55acee4e1253facfc429fb Mon Sep 17 00:00:00 2001 From: Lu Ding Date: Thu, 3 Mar 2022 22:43:13 -0800 Subject: [PATCH] net: gptp: Fix sync_receipt_time calculation in gptp_mi Fix #42800 Both pss->rate_ratio and port_ds->neighbor_rate_ratio are double type but sync_receipt_time is uint64_t. If pss->rate_ratio is less than 1 or sync_receipt_time * port_ds->neighbor_rate_ratio is less than 1, sync_receipt_time becomes 0 due to double to uint64_t cast. Assign port_ds->neighbor_prop_delay to sync_receipt_time first to fix this issue. Signed-off-by: Lu Ding --- subsys/net/l2/ethernet/gptp/gptp_mi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subsys/net/l2/ethernet/gptp/gptp_mi.c b/subsys/net/l2/ethernet/gptp/gptp_mi.c index 0859868e8e3..4f430e8c2f6 100644 --- a/subsys/net/l2/ethernet/gptp/gptp_mi.c +++ b/subsys/net/l2/ethernet/gptp/gptp_mi.c @@ -706,9 +706,9 @@ static void gptp_mi_clk_slave_sync_compute(void) pss = &state->pss_rcv_ptr->sync_info; - sync_receipt_time = pss->rate_ratio; + sync_receipt_time = port_ds->neighbor_prop_delay; + sync_receipt_time *= pss->rate_ratio; sync_receipt_time /= port_ds->neighbor_rate_ratio; - sync_receipt_time *= port_ds->neighbor_prop_delay; sync_receipt_time += pss->follow_up_correction_field; sync_receipt_time += port_ds->delay_asymmetry;