Re: [PATCH net-next 2/6] netdevsim: psp: remove unnecessary UDP checksum computation
From: Daniel Zahka
Date: Mon May 11 2026 - 15:43:42 EST
On 5/11/26 3:01 PM, Willem de Bruijn wrote:
Daniel Zahka wrote:
@@ -81,36 +79,6 @@ nsim_do_psp(struct sk_buff *skb, struct netdevsim *ns,
skb->len - skb_inner_transport_offset(skb));
u64_stats_update_end(&ns->psp.syncp);
} else {
- struct ipv6hdr *ip6h __maybe_unused;
- struct iphdr *iph;
- struct udphdr *uh;
- __wsum csum;
-
- /* Do not decapsulate. Receive the skb with the udp and psp
- * headers still there as if this is a normal udp packet.
- * psp_dev_encapsulate() sets udp checksum to 0, so we need to
- * provide a valid checksum here, so the skb isn't dropped.
- */
Just curious: which setsockopt is this?Perhaps this was here as IPv6 does not allow zero checksums except for
tunneling in specific cases (RFC 6936)?
Yes it was originally here for IPv6. It was needed to make a test case
pass that ultimately never got upstreamed (yet). The test basically used
the psp_dev_ops::set_config() function to turn psp rx off midflow, and
then tried to catch packets with a udp socket listening on port 1000. At
the time I didn't realize that I could probably make the test work by
opting the socket into a setting for RFC 6936 with setsockopt().
I was thinking of UDP_NO_CHECK6_RX, though I probably shouldn't have characterized it as relating to RFC 6936. I haven't dug through the code or history to figure out if that was added for tunnels or to implement that rfc. I can see that tunnel driver callers of udp_sock_create() can configure the 0 checksum behavior, which seems to actually implement what's described in the rfc.
though as I mentioned, none of the current tests cover that the.. actually based on this, preferable even
psp-udp csum is correct.
I agree. My plan would be to add the psp-udp checksum calculation back when we have a test that actually depends on it to pass.