From 369400aab2b464b2ef11d30547f5ca7eee2a4b2a Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Wed, 30 Mar 2022 18:34:48 +0200 Subject: lib: Fix timing of delayed ACKs Delayed ACKs are now sent after twice the internal tick time. Fixes initial ACK record (rcv_cr.seqno) being uninitialized (0) when the first ACK was to be sent. Adds some FRCT metrics for number of received delayed (bare) ACKs and the RTT estimator. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/lib/timerwheel.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/lib/timerwheel.c') diff --git a/src/lib/timerwheel.c b/src/lib/timerwheel.c index 3225bf35..0f5e2e04 100644 --- a/src/lib/timerwheel.c +++ b/src/lib/timerwheel.c @@ -301,7 +301,6 @@ static void timerwheel_move(void) send_frct_pkt(a->frcti); free(a); - } } @@ -394,7 +393,7 @@ static int timerwheel_ack(int fd, pthread_rwlock_rdlock(&frcti->lock); - slot = (((ts_to_ns(now) + frcti->mdev) >> ACKQ_RES) + 1) + slot = (((ts_to_ns(now) + (TICTIME << 1)) >> ACKQ_RES) + 1) & (ACKQ_SLOTS - 1); pthread_rwlock_unlock(&frcti->lock); -- cgit v1.2.3