NET: Proportional Rate Reduction for TCP
/net/ipv4/tcp_output.c
blob:faf257b94154af56272650ff269de53c3eed2239 -> blob:b1f32b459e562a1de9edad5c61d9dc4313a33df3
--- net/ipv4/tcp_output.c
+++ net/ipv4/tcp_output.c
@@ -1794,11 +1794,13 @@ static int tcp_write_xmit(struct sock *s
tcp_event_new_data_sent(sk, skb);
tcp_minshall_update(tp, mss_now, skb);
- sent_pkts++;
+ sent_pkts += tcp_skb_pcount(skb);
if (push_one)
break;
}
+ if (inet_csk(sk)->icsk_ca_state == TCP_CA_Recovery)
+ tp->prr_out += sent_pkts;
if (likely(sent_pkts)) {
tcp_cwnd_validate(sk);
@@ -2292,6 +2294,9 @@ begin_fwd:
return;
NET_INC_STATS_BH(sock_net(sk), mib_idx);
+ if (inet_csk(sk)->icsk_ca_state == TCP_CA_Recovery)
+ tp->prr_out += tcp_skb_pcount(skb);
+
if (skb == tcp_write_queue_head(sk))
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS,
inet_csk(sk)->icsk_rto,