|
@@ -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;
|