From 9ce37ccf23c4677ff08ccb54ca32ae1960afb875 Mon Sep 17 00:00:00 2001 From: Victor Boivie Date: Fri, 2 Sep 2022 09:13:09 +0000 Subject: [PATCH] dcsctp: Specify an initial RTT The RTT will quickly be updated whenever a DATA chunk is acked, but the initial value was set to zero. In unit tests, which often are short and rarely increase the simulated time between a DATA is sent, and acked, the smoothed RTT would usually stay at 0, which causes e.g. the rate limiting of FORWARD not to work. Bug: None Change-Id: Ieb515fe875ce88d001777b00d6efd9762565a09d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/273900 Reviewed-by: Florent Castelli Commit-Queue: Victor Boivie Cr-Commit-Position: refs/heads/main@{#38013} --- net/dcsctp/tx/retransmission_timeout.cc | 1 + net/dcsctp/tx/retransmission_timeout.h | 2 +- net/dcsctp/tx/retransmission_timeout_test.cc | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/net/dcsctp/tx/retransmission_timeout.cc b/net/dcsctp/tx/retransmission_timeout.cc index aa2863f931..7d8fb9761c 100644 --- a/net/dcsctp/tx/retransmission_timeout.cc +++ b/net/dcsctp/tx/retransmission_timeout.cc @@ -21,6 +21,7 @@ RetransmissionTimeout::RetransmissionTimeout(const DcSctpOptions& options) max_rto_(*options.rto_max), max_rtt_(*options.rtt_max), min_rtt_variance_(*options.min_rtt_variance), + scaled_srtt_(*options.rto_initial << kRttShift), rto_(*options.rto_initial) {} void RetransmissionTimeout::ObserveRTT(DurationMs measured_rtt) { diff --git a/net/dcsctp/tx/retransmission_timeout.h b/net/dcsctp/tx/retransmission_timeout.h index 7cbcc6fcc9..01530cb3b5 100644 --- a/net/dcsctp/tx/retransmission_timeout.h +++ b/net/dcsctp/tx/retransmission_timeout.h @@ -48,7 +48,7 @@ class RetransmissionTimeout { // If this is the first measurement bool first_measurement_ = true; // Smoothed Round-Trip Time, shifted by kRttShift - int32_t scaled_srtt_ = 0; + int32_t scaled_srtt_; // Round-Trip Time Variation, shifted by kRttVarShift int32_t scaled_rtt_var_ = 0; // Retransmission Timeout diff --git a/net/dcsctp/tx/retransmission_timeout_test.cc b/net/dcsctp/tx/retransmission_timeout_test.cc index f3b20a86ba..b901995e97 100644 --- a/net/dcsctp/tx/retransmission_timeout_test.cc +++ b/net/dcsctp/tx/retransmission_timeout_test.cc @@ -37,6 +37,11 @@ TEST(RetransmissionTimeoutTest, HasValidInitialRto) { EXPECT_EQ(rto_.rto(), kInitialRto); } +TEST(RetransmissionTimeoutTest, HasValidInitialSrtt) { + RetransmissionTimeout rto_(MakeOptions()); + EXPECT_EQ(rto_.srtt(), kInitialRto); +} + TEST(RetransmissionTimeoutTest, NegativeValuesDoNotAffectRTO) { RetransmissionTimeout rto_(MakeOptions()); // Initial negative value