From owner-dev-commits-src-all@freebsd.org Wed Jan 20 01:36:11 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 506684E52BC; Wed, 20 Jan 2021 01:36:11 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DL7Qg1s2Gz3FyB; Wed, 20 Jan 2021 01:36:11 +0000 (UTC) (envelope-from git@FreeBSD.org) 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 328FF10CF8; Wed, 20 Jan 2021 01:36:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 10K1aBmg089649; Wed, 20 Jan 2021 01:36:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 10K1aB6A089648; Wed, 20 Jan 2021 01:36:11 GMT (envelope-from git) Date: Wed, 20 Jan 2021 01:36:11 GMT Message-Id: <202101200136.10K1aB6A089648@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: d1816248899a - main - opencrypto: Embed the driver softc in the session structure MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d1816248899aca31db94b1a3d7a21d52f6b3ede6 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jan 2021 01:36:11 -0000 The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d1816248899aca31db94b1a3d7a21d52f6b3ede6 commit d1816248899aca31db94b1a3d7a21d52f6b3ede6 Author: Mark Johnston AuthorDate: 2021-01-20 01:34:35 +0000 Commit: Mark Johnston CommitDate: 2021-01-20 01:34:35 +0000 opencrypto: Embed the driver softc in the session structure Store the driver softc below the fields owned by opencrypto. This is a bit simpler and saves a pointer dereference when fetching the driver softc when processing a request. Get rid of the crypto session UMA zone. Session allocations are frequent or performance-critical enough to warrant a dedicated zone. No functional change intended. Reviewed by: cem, jhb Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D28158 --- sys/opencrypto/crypto.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/sys/opencrypto/crypto.c b/sys/opencrypto/crypto.c index cf02667e2a35..7bc230140568 100644 --- a/sys/opencrypto/crypto.c +++ b/sys/opencrypto/crypto.c @@ -134,7 +134,6 @@ static int crypto_drivers_size = 0; struct crypto_session { struct cryptocap *cap; - void *softc; struct crypto_session_params csp; }; @@ -201,7 +200,6 @@ SYSCTL_INT(_kern, OID_AUTO, crypto_workers_num, CTLFLAG_RDTUN, #endif static uma_zone_t cryptop_zone; -static uma_zone_t cryptoses_zone; int crypto_userasymcrypto = 1; SYSCTL_INT(_kern_crypto, OID_AUTO, asym_enable, CTLFLAG_RW, @@ -332,9 +330,6 @@ crypto_init(void) cryptop_zone = uma_zcreate("cryptop", sizeof(struct cryptop), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_ZINIT); - cryptoses_zone = uma_zcreate("crypto_session", - sizeof(struct crypto_session), NULL, NULL, NULL, NULL, - UMA_ALIGN_PTR, UMA_ZONE_ZINIT); crypto_drivers_size = CRYPTO_DRIVERS_INITIAL; crypto_drivers = malloc(crypto_drivers_size * @@ -487,8 +482,6 @@ crypto_destroy(void) } free(crypto_drivers, M_CRYPTO_DATA); - if (cryptoses_zone != NULL) - uma_zdestroy(cryptoses_zone); if (cryptop_zone != NULL) uma_zdestroy(cryptop_zone); mtx_destroy(&crypto_q_mtx); @@ -515,7 +508,7 @@ crypto_ses2caps(crypto_session_t crypto_session) void * crypto_get_driver_session(crypto_session_t crypto_session) { - return (crypto_session->softc); + return (crypto_session + 1); } const struct crypto_session_params * @@ -895,8 +888,7 @@ crypto_deletesession(crypto_session_t cses) cap = cses->cap; - zfree(cses->softc, M_CRYPTO_DATA); - uma_zfree(cryptoses_zone, cses); + zfree(cses, M_CRYPTO_DATA); CRYPTO_DRIVER_LOCK(); cap->cc_sessions--; @@ -948,10 +940,9 @@ crypto_newsession(crypto_session_t *cses, cap->cc_sessions++; CRYPTO_DRIVER_UNLOCK(); - res = uma_zalloc(cryptoses_zone, M_WAITOK | M_ZERO); + res = malloc(sizeof(*res) + cap->cc_session_size, M_CRYPTO_DATA, + M_WAITOK | M_ZERO); res->cap = cap; - res->softc = malloc(cap->cc_session_size, M_CRYPTO_DATA, M_WAITOK | - M_ZERO); res->csp = *csp; /* Call the driver initialization routine. */