From: Allison Henderson <achender@kernel.org>
To: netdev@vger.kernel.org
Cc: linux-kselftest@vger.kernel.org, pabeni@redhat.com,
edumazet@google.com, rds-devel@oss.oracle.com, kuba@kernel.org,
horms@kernel.org, linux-rdma@vger.kernel.org,
allison.henderson@oracle.com
Subject: [PATCH net-next v5 4/8] net/rds: Kick-start TCP receiver after accept
Date: Mon, 2 Feb 2026 22:57:19 -0700 [thread overview]
Message-ID: <20260203055723.1085751-5-achender@kernel.org> (raw)
In-Reply-To: <20260203055723.1085751-1-achender@kernel.org>
From: Gerd Rausch <gerd.rausch@oracle.com>
In cases where the server (the node with the higher IP-address)
in an RDS/TCP connection is overwhelmed it is possible that the
socket that was just accepted is chock-full of messages, up to
the limit of what the socket receive buffer permits.
Subsequently, "rds_tcp_data_ready" won't be called anymore,
because there is no more space to receive additional messages.
Nor was it called prior to the point of calling "rds_tcp_set_callbacks",
because the "sk_data_ready" pointer didn't even point to
"rds_tcp_data_ready" yet.
We fix this by simply kick-starting the receive-worker
for all cases where the socket state is neither
"TCP_CLOSE_WAIT" nor "TCP_CLOSE".
Signed-off-by: Gerd Rausch <gerd.rausch@oracle.com>
Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
---
net/rds/tcp_listen.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 492dcc6568bf..b5786227623c 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -291,6 +291,8 @@ int rds_tcp_accept_one(struct rds_tcp_net *rtn)
new_sock->sk->sk_state == TCP_LAST_ACK ||
new_sock->sk->sk_state == TCP_CLOSE)
rds_conn_path_drop(cp, 0);
+ else
+ queue_delayed_work(cp->cp_wq, &cp->cp_recv_w, 0);
new_sock = NULL;
ret = 0;
--
2.43.0
next prev parent reply other threads:[~2026-02-03 5:57 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-03 5:57 [PATCH net-next v5 0/8] net/rds: RDS-TCP protocol and extension improvements Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 1/8] net/rds: new extension header: rdma bytes Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 2/8] net/rds: Encode cp_index in TCP source port Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 3/8] net/rds: rds_tcp_conn_path_shutdown must not discard messages Allison Henderson
2026-02-03 5:57 ` Allison Henderson [this message]
2026-02-03 5:57 ` [PATCH net-next v5 5/8] net/rds: Clear reconnect pending bit Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 6/8] net/rds: Update struct rds_statistics to use u64 instead of uint64_t Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 7/8] net/rds: Use the first lane until RDS_EXTHDR_NPATHS arrives Allison Henderson
2026-02-03 5:57 ` [PATCH net-next v5 8/8] net/rds: Trigger rds_send_ping() more than once Allison Henderson
2026-02-05 5:00 ` [PATCH net-next v5 0/8] net/rds: RDS-TCP protocol and extension improvements patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260203055723.1085751-5-achender@kernel.org \
--to=achender@kernel.org \
--cc=allison.henderson@oracle.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rds-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.