summaryrefslogtreecommitdiff
path: root/monitor/analyze.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2021-08-06 14:05:16 -0700
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2021-08-09 15:01:29 -0700
commit52c7d16865a78d83d0c6abd0f81de9ff5ecaa71a (patch)
tree51145fa0eeb0ba927da9a5117cf192821f16cad0 /monitor/analyze.c
parentea224edbd0c42cffa71c55255a742422f5f187c6 (diff)
downloadbluez-52c7d16865a78d83d0c6abd0f81de9ff5ecaa71a.tar.gz
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.
Diffstat (limited to 'monitor/analyze.c')
-rw-r--r--monitor/analyze.c7
1 files 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;