* [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer()
@ 2018-12-10 14:10 Eric Dumazet
2018-12-10 14:34 ` Soheil Hassas Yeganeh
2018-12-10 20:09 ` David Miller
0 siblings, 2 replies; 3+ messages in thread
From: Eric Dumazet @ 2018-12-10 14:10 UTC (permalink / raw)
To: David S . Miller
Cc: netdev, Eric Dumazet, Neal Cardwell, Soheil Hassas Yeganeh,
Yuchung Cheng, Eric Dumazet
In commit f9bfe4e6a9d0 ("tcp: lack of available data can also cause
TSO defer") we moved the test in tcp_tso_should_defer() for packets
with a FIN flag, and we mentioned that the same would be done
later for EOR flag.
Both flags should be handled at the same time, after all other
heuristics have been considered. They both mean that no more bytes
can be added to this skb by an application.
Signed-off-by: Eric Dumazet <edumazet@google.com>
---
net/ipv4/tcp_output.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index c31badfee806a70d5af6dc033cf9155adb1f9375..730bc44dbad9363814705b28c2f91a2253d91207 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1947,10 +1947,6 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
if ((skb != tcp_write_queue_tail(sk)) && (limit >= skb->len))
goto send_now;
- /* If this packet won't get more data, do not wait. */
- if (TCP_SKB_CB(skb)->eor)
- goto send_now;
-
win_divisor = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_tso_win_divisor);
if (win_divisor) {
u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);
@@ -1999,7 +1995,8 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
}
/* If this packet won't get more data, do not wait. */
- if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN)
+ if ((TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) ||
+ TCP_SKB_CB(skb)->eor)
goto send_now;
return true;
--
2.20.0.rc2.403.gdbc3b29805-goog
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer()
2018-12-10 14:10 [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer() Eric Dumazet
@ 2018-12-10 14:34 ` Soheil Hassas Yeganeh
2018-12-10 20:09 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: Soheil Hassas Yeganeh @ 2018-12-10 14:34 UTC (permalink / raw)
To: Eric Dumazet
Cc: David Miller, netdev, Neal Cardwell, Yuchung Cheng, Eric Dumazet
On Mon, Dec 10, 2018 at 9:10 AM Eric Dumazet <edumazet@google.com> wrote:
>
> In commit f9bfe4e6a9d0 ("tcp: lack of available data can also cause
> TSO defer") we moved the test in tcp_tso_should_defer() for packets
> with a FIN flag, and we mentioned that the same would be done
> later for EOR flag.
>
> Both flags should be handled at the same time, after all other
> heuristics have been considered. They both mean that no more bytes
> can be added to this skb by an application.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Thank you Eric for the patch!
> ---
> net/ipv4/tcp_output.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
> index c31badfee806a70d5af6dc033cf9155adb1f9375..730bc44dbad9363814705b28c2f91a2253d91207 100644
> --- a/net/ipv4/tcp_output.c
> +++ b/net/ipv4/tcp_output.c
> @@ -1947,10 +1947,6 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
> if ((skb != tcp_write_queue_tail(sk)) && (limit >= skb->len))
> goto send_now;
>
> - /* If this packet won't get more data, do not wait. */
> - if (TCP_SKB_CB(skb)->eor)
> - goto send_now;
> -
> win_divisor = READ_ONCE(sock_net(sk)->ipv4.sysctl_tcp_tso_win_divisor);
> if (win_divisor) {
> u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache);
> @@ -1999,7 +1995,8 @@ static bool tcp_tso_should_defer(struct sock *sk, struct sk_buff *skb,
> }
>
> /* If this packet won't get more data, do not wait. */
> - if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN)
> + if ((TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) ||
> + TCP_SKB_CB(skb)->eor)
> goto send_now;
>
> return true;
> --
> 2.20.0.rc2.403.gdbc3b29805-goog
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer()
2018-12-10 14:10 [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer() Eric Dumazet
2018-12-10 14:34 ` Soheil Hassas Yeganeh
@ 2018-12-10 20:09 ` David Miller
1 sibling, 0 replies; 3+ messages in thread
From: David Miller @ 2018-12-10 20:09 UTC (permalink / raw)
To: edumazet; +Cc: netdev, ncardwell, soheil, ycheng, eric.dumazet
From: Eric Dumazet <edumazet@google.com>
Date: Mon, 10 Dec 2018 06:10:02 -0800
> In commit f9bfe4e6a9d0 ("tcp: lack of available data can also cause
> TSO defer") we moved the test in tcp_tso_should_defer() for packets
> with a FIN flag, and we mentioned that the same would be done
> later for EOR flag.
>
> Both flags should be handled at the same time, after all other
> heuristics have been considered. They both mean that no more bytes
> can be added to this skb by an application.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
Applied, thanks Eric.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-12-10 20:09 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-10 14:10 [PATCH net-next] tcp: handle EOR and FIN conditions the same in tcp_tso_should_defer() Eric Dumazet
2018-12-10 14:34 ` Soheil Hassas Yeganeh
2018-12-10 20:09 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).