|
@@ -49,7 +49,6 @@ MODULE_PARM_DESC(smooth_part, "log(B/(B*Smin))/log(B/(B-1))+B, # of RTT from Wma
|
|
|
struct bictcp {
|
|
|
u32 cnt; /* increase cwnd by 1 after ACKs */
|
|
|
u32 last_max_cwnd; /* last maximum snd_cwnd */
|
|
|
- u32 loss_cwnd; /* congestion window at last loss */
|
|
|
u32 last_cwnd; /* the last snd_cwnd */
|
|
|
u32 last_time; /* time when updated last_cwnd */
|
|
|
u32 epoch_start; /* beginning of an epoch */
|
|
@@ -72,7 +71,6 @@ static void bictcp_init(struct sock *sk)
|
|
|
struct bictcp *ca = inet_csk_ca(sk);
|
|
|
|
|
|
bictcp_reset(ca);
|
|
|
- ca->loss_cwnd = 0;
|
|
|
|
|
|
if (initial_ssthresh)
|
|
|
tcp_sk(sk)->snd_ssthresh = initial_ssthresh;
|
|
@@ -172,22 +170,12 @@ static u32 bictcp_recalc_ssthresh(struct sock *sk)
|
|
|
else
|
|
|
ca->last_max_cwnd = tp->snd_cwnd;
|
|
|
|
|
|
- ca->loss_cwnd = tp->snd_cwnd;
|
|
|
-
|
|
|
if (tp->snd_cwnd <= low_window)
|
|
|
return max(tp->snd_cwnd >> 1U, 2U);
|
|
|
else
|
|
|
return max((tp->snd_cwnd * beta) / BICTCP_BETA_SCALE, 2U);
|
|
|
}
|
|
|
|
|
|
-static u32 bictcp_undo_cwnd(struct sock *sk)
|
|
|
-{
|
|
|
- const struct tcp_sock *tp = tcp_sk(sk);
|
|
|
- const struct bictcp *ca = inet_csk_ca(sk);
|
|
|
-
|
|
|
- return max(tp->snd_cwnd, ca->loss_cwnd);
|
|
|
-}
|
|
|
-
|
|
|
static void bictcp_state(struct sock *sk, u8 new_state)
|
|
|
{
|
|
|
if (new_state == TCP_CA_Loss)
|
|
@@ -214,7 +202,7 @@ static struct tcp_congestion_ops bictcp __read_mostly = {
|
|
|
.ssthresh = bictcp_recalc_ssthresh,
|
|
|
.cong_avoid = bictcp_cong_avoid,
|
|
|
.set_state = bictcp_state,
|
|
|
- .undo_cwnd = bictcp_undo_cwnd,
|
|
|
+ .undo_cwnd = tcp_reno_undo_cwnd,
|
|
|
.pkts_acked = bictcp_acked,
|
|
|
.owner = THIS_MODULE,
|
|
|
.name = "bic",
|