From 52c7d16865a78d83d0c6abd0f81de9ff5ecaa71a Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Fri, 6 Aug 2021 14:05:16 -0700 Subject: [PATCH] monitor: Fix minimun packet latency It seems timer_sub can produce negative values leading to median packet latency to be negative e.g conn->last_tx_compl is ahead of conn->last_tx, in which case it should be discarded. --- monitor/analyze.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/monitor/analyze.c b/monitor/analyze.c index 5e0957ad1..d504c8d84 100644 --- a/monitor/analyze.c +++ b/monitor/analyze.c @@ -386,8 +386,9 @@ static void evt_num_completed_packets(struct hci_dev *dev, struct timeval *tv, if (timerisset(&conn->last_tx)) { timersub(&conn->last_tx_comp, &conn->last_tx, &res); - if (!timerisset(&conn->tx_lat_min) || - timercmp(&res, &conn->tx_lat_min, <)) + if ((!timerisset(&conn->tx_lat_min) || + timercmp(&res, &conn->tx_lat_min, <)) && + res.tv_sec >= 0 && res.tv_usec >= 0) conn->tx_lat_min = res; if (!timerisset(&conn->tx_lat_max) || @@ -408,6 +409,8 @@ static void evt_num_completed_packets(struct hci_dev *dev, struct timeval *tv, tmp.tv_usec -= 1000000; } } + + conn->tx_lat_med = tmp; } else conn->tx_lat_med = res; -- 2.47.3