From nobody Thu Jul 17 09:36:48 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bjSVm6jkPz62kBC; Thu, 17 Jul 2025 09:36:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bjSVm5VZcz49T3; Thu, 17 Jul 2025 09:36:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752745008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dcwvIxrfrtx1V8Q0F00NONeUH/hhkr29NaibWESq5vM=; b=VZo2tnQ5tBpjkXUyLSU46J7NkxmSvXm+VERG8S0bPWs6P7c8SKAo9XLs8SaWndZROyOqde lqNA0mzJV0r+wqVCjwIRniHc07L+ANLqIDLMzvkma9NejfpqcNNHhT5SoyZo81jPkIJdL4 AM0Xlff44b/tKXQnat+FZmHK6k/vXfjrbN/0KKSpaD1S7xGAUOXgJ3McNB9lW9pZNNlGdK PHk4AvZvOr6y2lC4Ir9R5sfjnj4nEYVni+0GU9GsLg6/v9+iW+H6AHq6Y2Y5u3jKulVwke /28tefcMrYQTmlpNzgBjfKp2nxe23YfKwZXjkV4JFLiAoE4Zv3CTx79YAtHfnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1752745008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dcwvIxrfrtx1V8Q0F00NONeUH/hhkr29NaibWESq5vM=; b=eTPIgQqQZihGZGYUVRakcp7DbXLHC0q0EtO5ekbCpVkQ9V/3h0FhfF+70ExZkzRavp/8vJ I8JDjqz6DjGa1HbGDBAIHc7MOP3yMU10tyuHgHS7lysTtBw+LS/XcwTu4DAnA5nI9l08l+ 3355xTNCy+hGKyv/++17PuSRAPBd7kW/+oQil6vsbuQFUWwrEP6Z1saXp86EgLFnDg+2EW 0fM5xofESCfjKdE1XBn2R/H4hfKKsridxZOHtm47C9OHsZKMmcH4u3SnSeau52v46DBDoe Bj10l1WeywrpASjHTrB+/ALEpdIZwuOoCr/G+hW83wVzZaSBNYMsBLjtuK/lTw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1752745008; a=rsa-sha256; cv=none; b=F8kKw9nUngGhYrYgHSoXdnIVNDceN+NzyTy3D75OvYEqql9nuSsV4PhLRbWKo9dF6UII+0 vepNflAA3srxG/Gh5/ncT2UhivNFtiBCBELjQjRMxG8FyFhFyCEaUkzlpjau9Y/35+xN20 nqSECyR/guk7EvSg1JYXb7OsbtyZvP4ZSFrOP56LdG4CfHULYiH7erG4eueC5vLT5wne4a wq8f6PoRvrfeq2xt8Ad26jNFk1wlqNygBPz9gE0fOGy29jgOZNgJ91H/+mvdw1ZLi9s6PF U71SitJfP03eJA4txJ70yfh7MAVwgt4RbJgsP6l1H2mSvB3DHTYbVNkljlTQYw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bjSVm55jyzqY6; Thu, 17 Jul 2025 09:36:48 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 56H9amX2003421; Thu, 17 Jul 2025 09:36:48 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56H9am4R003418; Thu, 17 Jul 2025 09:36:48 GMT (envelope-from git) Date: Thu, 17 Jul 2025 09:36:48 GMT Message-Id: <202507170936.56H9am4R003418@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: fb65357d8707 - main - ipsec_offload: pre-calculate xform_history for recorded accelerated SA List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fb65357d8707219c98db2216622057133f42fa3d Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=fb65357d8707219c98db2216622057133f42fa3d commit fb65357d8707219c98db2216622057133f42fa3d Author: Konstantin Belousov AuthorDate: 2025-07-06 16:54:42 +0000 Commit: Konstantin Belousov CommitDate: 2025-07-17 09:36:18 +0000 ipsec_offload: pre-calculate xform_history for recorded accelerated SA Also provide the helper to fill the xform_history into mtag, provided by a driver. Reviewed by: Ariel Ehrenberg , slavash Sponsored by: Nvidia networking --- sys/netipsec/ipsec_offload.c | 21 +++++++++++++++++++++ sys/netipsec/ipsec_offload.h | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/sys/netipsec/ipsec_offload.c b/sys/netipsec/ipsec_offload.c index 467d5ded1d7a..a2092c91c1aa 100644 --- a/sys/netipsec/ipsec_offload.c +++ b/sys/netipsec/ipsec_offload.c @@ -94,6 +94,7 @@ struct ifp_handle_sav { size_t hdr_ext_size; uint64_t cnt_octets; uint64_t cnt_allocs; + struct xform_history xfh; }; #define IFP_HS_HANDLED 0x00000001 @@ -412,6 +413,10 @@ ipsec_accel_handle_sav(struct secasvar *sav, struct ifnet *ifp, ihs->ifdata = priv; ihs->flags = flags; ihs->hdr_ext_size = esp_hdrsiz(sav); + memcpy(&ihs->xfh.dst, &sav->sah->saidx.dst, sizeof(ihs->xfh.dst)); + ihs->xfh.spi = sav->spi; + ihs->xfh.proto = sav->sah->saidx.proto; + ihs->xfh.mode = sav->sah->saidx.mode; mtx_lock(&ipsec_accel_sav_tmp); CK_LIST_FOREACH(i, &sav->accel_ifps, sav_link) { if (i->ifp == ifp) { @@ -1162,4 +1167,20 @@ ipsec_accel_key_setaccelif_impl(struct secasvar *sav) return (m); } +bool +ipsec_accel_fill_xh(if_t ifp, uint32_t drv_spi, struct xform_history *xh) +{ + struct ifp_handle_sav *i; + + if (drv_spi < IPSEC_ACCEL_DRV_SPI_MIN || + drv_spi > IPSEC_ACCEL_DRV_SPI_MAX) + return (false); + + i = DRVSPI_SA_PCTRIE_LOOKUP(&drv_spi_pctrie, drv_spi); + if (i == NULL) + return (false); + memcpy(xh, &i->xfh, sizeof(*xh)); + return (true); +} + #endif /* IPSEC_OFFLOAD */ diff --git a/sys/netipsec/ipsec_offload.h b/sys/netipsec/ipsec_offload.h index 904fe6252396..6e374d721a4f 100644 --- a/sys/netipsec/ipsec_offload.h +++ b/sys/netipsec/ipsec_offload.h @@ -180,6 +180,9 @@ bool ipsec_accel_output(struct ifnet *ifp, struct mbuf *m, struct inpcb *inp, struct secpolicy *sp, struct secasvar *sav, int af, int mtu, int *hwassist); void ipsec_accel_forget_sav(struct secasvar *sav); +struct xform_history; +bool ipsec_accel_fill_xh(if_t ifp, uint32_t drv_spi, + struct xform_history *xh); #else #define ipsec_accel_input(a, b, c) (ENXIO) #define ipsec_accel_output(a, b, c, d, e, f, g, h) ({ \ @@ -187,6 +190,7 @@ void ipsec_accel_forget_sav(struct secasvar *sav); false; \ }) #define ipsec_accel_forget_sav(a) +#define ipsec_accel_fill_xh(a, b, c) (false) #endif struct ipsec_accel_in_tag *ipsec_accel_input_tag_lookup(const struct mbuf *);