From patchwork Wed Jan 31 10:10:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vakul Garg X-Patchwork-Id: 10193461 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C21DA60383 for ; Wed, 31 Jan 2018 08:33:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B18E026CFC for ; Wed, 31 Jan 2018 08:33:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A5FDC2843C; Wed, 31 Jan 2018 08:33:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2030E26CFC for ; Wed, 31 Jan 2018 08:33:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752166AbeAaId3 (ORCPT ); Wed, 31 Jan 2018 03:33:29 -0500 Received: from mail-bl2nam02on0070.outbound.protection.outlook.com ([104.47.38.70]:25711 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751320AbeAaId1 (ORCPT ); Wed, 31 Jan 2018 03:33:27 -0500 Received: from BLUPR0301CA0022.namprd03.prod.outlook.com (10.162.113.160) by BLUPR03MB1411.namprd03.prod.outlook.com (10.163.81.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Wed, 31 Jan 2018 08:33:25 +0000 Received: from BN1BFFO11FD017.protection.gbl (2a01:111:f400:7c10::1:182) by BLUPR0301CA0022.outlook.office365.com (2a01:111:e400:5259::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.444.14 via Frontend Transport; Wed, 31 Jan 2018 08:33:25 +0000 Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1BFFO11FD017.mail.protection.outlook.com (10.58.144.80) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.444.13 via Frontend Transport; Wed, 31 Jan 2018 08:33:25 +0000 Received: from lti.ap.freescale.net (lti.ap.freescale.net [10.232.132.133]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w0V4ll9N028515; Tue, 30 Jan 2018 21:47:48 -0700 From: Vakul Garg To: CC: , , , , , Vakul Garg Subject: [PATCH] tls: Add support for encryption using async offload accelerator Date: Wed, 31 Jan 2018 15:40:26 +0530 Message-ID: <20180131101026.5523-1-vakul.garg@nxp.com> X-Mailer: git-send-email 2.13.6 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131618612056126503; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(2980300002)(1110001)(1109001)(339900001)(199004)(189003)(81156014)(8676002)(2906002)(8936002)(59450400001)(81166006)(97736004)(77096007)(51416003)(26005)(86362001)(336011)(48376002)(68736007)(105606002)(6346003)(50466002)(50226002)(106466001)(305945005)(53936002)(54906003)(47776003)(2351001)(1076002)(450100002)(356003)(4326008)(16586007)(36756003)(508600001)(6916009)(104016004)(6666003)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR03MB1411; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD017; 1:lxQmNPzsbGF5PNUzLTXJDZTlZEXr4ucgUcwNDnVwRgUIehmGfYjKbtwLS8tqBVGIJUV91IZKZ1JmFxFMB5Imf+Vvb6dvFRGcG3fhm2Xx8X841LQiYJJ1kqIYALttTDYN MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 37c22ab7-6a6f-4801-12c7-08d568854be4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:BLUPR03MB1411; X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB1411; 3:F+MmZ0rZuRqkf/UgMN50P1naYUwUyEmzHVyNAZoAybMuxf7CLxwHvknJ8b5+0e84tcsgVGPOvREekENbKh5sgu7YchN6y5biIvmbnt2pPatjMfiXHF4oPRfcpicqnMpWc/5nvAv1QpIUdNaYfkzbfjYPnoUr3wE2Wpj1t9anHqTjnw9qxA0eRQpjTVYHscu1Jaa0rO/ZllHYoQa4fFK8vv9r0Nf5oW8qHGTgtCFs9o1PmCCRDD01WrE4KkAU7CDqV81FehMP6zbcv4gfWoZHuYy9KdsEtFX9U2GGgczgSd7N3K0TJ6OszweHg/v9D3n5Hu5DDkAaQ8aTY4Q7V+6rEgNjv10ilNvwyYM7WOEmShQ=; 25:iy2Euw41Z3C95LLjoDNySeFQGK+1dYstLOAQVr+eynEONYZhtUioXy62jba8luqMi0dnRkkvYzuv8P/j/lTdJgInadal1Ft3eIpVwRAa4R1KCPRXAYSue5BywsL9e6PClhF6UjGHI5Lr7LOYKhyJoxqobB3HWBwgkq3suYh3O6kYLv3bFQwm/xbjsjN5SPa/61dcCAjDoGjQHYagoPnDXmZn38Bktz/OMHzhvY5Wmoki2OlxhHC+UxHDH5SU26c/e8mVq95ADoRRqYea8ZMP8FyxLmUyGKcUimOI2nrUeNccZoNcK0Y5PxK1W/LTays78PawsGdLY23SsU+ric37TQ== X-MS-TrafficTypeDiagnostic: BLUPR03MB1411: X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB1411; 31:lQD8rK9ebtutVimxRDA1VXKtWF3awNJX8iok21PmenoGijPwgTeRd+ni4+/UvaiWPEZJGlyeHkg1QjtgnWD6oNjh+UWObyevB7QRtD5wR544Z2uH6Vxx7kgrM5beNH1VUkMppiUB2Id4xVlsNJO57sZ9jgIB+27PKP7mkK0cFRkA8sM92QmY+XoQdfZaN8W3jC5MGVGaFNyNlYDLWUR27iGBWocs7qgS2BquKMR0G+I=; 4:weJB4pEGLD5yrH2ZY3FuGF6LteHGGpuMwbI3AQQTRPX/FAxTFma35oG4bmEYE/dtkzcHdjo7wkAG34/Cq+yZSOEQBRrb5jNItQqr1Q77jrY3HVmwTmEZeoQ537iqmu+Xkkm/SN2Qx5EKuqL3/in1XHOib0dut5dfHUWKJwuACjslmcF0u1kh4VD+gF6zoCufnhr2JzOdl2ULrwi9xygnYifnx7voPnYToOAfFakfsD4Lwj+HClWaEonn9u4SQWAxU+sLifbrtuYvWr48KEezFiAwfdafw/zeE+ydTm0ol8I935yNX6yZic/XNeY9b6xG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(3002001)(10201501046)(3231101)(2400082)(944501161)(93006095)(93001095)(6055026)(6096035)(20161123561025)(201703131430075)(201703131448075)(20161123559100)(20161123563025)(20161123556025)(20161123565025)(201708071742011); SRVR:BLUPR03MB1411; BCL:0; PCL:0; RULEID:(400006); SRVR:BLUPR03MB1411; X-Forefront-PRVS: 056929CBB8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR03MB1411; 23:zhFhO9guw2jh3EBufkMy9jqyT3DmzWMaW5KUmF1PH?= =?us-ascii?Q?U49VufgfHvmMz2ylEk3CgIGWHaHdT+yM3KrBWtYN4Qo34OY5tNOVk/kvrcpo?= =?us-ascii?Q?o+VMff/B8V3dgIEhqBRV/jVA2xujPHmW+W8Qdo/C5O2+TkR3o79toqvWYepc?= =?us-ascii?Q?q/fgLJekK6xJDTBi2RoH1yEYfuIgw432FlsjheOa5FrFbzf/lMu4myoRa/7y?= =?us-ascii?Q?IGt6AC5dHYkMpNjbxjmPllO6S/c5nBEU30+izT4UILmWliw+S8EOZbEKN7+w?= =?us-ascii?Q?mqf0KMhqfavPPqhgH3rYK46MGdtckaxyGo6p1SEwDgrEcDISVAYyzgCCBFLe?= =?us-ascii?Q?+2JoaQSYy4OnsxFguR3OXzED4A1OYgLH/Q1s+tPO9cNAqBnznpBM/4lqZhvd?= =?us-ascii?Q?CL1aiMOlQUCbj1gwnnRxT+1qAyaAz2rQOTTH2a2cdorxUMMrwEKaTF29uFSj?= =?us-ascii?Q?N2Q2/nvpn1oHxe6Lb1tHLrtFrCDpol9cVpcbPJm7jCL/KS7clEtJKLfGBWwe?= =?us-ascii?Q?CFO/AxIt6jJA04F3o2JTlrZ0CbQ62NUPTSsMljLM5MS99ekl3jOz4/IgTtKv?= =?us-ascii?Q?IierElUB/BEjA4jyYkErmC0+mSM61cZH5MuTAjsZgmKVjteB/n0QGMBtlnp7?= =?us-ascii?Q?txzmq0802TcWcZqmxZjNhOJgCF+s738M4LUj54MK+bbAIiZPYNctPeiCaUZw?= =?us-ascii?Q?/uGNr3jEr5lCpBB46IStHCDpAxeNQjVsAlHpypJS2dAw4rHySw/jHcKj2Wgx?= =?us-ascii?Q?6Mh/mA3tZaljqGVWBbhxsa3ykzdZ5wgMwJY5l2J7RGdXfMBEbDe3TTYOiejd?= =?us-ascii?Q?9HKUCFVcWmjrBhp3oZ1ocnQ/G3urSybQY0fll74K4SusGNx8dfTF1qGPOmx7?= =?us-ascii?Q?Y1LWGcC3HwV7s84FADIaLSuRD4Dkb6Mlfal+H7V6p8LYmPEZMa1JXX8v0wov?= =?us-ascii?Q?GpYD9sz8auoyI9pp93BDFGfGk+bjOrnKXFah5+i8AIgpA13FLzwRZBN5aS6i?= =?us-ascii?Q?Qs=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB1411; 6:cH5A3aeRyiHSQ0oqUcHQq+GQY2NLlBOOBLxwtHraOVu3vIOorZRRB0V4PE95QuTzwtC3fHvkwkr2KuHJ2rUIEa22cGUQgFqKS+DhohTx43GBbFAshNju62hEAkUEwRDFJMCaRwiD8zXnjZR0VJOLPLMqBWxAxWkFU5OrCm53Yg6CiKnOJRY6QiB2m4JfdHI3aLfXHd5W7HfQt6JfgVQcKDzba47Yill+ArZ970dmdrS2jHRP3hfqNElx11RPo3XmXOcw7Ue2u5uXsTUeG7Mmjn9ZgkHtX3xzsKoBjMMo+ospnLxscBnnZkB1A5pW48ynP0in0uzKwQu1nexrK1qTxZIiG/WGS3zA8JiEW3Rq5Uk=; 5:pDogtboT+CQBbD1fYWGTzl0uj1rN9no+aIu2CQvNG4pcGVD6deAAfNIdfxWKJPYg3lIw92VmPkElvjqkn78oHqn7JdzzcJ8Bx6atZtEXZA2zwk6nfUEUlex7570xezBm0FKqKo33AXZoSDroO1tNayvA2iQ3f7SmemZnXzXYr6A=; 24:4rS3paWWdwSD8nZtvFEMT/vOUu312k6Rl1hR8JmNAAspoi8fbV1yFcrDWDbQ1oFkGFL/UxKbP3T6gR/Zj9+0HDnPIid0sHh4h5g3DK8sa+o=; 7:q2dyZxeA1ajml325x51Q5w+7jn5c0e2abi67TXXIZ3ErEmNBFw+Vh5yoF5ddh5n6zs9LeGnwos+Yfj2Ak2bh5muxKVN6ssu+P3OtE15PKm9yrCDuai6Q3Pvlc39c3Y4VJAChIVUyyMM2x1wwubfpabep6f4ygeDNJpFNJ/TznsdxwsJ/OtEVXFqCzGZMs/Qtc8IUuTDr+6PiPQfrzkqBrZwm8s8ZT0VGHhrsjeREvFhRs638bD68gHGtTTKe0SyZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2018 08:33:25.2538 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 37c22ab7-6a6f-4801-12c7-08d568854be4 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB1411 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Async crypto accelerators (e.g. drivers/crypto/caam) support offloading GCM operation. If they are enabled, crypto_aead_encrypt() return error code -EINPROGRESS. In this case tls_do_encryption() needs to wait on a completion till the time the response for crypto offload request is received. Signed-off-by: Vakul Garg --- net/tls/tls_sw.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 73d19210dd49..390e6dc7b135 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -39,6 +39,11 @@ #include +struct crypto_completion { + struct completion comp; + int result; +}; + static void trim_sg(struct sock *sk, struct scatterlist *sg, int *sg_num_elem, unsigned int *sg_size, int target_size) { @@ -194,6 +199,14 @@ static void tls_free_both_sg(struct sock *sk) &ctx->sg_plaintext_size); } +static void crypto_complete(struct crypto_async_request *req, int err) +{ + struct crypto_completion *x = req->data; + + x->result = err; + complete(&x->comp); +} + static int tls_do_encryption(struct tls_context *tls_ctx, struct tls_sw_context *ctx, size_t data_len, gfp_t flags) @@ -202,6 +215,7 @@ static int tls_do_encryption(struct tls_context *tls_ctx, crypto_aead_reqsize(ctx->aead_send); struct aead_request *aead_req; int rc; + struct crypto_completion crypto_done; aead_req = kzalloc(req_size, flags); if (!aead_req) @@ -214,7 +228,15 @@ static int tls_do_encryption(struct tls_context *tls_ctx, aead_request_set_ad(aead_req, TLS_AAD_SPACE_SIZE); aead_request_set_crypt(aead_req, ctx->sg_aead_in, ctx->sg_aead_out, data_len, tls_ctx->iv); + aead_request_set_callback(aead_req, 0, crypto_complete, &crypto_done); + + init_completion(&crypto_done.comp); + rc = crypto_aead_encrypt(aead_req); + if (rc == -EINPROGRESS) { + wait_for_completion(&crypto_done.comp); + rc = crypto_done.result; + } ctx->sg_encrypted_data[0].offset -= tls_ctx->prepend_size; ctx->sg_encrypted_data[0].length += tls_ctx->prepend_size;