public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCHSET RFC 0/4] Propagate back queue status on accept
@ 2024-05-09 18:00 Jens Axboe
  2024-05-09 18:00 ` [PATCH 1/4] net: change proto and proto_ops accept type Jens Axboe
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Jens Axboe @ 2024-05-09 18:00 UTC (permalink / raw)
  To: io-uring, netdev; +Cc: kuba

Hi,

With io_uring, one thing we can do is tell userspace whether or not
there's more data left in a socket after a receive is done. This is
useful for applications to now, and it also helps make multishot receive
requests more efficient by eliminating that last failed retry when the
socket has no more data left. This is propagated by setting the
IORING_CQE_F_SOCK_NONEMPTY flag, and is driven by setting
msghdr->msg_get_inq and having the protocol fill out msghdr->msg_inq in
that case.

For accept, there's a similar issue in that we'd like to know if there
are more connections to accept after the current one has been accepted.
Both because we can tell userspace about it, but also to drive multishot
accept retries more efficiently, similar to recv/recvmsg.

This series starts by changing the proto/proto_ops accept prototypes
to eliminate flags/errp/kern and replace it with a structure that
encompasses all of them.

Then patch 2 changes do_accept(), which io_uring uses, to take that
as well.

Patch 3 finally adds the basic is_empty argument to the struct,
and fills it in for TCP.

And finally patch 4 adds support for this in io_uring.

Comments welcome! Patchset is against current -git, with the io_uring
and net-next changes for 6.10 merged in. Branch can be found here:

https://git.kernel.dk/cgit/linux/log/?h=net-accept-more

 crypto/af_alg.c                    | 11 ++++++-----
 crypto/algif_hash.c                | 10 +++++-----
 drivers/xen/pvcalls-back.c         |  6 +++++-
 fs/ocfs2/cluster/tcp.c             |  5 ++++-
 include/crypto/if_alg.h            |  3 ++-
 include/linux/net.h                |  4 +++-
 include/linux/socket.h             |  3 ++-
 include/net/inet_common.h          |  4 ++--
 include/net/inet_connection_sock.h |  2 +-
 include/net/sock.h                 | 13 ++++++++++---
 io_uring/net.c                     | 26 ++++++++++++++++++++------
 net/atm/svc.c                      |  8 ++++----
 net/ax25/af_ax25.c                 |  6 +++---
 net/bluetooth/iso.c                |  4 ++--
 net/bluetooth/l2cap_sock.c         |  4 ++--
 net/bluetooth/rfcomm/sock.c        |  6 +++---
 net/bluetooth/sco.c                |  4 ++--
 net/core/sock.c                    |  4 ++--
 net/ipv4/af_inet.c                 | 10 +++++-----
 net/ipv4/inet_connection_sock.c    |  7 ++++---
 net/llc/af_llc.c                   |  7 +++----
 net/mptcp/protocol.c               |  8 ++++----
 net/netrom/af_netrom.c             |  6 +++---
 net/nfc/llcp_sock.c                |  4 ++--
 net/phonet/pep.c                   | 12 ++++++------
 net/phonet/socket.c                |  7 +++----
 net/rds/tcp_listen.c               |  6 +++++-
 net/rose/af_rose.c                 |  6 +++---
 net/sctp/socket.c                  |  8 ++++----
 net/smc/af_smc.c                   |  6 +++---
 net/socket.c                       | 15 ++++++++++-----
 net/tipc/socket.c                  | 10 ++++------
 net/unix/af_unix.c                 | 10 +++++-----
 net/vmw_vsock/af_vsock.c           |  6 +++---
 net/x25/af_x25.c                   |  4 ++--
 35 files changed, 147 insertions(+), 108 deletions(-)

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-05-14  0:24 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-09 18:00 [PATCHSET RFC 0/4] Propagate back queue status on accept Jens Axboe
2024-05-09 18:00 ` [PATCH 1/4] net: change proto and proto_ops accept type Jens Axboe
2024-05-09 18:00 ` [PATCH 2/4] net: have do_accept() take a struct proto_accept_arg argument Jens Axboe
2024-05-09 18:00 ` [PATCH 3/4] net: pass back whether socket was empty post accept Jens Axboe
2024-05-09 18:00 ` [PATCH 4/4] io_uring/net: wire up IORING_CQE_F_SOCK_NONEMPTY for accept Jens Axboe
2024-05-14  0:13 ` [PATCHSET RFC 0/4] Propagate back queue status on accept Jakub Kicinski
2024-05-14  0:24   ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox