On Tue Sep 8, 2026 at 2:52 AM EDT, Tariq Toukan wrote:
From: Cosmin Ratiu <redacted>
Add a PSP mode which wraps every transmitted frame in PSP transport
mode and encrypts them in SW with the help of OpenSSL.
The receiving NIC decrypts and decapsulates, so the frames seen on the
receiver on its AF_PACKET socket are identical to the non-PSP ones and
every geometry assertion in this file applies unchanged.
Sender packet construction is unchanged, PSP uses a different buffer to
avoid double encryption.
A few PSP-only cases are added: psp_spi_diff, psp_ver_diff, psp_mixed,
to cover coalescing scenarios which only exist for PSP.
OpenSSL is optional and scoped to this binary: gro is deployed by
several suites, so a missing libcrypto costs only the PSP mode.
Signed-off-by: Cosmin Ratiu <redacted>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
---
...
quoted hunk ↗ jump to hunk
+/* PSP transport mode encapsulation, as built by the sender:
+ *
+ * [eth][IP][UDP dport=1000][PSP hdr][encrypted L4][ICV]
+ *
+ * Can't use the kernel-only include/net/psp/types.h header, so copy the
+ * encoding here.
+ */
+struct psphdr {
+ uint8_t nexthdr;
+ uint8_t hdrlen;
+ uint8_t crypt_offset;
+ uint8_t verfl;
+ uint32_t spi; /* big endian */
+ uint64_t iv; /* big endian */
+} __packed;
My llm is complaining that it thinks __packed is not defined for
userspace code and being used as the name of an object being declared,
instead of an attribute. Otherwise:
Reviewed-by: Daniel Zahka <daniel.zahka@gmail.com>