The rtt minimum is tracked with "if (time_delta < min || min == 0.0)",
using min's initial value of 0.0 as a "not set yet" sentinel. But 0.0 is
also a valid measurement which must be accepted as minimum.

packets_in is still 0 while the first reply is processed (it is incremented
afterwards), so use it to detect the first sample instead of overloading
min == 0.0.

Fixes: 2474249a6312 ("[batctl] ping utility updated to latest batman adv")
Signed-off-by: Sven Eckelmann <[email protected]>
---
 ping.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/ping.c b/ping.c
index 7ba872a..b5c641b 100644
--- a/ping.c
+++ b/ping.c
@@ -300,10 +300,14 @@ static int ping(struct state *state, int argc, char 
**argv)
 
                        printf("\n");
 
-                       if (time_delta < min || min == 0.0)
+                       if (packets_in == 0)
                                min = time_delta;
+
+                       min = fmin(time_delta, min);
+
                        if (time_delta > max)
                                max = time_delta;
+
                        avg += time_delta;
                        mdev += time_delta * time_delta;
                        packets_in++;

-- 
2.47.3

Reply via email to