Skip to content
Snippets Groups Projects
Commit b2fa6101 authored by Eric Dumazet's avatar Eric Dumazet Committed by 谢秀奇
Browse files

tcp: make tcp_space() aware of socket backlog


mainline inclusion
from mainline-v5.0-rc1
commit 85bdf7db
category: perf
bugzilla: NA
CVE: NA

-------------------------------------------------
Jean-Louis Dupond reported poor iscsi TCP receive performance
that we tracked to backlog drops.

Apparently we fail to send window updates reflecting the
fact that we are under stress.

Note that we might lack a proper window increase when
backlog is fully processed, since __release_sock() clears
sk->sk_backlog.len _after_ all skbs have been processed.

This should not matter in practice. If we had a significant
load through socket backlog, we are in a dangerous
situation.

Reported-by: default avatarJean-Louis Dupond <jean-louis@dupond.be>
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
Acked-by: default avatarYuchung Cheng <ycheng@google.com>
Tested-by: default avatarJean-Louis <Dupond&lt;jean-louis@dupond.be>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarBiaoxiang <yebiaoxiang@huawei.com>
Reviewed-by: default avatarMao Wenan <maowenan@huawei.com>
Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
parent 8fcb3c3c
No related branches found
No related tags found
No related merge requests found
......@@ -1352,7 +1352,7 @@ static inline int tcp_win_from_space(const struct sock *sk, int space)
/* Note: caller must be prepared to deal with negative returns */
static inline int tcp_space(const struct sock *sk)
{
return tcp_win_from_space(sk, sk->sk_rcvbuf -
return tcp_win_from_space(sk, sk->sk_rcvbuf - sk->sk_backlog.len -
atomic_read(&sk->sk_rmem_alloc));
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment