2024-12-10 00:17:37 +03:00
|
|
|
From 024469ad0aec82573e1aa8f3dde55aeac4c35aee Mon Sep 17 00:00:00 2001
|
2024-10-29 05:12:06 +03:00
|
|
|
From: Jianfeng Wang <jfwang@google.com>
|
|
|
|
Date: Tue, 16 Jun 2020 17:41:19 +0000
|
|
|
|
Subject: [PATCH 13/19] net-tcp_bbr: v2: inform CC module of losses repaired by
|
|
|
|
TLP probe
|
|
|
|
|
|
|
|
Before this commit, when there is a packet loss that creates a sequence
|
|
|
|
hole that is filled by a TLP loss probe, then tcp_process_tlp_ack()
|
|
|
|
only informs the congestion control (CC) module via a back-to-back entry
|
|
|
|
and exit of CWR. But some congestion control modules (e.g. BBR) do not
|
|
|
|
respond to CWR events.
|
|
|
|
|
|
|
|
This commit adds a new CA event with which the core TCP stack notifies
|
|
|
|
the CC module when a loss is repaired by a TLP. This will allow CC
|
|
|
|
modules that do not use the CWR mechanism to have a custom handler for
|
|
|
|
such TLP recoveries.
|
|
|
|
|
|
|
|
Effort: net-tcp_bbr
|
|
|
|
Change-Id: Ieba72332b401b329bff5a641d2b2043a3fb8f632
|
|
|
|
Signed-off-by: Alexandre Frade <kernel@xanmod.org>
|
|
|
|
---
|
|
|
|
include/net/tcp.h | 1 +
|
|
|
|
net/ipv4/tcp_input.c | 1 +
|
|
|
|
2 files changed, 2 insertions(+)
|
|
|
|
|
|
|
|
--- a/include/net/tcp.h
|
|
|
|
+++ b/include/net/tcp.h
|
2024-12-10 00:17:37 +03:00
|
|
|
@@ -1098,6 +1098,7 @@ enum tcp_ca_event {
|
2024-10-29 05:12:06 +03:00
|
|
|
CA_EVENT_LOSS, /* loss timeout */
|
|
|
|
CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */
|
|
|
|
CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */
|
|
|
|
+ CA_EVENT_TLP_RECOVERY, /* a lost segment was repaired by TLP probe */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Information about inbound ACK, passed to cong_ops->in_ack_event() */
|
|
|
|
--- a/net/ipv4/tcp_input.c
|
|
|
|
+++ b/net/ipv4/tcp_input.c
|
|
|
|
@@ -3859,6 +3859,7 @@ static void tcp_process_tlp_ack(struct s
|
|
|
|
/* ACK advances: there was a loss, so reduce cwnd. Reset
|
|
|
|
* tlp_high_seq in tcp_init_cwnd_reduction()
|
|
|
|
*/
|
|
|
|
+ tcp_ca_event(sk, CA_EVENT_TLP_RECOVERY);
|
|
|
|
tcp_init_cwnd_reduction(sk);
|
|
|
|
tcp_set_ca_state(sk, TCP_CA_CWR);
|
|
|
|
tcp_end_cwnd_reduction(sk);
|