diff mbox series

crypto: tcrypt - add skcipher speed for given alg

Message ID 20240509113703.578583-1-sergey.portnoy@intel.com (mailing list archive)
State Superseded
Delegated to: Herbert Xu
Headers show
Series crypto: tcrypt - add skcipher speed for given alg | expand

Commit Message

Sergey Portnoy May 9, 2024, 11:36 a.m. UTC
Allow to run skcipher speed for given algorithm.
Two separate cases are added to cover ENCRYPT and DECRYPT
directions.

Example:
   modprobe tcrypt mode=611 alg="qat_aes_xts" klen=32

If succeed, the performance numbers will be printed in dmesg:
   testing speed of multibuffer qat_aes_xts (qat_aes_xts) encryption
   test 0 (256 bit key, 16 byte blocks): 1 operation in 14596 cycles (16 bytes)
   ...
   test 6 (256 bit key, 4096 byte blocks): 1 operation in 8053 cycles (4096 bytes)

Signed-off-by: Sergey Portnoy <sergey.portnoy@intel.com>
---
 crypto/tcrypt.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

Comments

Elliott, Robert (Servers) May 9, 2024, 7:58 p.m. UTC | #1
> -----Original Message-----
> From: Sergey Portnoy <sergey.portnoy@intel.com>
> Sent: Thursday, May 9, 2024 6:36 AM
> To: herbert@gondor.apana.org.au
> Cc: linux-crypto@vger.kernel.org; qat-linux@intel.com
> Subject: [PATCH] crypto: tcrypt - add skcipher speed for given alg
> 
> Allow to run skcipher speed for given algorithm.
> Two separate cases are added to cover ENCRYPT and DECRYPT
> directions.
> 
> Example:
>    modprobe tcrypt mode=611 alg="qat_aes_xts" klen=32
> 
> If succeed, the performance numbers will be printed in dmesg:
>    testing speed of multibuffer qat_aes_xts (qat_aes_xts) encryption
>    test 0 (256 bit key, 16 byte blocks): 1 operation in 14596 cycles (16
> bytes)
>    ...
>    test 6 (256 bit key, 4096 byte blocks): 1 operation in 8053 cycles
> (4096 bytes)
> 
> Signed-off-by: Sergey Portnoy <sergey.portnoy@intel.com>
> ---
>  crypto/tcrypt.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
> index 8aea416f6480..73bea38c8112 100644
> --- a/crypto/tcrypt.c
> +++ b/crypto/tcrypt.c
> @@ -68,6 +68,7 @@ static int mode;
>  static u32 num_mb = 8;
>  static unsigned int klen;
>  static char *tvmem[TVMEMSIZE];
> +static char speed_template[2];

u8 would better match the source:
    static unsigned int klen;
    module_param(klen, uint, 0);
    MODULE_PARM_DESC(klen, "Key length (defaults to 0)");

and use as the keysize argument in:
    static void test_mb_skcipher_speed(const char *algo, int enc, int secs,
                                   struct cipher_speed_template *template,
                                   unsigned int tcount, u8 *keysize, u32 num_mb)

and the other constant speed test arrays like:
    static u8 speed_template_8[] = {8, 0};
    static u8 speed_template_16[] = {16, 0};
    static u8 speed_template_24[] = {24, 0};

...
> +	case 611:
> +		speed_template[0] = klen;
> +		if (alg)
> +			test_mb_skcipher_speed(alg, ENCRYPT, sec, NULL, 0,
> +					       speed_template, num_mb);
> +		break;
> +	case 612:
> +		speed_template[0] = klen;
> +		if (alg)
> +			test_mb_skcipher_speed(alg, DECRYPT, sec, NULL, 0,
> +					       speed_template, num_mb);
> +		break;

Since it's only two bytes, perhaps it should just be an on-stack variable
inside each of those if blocks, not a file-scope variable.
diff mbox series

Patch

diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c
index 8aea416f6480..73bea38c8112 100644
--- a/crypto/tcrypt.c
+++ b/crypto/tcrypt.c
@@ -68,6 +68,7 @@  static int mode;
 static u32 num_mb = 8;
 static unsigned int klen;
 static char *tvmem[TVMEMSIZE];
+static char speed_template[2];
 
 static const int block_sizes[] = { 16, 64, 128, 256, 1024, 1420, 4096, 0 };
 static const int aead_sizes[] = { 16, 64, 256, 512, 1024, 1420, 4096, 8192, 0 };
@@ -2807,6 +2808,18 @@  static int do_test(const char *alg, u32 type, u32 mask, int m, u32 num_mb)
 				       speed_template_16_32, num_mb);
 		break;
 
+	case 611:
+		speed_template[0] = klen;
+		if (alg)
+			test_mb_skcipher_speed(alg, ENCRYPT, sec, NULL, 0,
+					       speed_template, num_mb);
+		break;
+	case 612:
+		speed_template[0] = klen;
+		if (alg)
+			test_mb_skcipher_speed(alg, DECRYPT, sec, NULL, 0,
+					       speed_template, num_mb);
+		break;
 	}
 
 	return ret;