crypto: inside-secure - Minor optimization recognizing CTR is always AES
authorPascal van Leeuwen <pascalvanl@gmail.com>
Fri, 30 Aug 2019 07:42:29 +0000 (09:42 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 5 Sep 2019 04:37:01 +0000 (14:37 +1000)
Moved counter mode handling code in front as it doesn't depend on the
rest of the code to be executed, it can just do its thing and exit.

Signed-off-by: Pascal van Leeuwen <pvanleeuwen@verimatrix.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/inside-secure/safexcel_cipher.c

index 6e2027ec167ff7a89700948bcbb8c8251076028e..18115dac9d010e6a8ac38d3984f140d4e1c5acf6 100644 (file)
@@ -65,6 +65,19 @@ static void safexcel_cipher_token(struct safexcel_cipher_ctx *ctx, u8 *iv,
 {
        u32 block_sz = 0;
 
+       if (ctx->mode == CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD) {
+               cdesc->control_data.options |= EIP197_OPTION_4_TOKEN_IV_CMD;
+
+               /* 32 bit nonce */
+               cdesc->control_data.token[0] = ctx->nonce;
+               /* 64 bit IV part */
+               memcpy(&cdesc->control_data.token[1], iv, 8);
+               /* 32 bit counter, start at 1 (big endian!) */
+               cdesc->control_data.token[3] = cpu_to_be32(1);
+
+               return;
+       }
+
        if (ctx->mode != CONTEXT_CONTROL_CRYPTO_MODE_ECB) {
                switch (ctx->alg) {
                case SAFEXCEL_DES:
@@ -80,17 +93,7 @@ static void safexcel_cipher_token(struct safexcel_cipher_ctx *ctx, u8 *iv,
                        cdesc->control_data.options |= EIP197_OPTION_4_TOKEN_IV_CMD;
                        break;
                }
-
-               if (ctx->mode == CONTEXT_CONTROL_CRYPTO_MODE_CTR_LOAD) {
-                       /* 32 bit nonce */
-                       cdesc->control_data.token[0] = ctx->nonce;
-                       /* 64 bit IV part */
-                       memcpy(&cdesc->control_data.token[1], iv, 8);
-                       /* 32 bit counter, start at 1 (big endian!) */
-                       cdesc->control_data.token[3] = cpu_to_be32(1);
-               } else {
-                       memcpy(cdesc->control_data.token, iv, block_sz);
-               }
+               memcpy(cdesc->control_data.token, iv, block_sz);
        }
 }