Netdev List
 help / color / mirror / Atom feed
From: Sabrina Dubroca <sd@queasysnail.net>
To: Chuck Lever <cel@kernel.org>
Cc: Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Simon Horman <horms@kernel.org>,
	John Fastabend <john.fastabend@gmail.com>,
	Shuah Khan <shuah@kernel.org>, Jeff Layton <jlayton@kernel.org>,
	NeilBrown <neil@brown.name>,
	Olga Kornievskaia <okorniev@redhat.com>,
	Dai Ngo <Dai.Ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
	netdev@vger.kernel.org, kernel-tls-handshake@lists.linux.dev,
	linux-kselftest@vger.kernel.org, linux-nfs@vger.kernel.org
Subject: Re: [PATCH net-next v2 2/6] net: Introduce read_sock_rectype proto_ops for control record delivery
Date: Wed, 29 Jul 2026 14:23:13 +0200	[thread overview]
Message-ID: <amnwsWrxv6KvrZ_L@krikkit> (raw)
In-Reply-To: <a6fb364d-8344-408e-bcd5-0cee4ffabdc3@app.fastmail.com>

2026-07-28, 22:51:30 -0400, Chuck Lever wrote:
> 
> 
> On Tue, Jul 28, 2026, at 10:30 PM, Jakub Kicinski wrote:
> > On Tue, 28 Jul 2026 21:57:21 -0400 Chuck Lever wrote:
> >> > To me this is an ugly one-off workaround that doesn't fit into 
> >> > the proto_ops (only TLS will use it). And you seem to net out
> >> > to the same LOC on SUNRPC side with and without this?  
> >> 
> >> It’s not about LOC. It’s about not cluttering the normal I/O
> >> path with a lot of exception processing to handle TLS Alert
> >> records. The CMSG API is very difficult to use and leaks the
> >> alert messages into I/O buffers (which for in-kernel consumers
> >> are page cache pages). It’s piss-poor API design.
> >
> > I'm not arguing that it's amazing. Doesn't mean we will YOLO
> > a special proto callback for every protocol stacking :/
> 
> No-one is asking you to roll over. Review means you get to steer
> us in the right direction, and I promise to do the leg work. Terse
> rejection doesn’t move the discussion forward. It stops it cold.
> 
> Complaining about slop also does not tell me where you need this
> to go. I use AI to go from blank page to RFC/v1. Where we go next
> is up to human taste, as always.

RFC/v1 wasn't sent to netdev.

[jumping to the end of your reply]
> I thought the RFC series cover letter made it clear that we are
> looking for input and direction, not to sell a completely formed idea.

Then this should have been tagged as "RFC v2". "PATCH v2" sounds more
like a fully formed idea.


I see in the RFC thread some doubts about whether read_sock is
actually helpful with TLS.

Ignoring the "does read_sock even help?" aspect, how much improvement
are you seeing by going from "read_sock with fallback to recvmsg+cmsg
in case we get a non-DATA record" to "read_sock_rectype"? (current
svcsock [before this series] doesn't use read_sock, it may be good to
compare those 3 variants and not just "old read_sock vs new
read_sock", but "read_sock vs read_sock++" is the important one to
justify an API change)

Non-DATA record should be fairly uncommon, I'm not that convinced "oh
well let's try again" once in a while causes a measurable degradation.

Even with recvmsg(), you have 2 choices:
 - pass a cmsg every time, and check the record type for every recv
 - don't pass a cmsg, and do a retry when you get -EIO

This proposal (call a different CB depending on record type) is... an
"interesting" approach.

> >> > There needs to be a very strong reason for us to add APIs for
> >> > in kernel consumers.  
> >> 
> >> This is not a helpful position. Your objection is the same
> >> every time, treating the in-kernel users as second-class
> >> citizens.
> >
> > No, it's not a second class citizen. But kernel consumers have a
> > tendency to break all abstractions and insert hacks all over the place
> > just because they are not forced to go via uAPI boundary which forces
> > people to think about the API design.
> 
> Granted that user space self-tests can’t reach kernel-only APIs.
> But that is what Kunit is for.
> 
> 
> > You just need to try a little harder to produce a better solution.
> > Rework or augment existing callbacks to let your achieve the behavior
> > you want.
> 
> My original approach was to add a new read_sock variant because I
> suspected you wouldn’t want read_sock itself to grow another argument.

Given that there's only 2 existing consumers of read_sock (strp and
nvme, and I'm not sure why strp/sockmap use it at all) [1], and 3
arguments to read_sock, adding an argument would be ok IMO. The
implementation (tls_sw_read_sock/tls_sw_read_sock_rectype) ends up
being a small wrapper around a function that does the actual work with
a NULL check, might as well propagate that to the callers.

