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 <orphis@webrtc.org> Commit-Queue: Victor Boivie <boivie@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38013}
This commit is contained in:
parent
5625a86f5a
commit
9ce37ccf23
@ -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) {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user