Allow send capacity buffering beyond a full congestion window - #2583
Open
jeniksv wants to merge 1 commit into
Open
Allow send capacity buffering beyond a full congestion window#2583jeniksv wants to merge 1 commit into
jeniksv wants to merge 1 commit into
Conversation
jeniksv
force-pushed
the
jeniksv/send_capacity_factor
branch
from
August 13, 2026 12:34
16d6917 to
0688496
Compare
jeniksv
force-pushed
the
jeniksv/send_capacity_factor
branch
from
August 13, 2026 12:40
0688496 to
20b1622
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tx_cap_factoris intended to allow applications to buffer additional stream data ahead of the congestion window. Currently,tx_capis calculated as minimum of available congestion window and available flow control multiplied bytx_cap_factor. This means that oncecwnd_availablereaches zero,tx_capalso becomes zero regardless oftx_cap_factor. As a result, the application cannot pre buffer additional stream data while the congestion window is full and quiche needs to wait for more application data after ACKs make congestion window capacity available again.This change keeps the existing
cwnd_available()as the base capacity and adds an extra buffering allowance derived from the total congestion window:For values greater than one, the additional capacity no longer depends on
cwnd_availablebeing non-zero and quiche can keep stream data buffered even when the current congestion window is fully occupied.Already buffered stream data is deducted only from the additional buffering allowance, preventing repeated
tx_capupdates from granting the same extra capacity again.The peer's connection-level flow-control limit remains an absolute upper bound and is not scaled by
tx_cap_factor.