Page MenuHomeFreeBSD

Simplify cubic_ack_received
AcceptedPublic

Authored by kmacy on Sep 21 2016, 2:19 AM.
Tags
None
Referenced Files
Unknown Object (File)
Mar 22 2024, 5:09 PM
Unknown Object (File)
Jan 14 2024, 1:09 PM
Unknown Object (File)
Dec 22 2023, 9:15 PM
Unknown Object (File)
Dec 11 2023, 5:19 PM
Unknown Object (File)
Nov 11 2023, 10:03 AM
Unknown Object (File)
Nov 9 2023, 1:22 AM
Unknown Object (File)
Nov 6 2023, 6:46 AM
Unknown Object (File)
Oct 10 2023, 8:59 AM

Details

Reviewers
hiren
lstewart
gnn
Group Reviewers
transport
Summary

The logic remains unchanged (with one exception) but the branching is much easier to read.

The one exception is that - if it is possible to reach a state where min_rtt_ticks is zero but we are *not* in slowstart the ack will be processed whereas before it would have been ignored.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 5244
Build 5398: CI src buildJenkins

Event Timeline

kmacy retitled this revision from to Simplify cubic_ack_received.
kmacy updated this object.
kmacy edited the test plan for this revision. (Show Details)
kmacy added a reviewer: transport.
kmacy set the repository for this revision to rS FreeBSD src repository - subversion.
kmacy added a subscriber: lstewart.

@kmacy, about the exception you noted, I am a little puzzled.
a state where min_rtt_ticks is zero but we are *not* in slowstart - could still be processed in the old code if other rfc3465 conditions align as the guarding 'if' looks like this:

(!V_tcp_do_rfc3465 ||
CCV(ccv, snd_cwnd) <= CCV(ccv, snd_ssthresh) || ​
(V_tcp_do_rfc3465 && ccv->flags & CCF_ABC_SENTAWND))

sys/netinet/cc/cc_cubic.c
147

Can we move this 'if' condition above the prev 'if' to keep the flow closer to that of the original file? or does it break the logic in a way I am not understanding?

@kmacy Can you please looks at my comments? I like the changes otherwise.

Anyone else want to weigh in?

With regards to:

The one exception is that - if it is possible to reach a state where min_rtt_ticks is zero but we are *not* in slowstart the ack will be processed whereas before it would have been ignored.

I think this change is actually a functional improvement.

sys/netinet/cc/cc_cubic.c
147

It breaks the logic. We would be skipping newreno slow start handling.

gnn edited edge metadata.

LGTM

This revision is now accepted and ready to land.Nov 28 2016, 5:32 PM

Is this diff still alive? With all the cubic fixes that went in recently, this patch may need to be rewritten to apply cleanly.

Breaking complex conditionals up to ease the understanding seems a good thing to me.