diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2021-08-06 14:05:16 -0700 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2021-08-09 15:01:29 -0700 |
commit | 52c7d16865a78d83d0c6abd0f81de9ff5ecaa71a (patch) | |
tree | 51145fa0eeb0ba927da9a5117cf192821f16cad0 /monitor/analyze.c | |
parent | ea224edbd0c42cffa71c55255a742422f5f187c6 (diff) | |
download | bluez-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.c | 7 |
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; |