mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 21:24:00 +08:00
Merge branch 'tcp-bbr-sampling-fixes'
Neal Cardwell says: ==================== TCP BBR sampling fixes for loss recovery undo This patch series has a few minor bug fixes for cases where spurious loss recoveries can trick BBR estimators into estimating that the available bandwidth is much lower than the true available bandwidth. In both cases the fix here is to just reset the estimator upon loss recovery undo. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b25b3e2fd9
@ -110,7 +110,8 @@ struct bbr {
|
||||
u32 lt_last_lost; /* LT intvl start: tp->lost */
|
||||
u32 pacing_gain:10, /* current gain for setting pacing rate */
|
||||
cwnd_gain:10, /* current gain for setting cwnd */
|
||||
full_bw_cnt:3, /* number of rounds without large bw gains */
|
||||
full_bw_reached:1, /* reached full bw in Startup? */
|
||||
full_bw_cnt:2, /* number of rounds without large bw gains */
|
||||
cycle_idx:3, /* current index in pacing_gain cycle array */
|
||||
has_seen_rtt:1, /* have we seen an RTT sample yet? */
|
||||
unused_b:5;
|
||||
@ -180,7 +181,7 @@ static bool bbr_full_bw_reached(const struct sock *sk)
|
||||
{
|
||||
const struct bbr *bbr = inet_csk_ca(sk);
|
||||
|
||||
return bbr->full_bw_cnt >= bbr_full_bw_cnt;
|
||||
return bbr->full_bw_reached;
|
||||
}
|
||||
|
||||
/* Return the windowed max recent bandwidth sample, in pkts/uS << BW_SCALE. */
|
||||
@ -717,6 +718,7 @@ static void bbr_check_full_bw_reached(struct sock *sk,
|
||||
return;
|
||||
}
|
||||
++bbr->full_bw_cnt;
|
||||
bbr->full_bw_reached = bbr->full_bw_cnt >= bbr_full_bw_cnt;
|
||||
}
|
||||
|
||||
/* If pipe is probably full, drain the queue and then enter steady-state. */
|
||||
@ -850,6 +852,7 @@ static void bbr_init(struct sock *sk)
|
||||
bbr->restore_cwnd = 0;
|
||||
bbr->round_start = 0;
|
||||
bbr->idle_restart = 0;
|
||||
bbr->full_bw_reached = 0;
|
||||
bbr->full_bw = 0;
|
||||
bbr->full_bw_cnt = 0;
|
||||
bbr->cycle_mstamp = 0;
|
||||
@ -871,6 +874,11 @@ static u32 bbr_sndbuf_expand(struct sock *sk)
|
||||
*/
|
||||
static u32 bbr_undo_cwnd(struct sock *sk)
|
||||
{
|
||||
struct bbr *bbr = inet_csk_ca(sk);
|
||||
|
||||
bbr->full_bw = 0; /* spurious slow-down; reset full pipe detection */
|
||||
bbr->full_bw_cnt = 0;
|
||||
bbr_reset_lt_bw_sampling(sk);
|
||||
return tcp_sk(sk)->snd_cwnd;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user