From: netdev-bot+sashiko@kernel.org
To: toddfreed@meta.com
Cc: netdev@vger.kernel.org, davem@davemloft.net,
andrew+netdev@lunn.ch, bjorn@kernel.org, bpf@vger.kernel.org,
daniel@iogearbox.net, daniel.zahka@gmail.com,
donald.hunter@gmail.com, edumazet@kernel.org, kuba@kernel.org,
jhs@mojatatu.com, jiri@resnulli.us, john.fastabend@gmail.com,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-rdma@vger.kernel.org,
martin.lau@linux.dev, pabeni@redhat.com, saeedm@nvidia.com,
horms@kernel.org, tariqt@nvidia.com, weiwan@google.com,
willemdebruijn.kernel@gmail.com
Subject: Re: [PATCH net-next v1 02/15] psp: take the psp nexthdr from the packet on encap
Date: Sun, 15 Nov 2026 03:18:13 +0000 [thread overview]
Message-ID: <179471269307.2199510.1215468778950936295@kernel.org> (raw)
In-Reply-To: <20261111005533.6436-3-toddfreed@meta.com>
Thank you for your contribution! Sashiko AI review found 1 potential
issue(s) to consider.
Critical: 0 · High: 0 · Medium: 1 · Low: 0
If you believe none of the issues are legitimate, please reply to each
issue of Medium severity or higher and explain why the AI is wrong.
If any of them are legitimate and you plan to respin, please let patchwork
know by including "pw-bot: cr" as a separate line at the end of your reply
(one such reply per series is enough).
- [Medium] This patch makes psp_dev_encapsulate() accept protocols other
than TCP: psp->nexthdr and inner_ipproto now come from the packet, and…
--
psp: take the psp nexthdr from the packet on encap
This patch takes the PSP next header from the IP header of the original
packet instead of hardcoding IPPROTO_TCP, so that socket-less associations
can carry UDP. psp_dev_encapsulate() now refuses packets with IPv6
extension headers, IPv4 fragments and skbs that are already encapsulated.
mlx5e_features_check() also turns off GSO and checksum offload for PSP
skbs the device can't handle.
> diff --git a/net/psp/psp_main.c b/net/psp/psp_main.c
> index e09f6fec948d7..1eb1617aaf2b5 100644
> --- a/net/psp/psp_main.c
> +++ b/net/psp/psp_main.c
[ ... ]
> @@ -236,7 +237,7 @@ static void psp_write_headers(struct net *net, struct sk_buff *skb, __be32 spi,
> uh->check = 0;
> udp_set_len(uh, udp_len);
>
> - psph->nexthdr = IPPROTO_TCP;
> + psph->nexthdr = nexthdr;
[Severity: Medium]
psp_dev_encapsulate() now accepts non-TCP packets. Is the outer UDP
source port selection in psp_write_headers() still correct when skb->sk
is a UDP socket?
The code just above this hunk still does:
if (likely(sk)) {
u32 hash = sk->sk_hash;
...
hash ^= hash << 16;
uh->source = htons(reciprocal_scale(hash, max - min + 1) + min);
}
The comment there assumes sk_hash is the TCP ehash, which stays constant
for the life of the flow. UDP sockets use the same storage for other
values:
include/linux/udp.h:
#define udp_port_hash inet.sk.__sk_common.skc_u16hashes[0]
#define udp_portaddr_hash inet.sk.__sk_common.skc_u16hashes[1]
udp_lib_get_port() then sets:
udp_sk(sk)->udp_port_hash = snum;
udp_sk(sk)->udp_portaddr_hash ^= snum;
At that point udp_portaddr_hash already holds
ipv4_portaddr_hash(net, rcv_saddr, 0).
After hash ^= hash << 16, the upper 16 bits are
udp_portaddr_hash ^ udp_port_hash. That cancels snum and leaves only the
hash of the netns and local address. reciprocal_scale() uses essentially
only those upper bits.
Wouldn't every UDP socket bound to the same local address then get the
same outer PSP source port? That includes all wildcard-bound sockets in a
netns, and it would undo the RSS spreading the comment describes.
This path becomes reachable later in the series. tcf_psp_act() in
net/sched/act_psp.c attaches the METADATA_PSP dst to egress skbs that
still carry their UDP skb->sk. As a result, mlx5 and netdevsim call
psp_dev_encapsulate()->psp_write_headers() with a UDP socket. The later
patches in the series leave psp_write_headers() unchanged. The sk == NULL
branch, which uses udp_flow_src_port(), is not affected.
Should the sk->sk_hash path be limited to TCP sockets, with other sockets
falling back to udp_flow_src_port()?
> psph->hdrlen = PSP_HDRLEN_NOOPT;
> psph->crypt_offset = 0;
> psph->verfl = FIELD_PREP(PSPHDR_VERFL_VERSION, ver) |
[ ... ]
> @@ -279,11 +313,11 @@ bool psp_dev_encapsulate(struct net *net, struct sk_buff *skb, __be32 spi,
> be16_add_cpu(&ipv6_hdr(skb)->payload_len, PSP_ENCAP_HLEN);
> }
>
> - skb_set_inner_ipproto(skb, IPPROTO_TCP);
> + skb_set_inner_ipproto(skb, nexthdr);
> skb_set_inner_transport_header(skb, skb_transport_offset(skb) +
> PSP_ENCAP_HLEN);
> skb->encapsulation = 1;
> - psp_write_headers(net, skb, spi, ver,
> + psp_write_headers(net, skb, spi, ver, nexthdr,
> skb->len - skb_transport_offset(skb), sport);
>
> return true;
--
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261111005533.6436-1-toddfreed%40meta.com
next prev parent reply other threads:[~2026-11-15 3:18 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-11 0:55 [PATCH net-next v1 00/15] psp: introduce socket-less associations Todd Freed
2026-11-11 0:55 ` [PATCH net-next v1 01/15] psp: get netns from net_device instead of sock Todd Freed
2026-11-11 0:55 ` [PATCH net-next v1 02/15] psp: take the psp nexthdr from the packet on encap Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko [this message]
2026-11-11 0:55 ` [PATCH net-next v1 03/15] psp: declare psp_assoc_set_tx() in psp.h Todd Freed
2026-11-11 0:55 ` [PATCH net-next v1 04/15] psp: add support for socket-less psp associations Todd Freed
2026-11-11 16:49 ` Daniel Zahka
2026-11-11 18:23 ` Todd Bert Freed
2026-11-11 19:01 ` Daniel Zahka
2026-11-11 21:49 ` Todd Bert Freed
2026-11-12 0:51 ` Todd Bert Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 05/15] net: add METADATA_PSP dst to carry a psp association on an skb Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 06/15] net/sched: act_mirred: don't send decrypted skbs from egress to ingress Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 07/15] bpf: don't redirect " Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 08/15] psp: only give time-wait sockets of psp connections a validator Todd Freed
2026-11-11 11:37 ` Daniel Zahka
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 09/15] net/sched: add act_psp for psp transport mode Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 10/15] net/sched: flower: add psp_spi, psp_ver, and psp_dev matches Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 11/15] selftests: drv-net: psp: test socket-less associations and the tc psp action Todd Freed
2026-11-11 0:55 ` [PATCH net-next v1 12/15] selftests: drv-net: psp: test that software encap on ingress drops Todd Freed
2026-11-11 0:55 ` [PATCH net-next v1 13/15] selftests: tc-testing: run dependsOn probes outside the test namespace Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 14/15] selftests: tc-testing: add tests for the psp action Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 0:55 ` [PATCH net-next v1 15/15] Documentation: networking: psp: document socket-less associations Todd Freed
2026-11-15 3:18 ` netdev-bot+sashiko
2026-11-11 17:01 ` [PATCH net-next v1 00/15] psp: introduce " Daniel Zahka
2026-11-12 19:35 ` Todd Bert Freed
2026-11-13 15:45 ` Jamal Hadi Salim
2026-11-13 16:21 ` Jamal Hadi Salim
2026-11-13 19:08 ` Todd Bert Freed
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=179471269307.2199510.1215468778950936295@kernel.org \
--to=netdev-bot+sashiko@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel.zahka@gmail.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@kernel.org \
--cc=horms@kernel.org \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
--cc=toddfreed@meta.com \
--cc=weiwan@google.com \
--cc=willemdebruijn.kernel@gmail.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
all inboxes | Powered by JetHome®