For me the problem is more that this new argument is very specific to
TLS, and dropping something TLS-specific in a generic API (struct
proto_ops) is quite ugly. If we want to make this generic, we're back
to cmsg (or something cmsg-like). And then the benefit for users of
read_sock gets down to avoiding the "try read_sock, then fall back to
recvmsg" logic.


[1] well, there's also some users that call tcp_read_sock directly
[1], but I think they can be ignored other than "they'll need to pass
NULL since .read_sock = tcp_read_sock"
drivers/infiniband/sw/siw/siw_cm.c	tcp_read_sock(sk, &rd_desc, siw_tcp_rx_data);
drivers/infiniband/sw/siw/siw_qp.c	tcp_read_sock(sk, &rd_desc, siw_tcp_rx_data);
drivers/scsi/iscsi_tcp.c		tcp_read_sock(sk, &rd_desc, iscsi_sw_tcp_recv);
net/rds/tcp_recv.c			tcp_read_sock(sock->sk, &desc, rds_tcp_data_recv);

-- 
Sabrina

  reply	other threads:[~2026-07-29 12:23 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-20 14:27 [PATCH net-next v2 0/6] Deliver TLS control records to kernel read_sock consumers Chuck Lever
2026-07-20 14:27 ` [PATCH net-next v2 1/6] net/tls: Bound consecutive no-data records in tls_sw_read_sock() Chuck Lever
2026-07-23  7:11   ` Hannes Reinecke
2026-07-23 13:24     ` Chuck Lever
2026-07-23 14:23       ` Sabrina Dubroca
2026-07-23 14:29         ` Chuck Lever
2026-07-23 22:05           ` Sabrina Dubroca
2026-07-29  1:47   ` Jakub Kicinski
2026-07-29  3:17     ` Chuck Lever
2026-07-20 14:27 ` [PATCH net-next v2 2/6] net: Introduce read_sock_rectype proto_ops for control record delivery Chuck Lever
2026-07-23  7:14   ` Hannes Reinecke
2026-07-29  1:51   ` Jakub Kicinski
2026-07-29  1:57     ` Chuck Lever
2026-07-29  2:30       ` Jakub Kicinski
2026-07-29  2:51         ` Chuck Lever
2026-07-29 12:23           ` Sabrina Dubroca [this message]
2026-07-29 13:13             ` Chuck Lever
2026-07-29 23:31           ` Jakub Kicinski
2026-07-30 14:16             ` Sabrina Dubroca
2026-07-30 21:35               ` Jakub Kicinski
2026-07-30 23:09                 ` Sabrina Dubroca
2026-07-30 23:34                   ` Jakub Kicinski
2026-07-30 23:40                     ` Sabrina Dubroca
2026-07-31  0:12                 ` Chuck Lever
2026-07-31  8:36                   ` Sabrina Dubroca
2026-07-20 14:27 ` [PATCH net-next v2 3/6] tls: Implement read_sock_rectype for kTLS software path Chuck Lever
2026-07-23  7:14   ` Hannes Reinecke
2026-07-20 14:27 ` [PATCH net-next v2 4/6] selftests/tls: Add tests for data/control record interleaving Chuck Lever
2026-07-20 14:27 ` [PATCH net-next v2 5/6] SUNRPC: Use read_sock_rectype for svcsock TCP receives Chuck Lever
2026-07-20 14:28 ` [PATCH net-next v2 6/6] SUNRPC: Remove sock_recvmsg path from " Chuck Lever
2026-07-23  7:19 ` [PATCH net-next v2 0/6] Deliver TLS control records to kernel read_sock consumers Hannes Reinecke
2026-07-29  1:43 ` Jakub Kicinski
2026-07-29  1:46   ` Chuck Lever
2026-07-29  1:55     ` Jakub Kicinski
2026-07-29  2:16       ` Chuck Lever
2026-07-29  2:24         ` Jakub Kicinski

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=amnwsWrxv6KvrZ_L@krikkit \
    --to=sd@queasysnail.net \
    --cc=Dai.Ngo@oracle.com \
    --cc=cel@kernel.org \
    --cc=horms@kernel.org \
    --cc=jlayton@kernel.org \
    --cc=john.fastabend@gmail.com \
    --cc=kernel-tls-handshake@lists.linux.dev \
    --cc=kuba@kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neil@brown.name \
    --cc=netdev@vger.kernel.org \
    --cc=okorniev@redhat.com \
    --cc=pabeni@redhat.com \
    --cc=shuah@kernel.org \
    --cc=tom@talpey.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox