QUIC_SEND_PACING_INTERVAL unit default to us, not need MS_TO_US() #4470
Labels
Area: Core
Related to the shared, core protocol logic
Bug: Core
A code bug in the Core MsQuic code
external
Proposed by non-MSFT
Milestone
Describe the bug
QUIC_SEND_PACING_INTERVAL unit default to us, MS_TO_US() expand it 1000x. so SendAllowance with no pacing will easy occur.
bbr.c
IRQL_requires_max(DISPATCH_LEVEL)
uint32_t
BbrCongestionControlGetSendAllowance(
In QUIC_CONGESTION_CONTROL* Cc,
In uint64_t TimeSinceLastSend, // microsec
In BOOLEAN TimeSinceLastSendValid
)
{
...
Bbr->MinRtt < MS_TO_US(QUIC_SEND_PACING_INTERVAL)) {
//
// We're not in the necessary state to pace.
//
SendAllowance = CongestionWindow - Bbr->BytesInFlight;
...
}
quicdef.h
//
// The number of microseconds between pacing chunks.
//
#define QUIC_SEND_PACING_INTERVAL 1000
Affected OS
Additional OS information
No response
MsQuic version
main
Steps taken to reproduce bug
just check bbr.c and quicdef.h
Expected behavior
fixed method:
bbr.c
IRQL_requires_max(DISPATCH_LEVEL)
uint32_t
BbrCongestionControlGetSendAllowance(
In QUIC_CONGESTION_CONTROL* Cc,
In uint64_t TimeSinceLastSend, // microsec
In BOOLEAN TimeSinceLastSendValid
)
{
...
Bbr->MinRtt < QUIC_SEND_PACING_INTERVAL) {
//
// We're not in the necessary state to pace.
//
SendAllowance = CongestionWindow - Bbr->BytesInFlight;
...
}
Actual outcome
SendAllowance with no pacing will easy occur.
Additional details
The text was updated successfully, but these errors were encountered: