| From foo@baz Wed Aug 22 09:42:09 CEST 2018 |
| From: Yuchung Cheng <ycheng@google.com> |
| Date: Thu, 12 Jul 2018 06:04:53 -0700 |
| Subject: tcp: remove DELAYED ACK events in DCTCP |
| |
| From: Yuchung Cheng <ycheng@google.com> |
| |
| [ Upstream commit a69258f7aa2623e0930212f09c586fd06674ad79 ] |
| |
| After fixing the way DCTCP tracking delayed ACKs, the delayed-ACK |
| related callbacks are no longer needed |
| |
| Signed-off-by: Yuchung Cheng <ycheng@google.com> |
| Signed-off-by: Eric Dumazet <edumazet@google.com> |
| Acked-by: Neal Cardwell <ncardwell@google.com> |
| Acked-by: Lawrence Brakmo <brakmo@fb.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/net/tcp.h | 2 -- |
| net/ipv4/tcp_dctcp.c | 25 ------------------------- |
| net/ipv4/tcp_output.c | 4 ---- |
| 3 files changed, 31 deletions(-) |
| |
| --- a/include/net/tcp.h |
| +++ b/include/net/tcp.h |
| @@ -850,8 +850,6 @@ enum tcp_ca_event { |
| 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_DELAYED_ACK, /* Delayed ack is sent */ |
| - CA_EVENT_NON_DELAYED_ACK, |
| }; |
| |
| /* Information about inbound ACK, passed to cong_ops->in_ack_event() */ |
| --- a/net/ipv4/tcp_dctcp.c |
| +++ b/net/ipv4/tcp_dctcp.c |
| @@ -55,7 +55,6 @@ struct dctcp { |
| u32 dctcp_alpha; |
| u32 next_seq; |
| u32 ce_state; |
| - u32 delayed_ack_reserved; |
| u32 loss_cwnd; |
| }; |
| |
| @@ -96,7 +95,6 @@ static void dctcp_init(struct sock *sk) |
| |
| ca->dctcp_alpha = min(dctcp_alpha_on_init, DCTCP_MAX_ALPHA); |
| |
| - ca->delayed_ack_reserved = 0; |
| ca->loss_cwnd = 0; |
| ca->ce_state = 0; |
| |
| @@ -230,25 +228,6 @@ static void dctcp_state(struct sock *sk, |
| } |
| } |
| |
| -static void dctcp_update_ack_reserved(struct sock *sk, enum tcp_ca_event ev) |
| -{ |
| - struct dctcp *ca = inet_csk_ca(sk); |
| - |
| - switch (ev) { |
| - case CA_EVENT_DELAYED_ACK: |
| - if (!ca->delayed_ack_reserved) |
| - ca->delayed_ack_reserved = 1; |
| - break; |
| - case CA_EVENT_NON_DELAYED_ACK: |
| - if (ca->delayed_ack_reserved) |
| - ca->delayed_ack_reserved = 0; |
| - break; |
| - default: |
| - /* Don't care for the rest. */ |
| - break; |
| - } |
| -} |
| - |
| static void dctcp_cwnd_event(struct sock *sk, enum tcp_ca_event ev) |
| { |
| switch (ev) { |
| @@ -258,10 +237,6 @@ static void dctcp_cwnd_event(struct sock |
| case CA_EVENT_ECN_NO_CE: |
| dctcp_ce_state_1_to_0(sk); |
| break; |
| - case CA_EVENT_DELAYED_ACK: |
| - case CA_EVENT_NON_DELAYED_ACK: |
| - dctcp_update_ack_reserved(sk, ev); |
| - break; |
| default: |
| /* Don't care for the rest. */ |
| break; |
| --- a/net/ipv4/tcp_output.c |
| +++ b/net/ipv4/tcp_output.c |
| @@ -3444,8 +3444,6 @@ void tcp_send_delayed_ack(struct sock *s |
| int ato = icsk->icsk_ack.ato; |
| unsigned long timeout; |
| |
| - tcp_ca_event(sk, CA_EVENT_DELAYED_ACK); |
| - |
| if (ato > TCP_DELACK_MIN) { |
| const struct tcp_sock *tp = tcp_sk(sk); |
| int max_ato = HZ / 2; |
| @@ -3502,8 +3500,6 @@ void __tcp_send_ack(struct sock *sk, u32 |
| if (sk->sk_state == TCP_CLOSE) |
| return; |
| |
| - tcp_ca_event(sk, CA_EVENT_NON_DELAYED_ACK); |
| - |
| /* We are not putting this on the write queue, so |
| * tcp_transmit_skb() will set the ownership to this |
| * sock. |