From patchwork Fri Feb 10 12:07:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Horia Geanta X-Patchwork-Id: 9566651 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 84BF7601EA for ; Fri, 10 Feb 2017 12:08:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 70BA928552 for ; Fri, 10 Feb 2017 12:08:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 659E828564; Fri, 10 Feb 2017 12:08:18 +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 C29B128552 for ; Fri, 10 Feb 2017 12:08:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753358AbdBJMIP (ORCPT ); Fri, 10 Feb 2017 07:08:15 -0500 Received: from mail-dm3nam03on0082.outbound.protection.outlook.com ([104.47.41.82]:59616 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753350AbdBJMIK (ORCPT ); Fri, 10 Feb 2017 07:08:10 -0500 Received: from DM5PR03CA0001.namprd03.prod.outlook.com (10.175.104.11) by DM2PR0301MB0735.namprd03.prod.outlook.com (10.160.97.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Fri, 10 Feb 2017 12:07:58 +0000 Received: from BN1AFFO11FD011.protection.gbl (2a01:111:f400:7c10::143) by DM5PR03CA0001.outlook.office365.com (2603:10b6:3:118::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Fri, 10 Feb 2017 12:07:58 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD011.mail.protection.outlook.com (10.58.52.71) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.888.7 via Frontend Transport; Fri, 10 Feb 2017 12:07:57 +0000 Received: from enigma.ea.freescale.net (enigma.ea.freescale.net [10.171.77.120]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v1AC7ZqY022809; Fri, 10 Feb 2017 05:07:55 -0700 From: =?UTF-8?q?Horia=20Geant=C4=83?= To: Herbert Xu CC: "David S. Miller" , Dan Douglass , Tudor Ambarus , "Cristian Stoica" , Subject: [PATCH 11/12] crypto: caam - abstract ahash request double buffering Date: Fri, 10 Feb 2017 14:07:24 +0200 Message-ID: <1486728445-13047-12-git-send-email-horia.geanta@nxp.com> X-Mailer: git-send-email 2.4.4 In-Reply-To: <1486728445-13047-1-git-send-email-horia.geanta@nxp.com> References: <1486728445-13047-1-git-send-email-horia.geanta@nxp.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131312020783437228; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(336005)(39410400002)(39860400002)(39380400002)(39400400002)(39850400002)(39450400003)(39840400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(2950100002)(2870700001)(2906002)(4326007)(104016004)(50466002)(8676002)(189998001)(8936002)(356003)(36756003)(5820100001)(81166006)(110136004)(38730400002)(81156014)(69596002)(86362001)(305945005)(626004)(5660300001)(106466001)(23676002)(33646002)(92566002)(50226002)(6666003)(97736004)(53936002)(85426001)(76176999)(6916009)(68736007)(47776003)(8656002)(77096006)(105606002)(54906002)(50986999); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0735; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD011; 1:F6oXhNv6S5Pv62Q53YECcy9iPfvFWLhfPFhGDjFv7l0BxD/h8HJyLv08vaUHv4MxsJu4nvghj6znk23HtxnEOUE9zbPHhBRrQeKeuMjtjPUAhIQu/B7jCu3KQwYtc5adLDAfZFywiA3Lh+bsgzHryTR9E7ZjeA6NSN1RBgRRrDAk4hauIn9Fxf7rjx4zMQyGeOQZnLS0nVmbv03dwcGyLC+eFl+So1zJgnE2lvMgTD9BJUeQ2D84hJY8Xj+m0YGhDKu3jRkEa93vcP0z4YgXs69UzaarOdJYHHUlSx5bBwpIZkugrGw1iFdp5Z9jleFX1mRxIUyaRwKqV20GIFJs1qlfrU88uHYRxxVJz4+sudk29rDPB9cju+60gnPdjs7RIVp6l+Hk5B4to3E7P3DRh2sW8dKcbDjNZ67Dc4wM5sKZnKuIgLaEyz4tmxi18TV00J5YK1GroOCUmzgl1WFUE48zM3t3126LdcdQHqxYL/bmDpKFzW/sT1YvJsjzLTQ7SBuyf+V3/UNA4MwOrHfxrtp5LeKX4VwoZWZIDcKgv1dBT0ZhvERZe+Fd3ffaZeb4fzU/TQzcwY+bsRPhRQRtEZPyMnjAjvNYvxNbHDAaFa8= X-MS-Office365-Filtering-Correlation-Id: cf461407-7bfc-4af0-0aa4-08d451ad73ed X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM2PR0301MB0735; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 3:bCTvDrEPO1w8OreF91OMf5Vd610iI0+PVM11xhnvN5HA8eXoYnlCUO9Uge0cEtKh+mXkBvCn10i12a7uFOvHRGCPdgumW74JNsZNYqtwYi0bEASld6Pccxr5x8zZVdG2s5gZoasD3MVmkynk7sm6tQrK3y3+61Sedns/AiO8w1+LYt9u2KcMwJeOGaDHAo6iQh5tdLG3HXFNb3zegl3dQM8XKN34+flWvhz7fOFdY2SX03m+hxb7oWaNL0j+a7sIINuOJZ2EuxQoO8Op3jAGQG9mmvTDNmk1GVA3K094YosRHfG61I0/UiwbwN/M3IHLEJNYy1waxwkyh/tVS/aE3FUOltTGHZ+TJEa9QuPx0AvwoAKFau8pJ8swAyhlqWBp; 25:72EU9gEU3J2zyMiwKmRd/df2r/zqRk2yD96eI5wrN4rbG49sZoAPWbbz5dm2unq63uskWpmD2kfI+jnJZMHY2yKW+6dmPhRDUPlXFxWDRed+aBM2aCwT/qXwI1kKs9a0T3jUSZnmHUEaJZBqeyOSFs0RXieT7PbIt/7zW9m19s5OtlKLUy2RaKD69zYVF8JnA7dMz7QSxlY9vOEy20OOy5XaXst8FbeRu0Pch93294CwXOeYsqYk1wHpoFkYfZSmWUa2yoOi1gWuoDj4586gt/qrV8UZ30hE8W+kpJ041zaY//F3aEb1zud0eN/vG6jNf14eh+gNWpe371A78qoo0gNWJj1huseHEl9sipkErnguRWOYXtkBaPHUtoBOuIs9lOliqLc5zZtbQ2119t4u59UfUMgYShdT9UkmJSknRjlsxULZss2iNvObkLAQKZNdXcGIvIqeNExuyuEjRIagUA== X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 31:0jxhe2t6SX+Ii0s5MxV6PDH2cRrI/qkX1NOoxP42hcMcgsMLp2w1PnmCyU5jMt2z8P2fLqx6G92uajhYxFjEgvSCfsPDYEcFmvsDZ3jHCqyGaC89KzltWNYvWKnHhymui6Cl42ruXIWwG4AswQ2OIArfVlpcM8n3AIvXqYanwp486AjPit+4nqbIqLnxP2eo4AJuupjb8uNJ/mOgpd8vLrjA42QD8QkwhxHJpYGue34R7cWpKI3/xDkdUGv76OWco/eHaQ511DGFlTkcxAEdFQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13018025)(13023025)(13017025)(13015025)(13024025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123556025)(20161123561025)(20161123565025)(20161123559025)(20161123563025); SRVR:DM2PR0301MB0735; BCL:0; PCL:0; RULEID:(400006); SRVR:DM2PR0301MB0735; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 4:q/rLY36eY6RQqcNtDmqsBa2ooajZTfEL/M0XjyasDsTMlESk1LKpG0q4jTpS/UKvCAa8mZxT3GV1yZ0ZRalAPoq6xCucqeJ/NmAa/j0sSLdxRdsP1zneSSWgsdAggjsP7Lf3Ofl0mDD/b3RzNNhXhxN1V/+JEkodtmGa2OQ/h2zJFV5Fj7Ubs/uaDQB6JNHoWa2VqOCOyV5eTEp3cDwaHGQZ903e0lDRA4614IPlwyQ/lnAvyTauWR8pOx34JKCWZsgSTYf7AsL0xlALLI7mZ1D53u7dhkoi8dHNwRcLXDeeWMKFqjpAAr1XdBMfRhUWWvFXPo+3QQC4QTKFk2iNNSmTfn6CEuJagC/2PYYUclwjtIr/puYjbvPJuNa925eeiUfCeltzpQiXGs7gL/Sl7tXYjCtzOL4cw8EFU659s9VTCxGiO3+7eAFPZP9oHCWgaFeVn8i0foKo+Ifu8CQVqAABFKDks/SISmrumlvEUkRlBD0kHbXUc6yxJsWeCk+TzDjbDEDojTPZmryJvDnULbBwTiBhCs8+hoKmI8cgj8mqk5mpYNM98zzli1TueFZlD6btH48q3zKAD6Rb86kU6EY4w0CEGPPQpvPgrDrJvVK52nmmB9GBrcLiRfIO4QXO6U3lYVL29JLj1y7BJyDqNlNMK0ClQEsNqRIk9A8QcRFAHl6TcpN5hiaGsxnacraYRRo3kPR9b/3lQnb1L6UlprcZuF+vm7R/fksC6wUIfeU= X-Forefront-PRVS: 0214EB3F68 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAzMDFNQjA3MzU7MjM6SDhwM2NyeFhwZHlDQkMwVlVmY1BEdDlu?= =?utf-8?B?cVJsK0N5Slk5KzFmWVVUWEpreitlZFB0Q1F5dVgrRkJqak1PR1dVMnpqME9E?= =?utf-8?B?QTFVSnpPOEx5WElIcENwQnlPWGIwWUFTQWp4ZUs1RWhBWFdpRTZkWEdSU1l0?= =?utf-8?B?K1d1VDYybnoyT0ZQdzhoQm1qL1R6VWx1Z2o4Qm95N290YkNtdFBEVFBqczVR?= =?utf-8?B?VStKeVRCWTV1N1J0VDR4QWhCM0hHQ0NSbDlyZ080Z1NHcGhLS0t2YjJSZmpV?= =?utf-8?B?K0tCQlJhdVFsUWl6cFR6SWtDY1cycHRCRXJhbyt5Q0ZsSmdGb203bzhXajZk?= =?utf-8?B?cldENXB0QmFkZWNYOGZkc0d3cElZd0tCOXlKKzUrTGtIQlBMaDQxU3IxT21o?= =?utf-8?B?cHJOL0RJekh3ZTdMaDlVclQ5SkRyZ2c1OStLdUdXYmRTaE9qM3NJMVZ5NThW?= =?utf-8?B?NnE1R3VlOUI5MUFzaXhjMU9MMW0yRW1RemhNSENzeTF5VWFyOXYrTFRnYWJu?= =?utf-8?B?eUxOOUl1WjBOeHdEQVdYeWRzVzlXTDF1NG5Od1VhQTZWeTh2a21uS2JUNEM2?= =?utf-8?B?ck56RDVCSkZaYjJRN21kSURwdy9SU0FlQlMrb0JZcWpNRWJNMEhuTUNhVW9T?= =?utf-8?B?ZWhlS2pWdHgyQ0ZmRVBLblFJaXhVeXhtdGxkU0g1RmNWTkZldHB2Q216cnVY?= =?utf-8?B?YjBIMGRhTURZNFhOSWJkREpQRE1xOEhLNGc0bGMyMFJ6RGlaVGd6akUvdFN0?= =?utf-8?B?Lzcwbjh2RlFGVGVSMUdiRjg4ellpY2ZGUjVMZ0orTWJNWVhsOVh3Yk5hdjd3?= =?utf-8?B?QnAycWJkeUZjcDdJcDdGZkpkcERYaDhZR1MxclZZVXdsVDlaM1JLRk9RQkxv?= =?utf-8?B?UzdOWmJGcy9hT1ZsYjB3ajJ6SGwvVjBJaExVazFLN3I2d2JWNXhuTWxhY2Ra?= =?utf-8?B?ZVc3Tk9heDBoeG1aRlpWZXcwNVQwR014ZDZHT2VMRWk0TWhvb2pOSWQ3V3pu?= =?utf-8?B?bUExRjRjaGc3R0FEVFpjYWhNeXlsVC9CSHFZZ21zWVdUeVdoMEpzczJiREVJ?= =?utf-8?B?WUl5SWFrLzdSa29Sem5nRlZkd1NQNGVjQkJvQUFCNnoyL1ZDQ3lPOVBTL3pw?= =?utf-8?B?ckVTTHQ5VDZhM08yMW11TzN4ZGUySXdwZi9qVllxYTJZMVFYa3YvV2JXc0NZ?= =?utf-8?B?ZHNMYUs3MWN3UGdIamtRemdaN2x1TnJ0VXRwN0hWVUxGQTZWVnFHN0NQQlVX?= =?utf-8?B?Ym55RUJaN1FKa2ZPRFEwTzdRT3Z6c2hLQVI1WXlmNmZDaDAzVGY5TXpwbll3?= =?utf-8?B?MEo3UEdtd3ozbjB4VU1YbzJzai8wQys4dm9Fb3ErVFZxSjBWR0x5aWN0Ym1a?= =?utf-8?B?NjA1QzAvbW5qb0FObU9raTByT0JCSkt5a3FKaTRuTzExRHI1SFNSMTBKcFJK?= =?utf-8?B?WWE4R0pFZEhUdEZPaTY5dmtjbU5JMVl0L3oyRC90TjBDeW5lcnhadVltZnFl?= =?utf-8?B?T01ma2s4NEU5QkNBVFYveGRYS1R2WlR3R3RBckhrTUZzbjcxelFXWEFJeUdM?= =?utf-8?B?YnN6U1VlMHhZcHgrN0Nacy9xUFlQZnF0ZEZESjV4aUZ5K3hFNGg3RTNKcnpo?= =?utf-8?B?UWM2elBXc0xveVVCV2RhMmFuNnN3a3A2V1lkR25EV3hxR0x2UUE2Snp1K2x2?= =?utf-8?B?VjJIamw1QjNON1ZCQXUySU11QmRzRTR5cWFScVBRK1BXbkV1bW1JQ01QejBq?= =?utf-8?B?SG84T0d6WE9tWFR3ZUtUUVNwOXZWK0FZcVo5OHZLWDV2ZHNXSi80OVpFdE1u?= =?utf-8?Q?mEqU0fOEn/E5l1d?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 6:4OvDYknrmDDEauRA4ksvzBGz02dvbci9UYP45BufH103QDEuwdJ2FospopEt7k6i3EB4DXfG+PwMuNBlPcvePWiVGifTk+F3LdUSXVPFCJIspzywnaRbju5dIhCWOFFRER5GSs50I0wLyIgorkjjIihX3RlDXNSZzbN1dpLDEVhSUFFLl1Oyr3zkltdAJ+pVVzD7Lhw16LLFH7ur69N0DqeYZKi7GYc25kmhdE130G/Dhi90Dtp9rJ1Q8nZmVklR4YYsd7q01OPM1pwQcfs1/DmqAYwNR4kRrAVz9PMj7qpaiblwF60iSjg3f0ezQO+ic7Irp1PVFhFIeYODBdjzfiPZAyKmcyCoXqVCLVcOeEh5JxCKJwkYBDqFCAvK4qNFE9BR+keibZh+svmSTLc6yw==; 5:G7xSuPN/bMH0DcG7hpvvP1y9CJUwN4XTjXbk5KBczf00SOAfzsJdOOsnjkthbGaU1RpfnMiwckMW1aqsUR2MIc+HTAvDM0IbjBjx/a3AQxO/AWDebIOYwhTy9bwyBfUMN3D/eYkau59pML0QOVNXPMpJR2asBUc0+or1ZOcsg19WQM5+NPMk6ccmwkSQ2M6j; 24:To9a/9+Kj8Vv6sbjBhw3KRCjzVvXNcx2TOK8deraAHpjnWBX+OU9tF9axwRBZLUNQ1R8VU3q7Rx+Jzv8slct3lKViXw7L+nne7cZ+QleTUQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 7:fmPWLkI77ZH+r4YsdkGEnferyFmiO88OQgTaiwe5wIYqbGqyfbo16yKJfQbEFfLTiGIv7QecRoeLIyafo4stUillW6KjqGY0+eh3Qww6P7N2hvXaXHDgNnyUc8WNfoftycvhq8pAAH1/UckaSB1b5dpHDy1i80nD4ZsrelxDnGrdBGUg/3482IFVyAYtB4OoSp5LucPlWX4jFpVxcDGyxZ/qKLZ4mIvtOSiwJ/BIHIhLd0+7vISKCHsVSPRhXXfkir6MR/1UgiSASGNsb/M9LjILmx1w6aDKriR27Gr8IHeUbWjNO3IHFvJx+8lwDfBz6gBRZGSHXRWRPaXJXzzjn/PvWLh7LNe268PpDzy3fJDslZ+3Olw7Y6Em5vB0aHP+GX3ZatkkrGjAaaqavvn5g9fY6TtbijRbOW89An+3Xi0QI4wzCsp+uopCAaduPvTOeWNIvtcmNLvACLhZff/Y+9gnA1ccZ87d/HcCaQ94ey59jlPvCcZP/tjH/0Mt1AODC0cMLPzGbjfX0fdNgwTJuQ== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2017 12:07:57.9849 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0735 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 caamhash uses double buffering for holding previous/current and next chunks (data smaller than block size) to be hashed. Add (inline) functions to abstract this mechanism. Signed-off-by: Horia Geantă --- drivers/crypto/caam/caamhash.c | 77 ++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c index 6c6c005f417b..b37d555a80d0 100644 --- a/drivers/crypto/caam/caamhash.c +++ b/drivers/crypto/caam/caamhash.c @@ -137,6 +137,31 @@ struct caam_export_state { int (*finup)(struct ahash_request *req); }; +static inline void switch_buf(struct caam_hash_state *state) +{ + state->current_buf ^= 1; +} + +static inline u8 *current_buf(struct caam_hash_state *state) +{ + return state->current_buf ? state->buf_1 : state->buf_0; +} + +static inline u8 *alt_buf(struct caam_hash_state *state) +{ + return state->current_buf ? state->buf_0 : state->buf_1; +} + +static inline int *current_buflen(struct caam_hash_state *state) +{ + return state->current_buf ? &state->buflen_1 : &state->buflen_0; +} + +static inline int *alt_buflen(struct caam_hash_state *state) +{ + return state->current_buf ? &state->buflen_0 : &state->buflen_1; +} + /* Common job descriptor seq in/out ptr routines */ /* Map state->caam_ctx, and append seq_out_ptr command that points to it */ @@ -695,11 +720,10 @@ static int ahash_update_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int *buflen = state->current_buf ? &state->buflen_1 : &state->buflen_0; - u8 *next_buf = state->current_buf ? state->buf_0 : state->buf_1; - int *next_buflen = state->current_buf ? &state->buflen_0 : - &state->buflen_1, last_buflen; + u8 *buf = current_buf(state); + int *buflen = current_buflen(state); + u8 *next_buf = alt_buf(state); + int *next_buflen = alt_buflen(state), last_buflen; int in_len = *buflen + req->nbytes, to_hash; u32 *desc; int src_nents, mapped_nents, sec4_sg_bytes, sec4_sg_src_index; @@ -771,7 +795,7 @@ static int ahash_update_ctx(struct ahash_request *req) cpu_to_caam32(SEC4_SG_LEN_FIN); } - state->current_buf = !state->current_buf; + switch_buf(state); desc = edesc->hw_desc; @@ -829,10 +853,9 @@ static int ahash_final_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int buflen = state->current_buf ? state->buflen_1 : state->buflen_0; - int last_buflen = state->current_buf ? state->buflen_0 : - state->buflen_1; + u8 *buf = current_buf(state); + int buflen = *current_buflen(state); + int last_buflen = *alt_buflen(state); u32 *desc; int sec4_sg_bytes, sec4_sg_src_index; int digestsize = crypto_ahash_digestsize(ahash); @@ -908,10 +931,9 @@ static int ahash_finup_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int buflen = state->current_buf ? state->buflen_1 : state->buflen_0; - int last_buflen = state->current_buf ? state->buflen_0 : - state->buflen_1; + u8 *buf = current_buf(state); + int buflen = *current_buflen(state); + int last_buflen = *alt_buflen(state); u32 *desc; int sec4_sg_src_index; int src_nents, mapped_nents; @@ -1075,8 +1097,8 @@ static int ahash_final_no_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int buflen = state->current_buf ? state->buflen_1 : state->buflen_0; + u8 *buf = current_buf(state); + int buflen = *current_buflen(state); u32 *desc; int digestsize = crypto_ahash_digestsize(ahash); struct ahash_edesc *edesc; @@ -1136,11 +1158,10 @@ static int ahash_update_no_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int *buflen = state->current_buf ? &state->buflen_1 : &state->buflen_0; - u8 *next_buf = state->current_buf ? state->buf_0 : state->buf_1; - int *next_buflen = state->current_buf ? &state->buflen_0 : - &state->buflen_1; + u8 *buf = current_buf(state); + int *buflen = current_buflen(state); + u8 *next_buf = alt_buf(state); + int *next_buflen = alt_buflen(state); int in_len = *buflen + req->nbytes, to_hash; int sec4_sg_bytes, src_nents, mapped_nents; struct ahash_edesc *edesc; @@ -1200,7 +1221,7 @@ static int ahash_update_no_ctx(struct ahash_request *req) *next_buflen, 0); } - state->current_buf = !state->current_buf; + switch_buf(state); desc = edesc->hw_desc; @@ -1263,10 +1284,9 @@ static int ahash_finup_no_ctx(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *buf = state->current_buf ? state->buf_1 : state->buf_0; - int buflen = state->current_buf ? state->buflen_1 : state->buflen_0; - int last_buflen = state->current_buf ? state->buflen_0 : - state->buflen_1; + u8 *buf = current_buf(state); + int buflen = *current_buflen(state); + int last_buflen = *alt_buflen(state); u32 *desc; int sec4_sg_bytes, sec4_sg_src_index, src_nents, mapped_nents; int digestsize = crypto_ahash_digestsize(ahash); @@ -1356,9 +1376,8 @@ static int ahash_update_first(struct ahash_request *req) struct device *jrdev = ctx->jrdev; gfp_t flags = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP)) ? GFP_KERNEL : GFP_ATOMIC; - u8 *next_buf = state->current_buf ? state->buf_1 : state->buf_0; - int *next_buflen = state->current_buf ? - &state->buflen_1 : &state->buflen_0; + u8 *next_buf = current_buf(state); + int *next_buflen = current_buflen(state); int to_hash; u32 *desc; int src_nents, mapped_nents;