|
@@ -1822,7 +1822,7 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
|
|
|
|
|
|
/* Ok, it looks like it is advisable to defer. */
|
|
/* Ok, it looks like it is advisable to defer. */
|
|
|
|
|
|
- if (cong_win < send_win && cong_win < skb->len)
|
|
|
|
|
|
+ if (cong_win < send_win && cong_win <= skb->len)
|
|
*is_cwnd_limited = true;
|
|
*is_cwnd_limited = true;
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -2055,7 +2055,6 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle,
|
|
|
|
|
|
cwnd_quota = tcp_cwnd_test(tp, skb);
|
|
cwnd_quota = tcp_cwnd_test(tp, skb);
|
|
if (!cwnd_quota) {
|
|
if (!cwnd_quota) {
|
|
- is_cwnd_limited = true;
|
|
|
|
if (push_one == 2)
|
|
if (push_one == 2)
|
|
/* Force out a loss probe pkt. */
|
|
/* Force out a loss probe pkt. */
|
|
cwnd_quota = 1;
|
|
cwnd_quota = 1;
|
|
@@ -2137,6 +2136,7 @@ repair:
|
|
/* Send one loss probe per tail loss episode. */
|
|
/* Send one loss probe per tail loss episode. */
|
|
if (push_one != 2)
|
|
if (push_one != 2)
|
|
tcp_schedule_loss_probe(sk);
|
|
tcp_schedule_loss_probe(sk);
|
|
|
|
+ is_cwnd_limited |= (tcp_packets_in_flight(tp) >= tp->snd_cwnd);
|
|
tcp_cwnd_validate(sk, is_cwnd_limited);
|
|
tcp_cwnd_validate(sk, is_cwnd_limited);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|