Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tcp: autocork: take MSG_EOR hint into consideration

tcp_should_autocork() is evaluating if it makes senses
to not immediately send current skb, hoping that
user space will add more payload on it by the
time TCP stack reacts to upcoming TX completions.

If current skb got MSG_EOR mark, then we know
that no further data will be added, it is therefore
futile to wait.

SOF_TIMESTAMPING_TX_ACK will become a bit more accurate,
if prior packets are still in qdisc/device queues.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Martin KaFai Lau <kafai@fb.com>
Cc: Willem de Bruijn <willemb@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Link: https://lore.kernel.org/r/20220309054706.2857266-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Eric Dumazet and committed by
Jakub Kicinski
b0de0cf4 30c5601f

+2 -1
+2 -1
net/ipv4/tcp.c
··· 688 688 return skb->len < size_goal && 689 689 sock_net(sk)->ipv4.sysctl_tcp_autocorking && 690 690 !tcp_rtx_queue_empty(sk) && 691 - refcount_read(&sk->sk_wmem_alloc) > skb->truesize; 691 + refcount_read(&sk->sk_wmem_alloc) > skb->truesize && 692 + tcp_skb_can_collapse_to(skb); 692 693 } 693 694 694 695 void tcp_push(struct sock *sk, int flags, int mss_now,