Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp1889301imm; Thu, 18 Oct 2018 06:03:05 -0700 (PDT) X-Google-Smtp-Source: ACcGV600sXMBu83JgN65gjsUP9VTIOeI0loql0OMXSdpBA/mALX5CygymZQZtoVzoSMCfeBEUxGv X-Received: by 2002:a62:3047:: with SMTP id w68-v6mr30400533pfw.19.1539867784990; Thu, 18 Oct 2018 06:03:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539867784; cv=none; d=google.com; s=arc-20160816; b=cr1KgiVDeSANNRiABhqD6UhbCVKdGi+p9q07gCAfbqMSu8hVguGO224Z9fTx1m4YsB KJzpZEyaD384cjuc/43YL1rx3CzReoXSnC9sG8E41nUxVo8Kqx3uMfw9q8ujX3/5jTs2 iwMbxDxQ7o5cijByNxMzEayTBibGfx0opA2L7F13GJGjYKfQ3WPW7BfoP920cz93DSe0 2HPgAAce1vNhci4tVmto9x0Ggi3/K9v6jZJNV85hCHhouM9FnvZofCMBz/SHn84JiBSu 7SHblyZszXcMMn4wTibzv5JZQeYM7+GBvfMBlP4kpwlSLl9mbTpzo/QMdlcYczY9S5/U AZPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=uX/k7qYVx7EFfzcOKcaobbyn10n4T6pQiPNjhDYxLTk=; b=EDy+Sjw8tzVMrcj/aRczzOkBrq0qy+mkE91361+IaJ9OyUcNXfdGTgjG1/+OwXobK6 hHJV11Z2JtKbjvCGRkI8b4TqCTD9xgo/0F92E+3Xlr3jc3jKoWEK+caY9wN4WhKYkjp9 fln8vOgXrtsVwf64pjaYfeQRBQk/syQYHZK7Hbn+aKIM65W0oQiX81ilaJRgH7Nd39HS MhF9/ZmyjevrCVFs8nfbZOogTpF4L471IUgZ4kZC0o4Gpx1oKeVxLMTM4I/Vp+6PVNA/ g/n0R24Lv5muZcDNeWJX4JrOlPuXqhRMfMMq2NxDtCOgOWfPTC1RVF1sdpC0HzrZT0Eh GxfQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 5-v6si22459803pfz.160.2018.10.18.06.02.49; Thu, 18 Oct 2018 06:03:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727509AbeJRVB3 (ORCPT + 99 others); Thu, 18 Oct 2018 17:01:29 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:37518 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726758AbeJRVB2 (ORCPT ); Thu, 18 Oct 2018 17:01:28 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7E94B15BE; Thu, 18 Oct 2018 06:00:33 -0700 (PDT) Received: from ssg-dev-vb.kfn.arm.com (E111387.Emea.Arm.com [10.50.33.152]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BDF753F59C; Thu, 18 Oct 2018 06:00:31 -0700 (PDT) From: Yael Chemla To: Gilad Ben-Yossef , Herbert Xu , "David S . Miller" , linux-crypto@vger.kernel.org, Ofir Drang , linux-kernel@vger.kernel.org Cc: Yael Chemla Subject: [PATCH 2/3] crypto: ccree: modify set_cipher_mode usage from cc_hash Date: Thu, 18 Oct 2018 13:59:58 +0100 Message-Id: <1539867599-20504-3-git-send-email-yael.chemla@foss.arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1539867599-20504-1-git-send-email-yael.chemla@foss.arm.com> References: <1539867599-20504-1-git-send-email-yael.chemla@foss.arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org encapsulate set_cipher_mode call with another api, preparation for specific hash behavior as needed in later patches when SM3 introduced. Signed-off-by: Yael Chemla --- drivers/crypto/ccree/cc_hash.c | 18 +++++++++--------- drivers/crypto/ccree/cc_hw_queue_defs.h | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/crypto/ccree/cc_hash.c b/drivers/crypto/ccree/cc_hash.c index 7af5b61..adcd9df 100644 --- a/drivers/crypto/ccree/cc_hash.c +++ b/drivers/crypto/ccree/cc_hash.c @@ -322,7 +322,7 @@ static int cc_fin_result(struct cc_hw_desc *desc, struct ahash_request *req, /* Get final MAC result */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); /* TODO */ set_dout_dlli(&desc[idx], state->digest_result_dma_addr, digestsize, NS_BIT, 1); @@ -441,7 +441,7 @@ static int cc_hash_digest(struct ahash_request *req) * digest */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); if (is_hmac) { set_din_type(&desc[idx], DMA_DLLI, state->digest_buff_dma_addr, ctx->inter_digestsize, NS_BIT); @@ -455,7 +455,7 @@ static int cc_hash_digest(struct ahash_request *req) /* Load the hash current length */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); if (is_hmac) { set_din_type(&desc[idx], DMA_DLLI, @@ -505,7 +505,7 @@ static int cc_restore_hash(struct cc_hw_desc *desc, struct cc_hash_ctx *ctx, { /* Restore hash digest */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); set_din_type(&desc[idx], DMA_DLLI, state->digest_buff_dma_addr, ctx->inter_digestsize, NS_BIT); set_flow_mode(&desc[idx], S_DIN_to_HASH); @@ -514,7 +514,7 @@ static int cc_restore_hash(struct cc_hw_desc *desc, struct cc_hash_ctx *ctx, /* Restore hash current length */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); set_cipher_config1(&desc[idx], HASH_PADDING_DISABLED); set_din_type(&desc[idx], DMA_DLLI, state->digest_bytes_len_dma_addr, ctx->hash_len, NS_BIT); @@ -577,7 +577,7 @@ static int cc_hash_update(struct ahash_request *req) /* store the hash digest result in context */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); set_dout_dlli(&desc[idx], state->digest_buff_dma_addr, ctx->inter_digestsize, NS_BIT, 0); set_flow_mode(&desc[idx], S_HASH_to_DOUT); @@ -586,7 +586,7 @@ static int cc_hash_update(struct ahash_request *req) /* store current hash length in context */ hw_desc_init(&desc[idx]); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); set_dout_dlli(&desc[idx], state->digest_bytes_len_dma_addr, ctx->hash_len, NS_BIT, 1); set_queue_last_ind(ctx->drvdata, &desc[idx]); @@ -650,7 +650,7 @@ static int cc_do_finup(struct ahash_request *req, bool update) /* Pad the hash */ hw_desc_init(&desc[idx]); set_cipher_do(&desc[idx], DO_PAD); - set_cipher_mode(&desc[idx], ctx->hw_mode); + set_hash_cipher_mode(&desc[idx], ctx->hw_mode, ctx->hash_mode); set_dout_dlli(&desc[idx], state->digest_bytes_len_dma_addr, ctx->hash_len, NS_BIT, 0); set_setup_mode(&desc[idx], SETUP_WRITE_STATE1); @@ -2035,7 +2035,7 @@ static void cc_setup_xcbc(struct ahash_request *areq, struct cc_hw_desc desc[], XCBC_MAC_K1_OFFSET), CC_AES_128_BIT_KEY_SIZE, NS_BIT); set_setup_mode(&desc[idx], SETUP_LOAD_KEY0); - set_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC); + set_hash_cipher_mode(&desc[idx], DRV_CIPHER_XCBC_MAC, ctx->hash_mode); set_cipher_config0(&desc[idx], DESC_DIRECTION_ENCRYPT_ENCRYPT); set_key_size_aes(&desc[idx], CC_AES_128_BIT_KEY_SIZE); set_flow_mode(&desc[idx], S_DIN_to_AES); diff --git a/drivers/crypto/ccree/cc_hw_queue_defs.h b/drivers/crypto/ccree/cc_hw_queue_defs.h index 45985b9..b367b67 100644 --- a/drivers/crypto/ccree/cc_hw_queue_defs.h +++ b/drivers/crypto/ccree/cc_hw_queue_defs.h @@ -455,6 +455,20 @@ static inline void set_cipher_mode(struct cc_hw_desc *pdesc, int mode) } /* + * Set the cipher mode for hash algorithms. + * + * @pdesc: pointer HW descriptor struct + * @cipher_mode: Any one of the modes defined in [CC7x-DESC] + * @hash_mode: specifies which hash is being handled + */ +static inline void set_hash_cipher_mode(struct cc_hw_desc *pdesc, + enum drv_cipher_mode cipher_mode, + enum drv_hash_mode hash_mode) +{ + set_cipher_mode(pdesc, cipher_mode); +} + +/* * Set the cipher configuration fields. * * @pdesc: pointer HW descriptor struct -- 2.7.4