You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We checked the definition and usage of the function and it does appear to have an issue.
We further examined the FreeBSD-release-13.0 branch code used by F-Stack, as well as the code of the upcoming FreeBSD release-15.0 branch, and found that there have been no modifications.
We will conduct some further testing and provide feedback later, but it may take a considerable amount of time before we can proceed.
We have confirmed the bug and submitted a fix: #1058
The root cause is that both call sites in bbr_get_target_cwnd and bbr_get_a_state_target passed bw and gain in the wrong order to bbr_get_raw_target_cwnd. This caused bw (uint64_t) to be truncated to uint32_t and used as the gain multiplier, while the small gain value was used as the bandwidth, resulting in a severely underestimated congestion window.
This is an upstream FreeBSD bug (present in all FreeBSD versions including releng/13.0 through releng/15.0 and main). We are fixing it in F-Stack first. Thank you for the detailed report!
Activity
jfb8856606 commentedon Nov 27, 2025
Thank you for your testing and feedback.
We checked the definition and usage of the function and it does appear to have an issue.
We further examined the FreeBSD-release-13.0 branch code used by F-Stack, as well as the code of the upcoming FreeBSD release-15.0 branch, and found that there have been no modifications.
We will conduct some further testing and provide feedback later, but it may take a considerable amount of time before we can proceed.
fix(bbr): correct argument order in bbr_get_raw_target_cwnd calls
jfb8856606 commentedon Mar 27, 2026
We have confirmed the bug and submitted a fix: #1058
The root cause is that both call sites in
bbr_get_target_cwndandbbr_get_a_state_targetpassedbwandgainin the wrong order tobbr_get_raw_target_cwnd. This causedbw(uint64_t) to be truncated to uint32_t and used as the gain multiplier, while the smallgainvalue was used as the bandwidth, resulting in a severely underestimated congestion window.This is an upstream FreeBSD bug (present in all FreeBSD versions including releng/13.0 through releng/15.0 and main). We are fixing it in F-Stack first. Thank you for the detailed report!
fix(bbr): correct argument order in bbr_get_raw_target_cwnd calls
fix(bbr): correct argument order in bbr_get_raw_target_cwnd calls
fix(bbr): correct argument order in bbr_get_raw_target_cwnd calls