crypto: tcrypt - Add support for hash speed testing with keys
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 5 Aug 2020 05:57:08 +0000 (15:57 +1000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Aug 2020 04:45:27 +0000 (14:45 +1000)
Currently if you speed test a hash that requires a key you'll get an
error because tcrypt does not set a key by default.  This patch
allows a key to be set using the new module parameter klen.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/tcrypt.c
crypto/tcrypt.h

index acc7587..234b1ad 100644 (file)
@@ -63,6 +63,7 @@ static u32 type;
 static u32 mask;
 static int mode;
 static u32 num_mb = 8;
+static unsigned int klen;
 static char *tvmem[TVMEMSIZE];
 
 static const char *check[] = {
@@ -864,8 +865,8 @@ static void test_mb_ahash_speed(const char *algo, unsigned int secs,
                        goto out;
                }
 
-               if (speed[i].klen)
-                       crypto_ahash_setkey(tfm, tvmem[0], speed[i].klen);
+               if (klen)
+                       crypto_ahash_setkey(tfm, tvmem[0], klen);
 
                for (k = 0; k < num_mb; k++)
                        ahash_request_set_crypt(data[k].req, data[k].sg,
@@ -1099,8 +1100,8 @@ static void test_ahash_speed_common(const char *algo, unsigned int secs,
                        break;
                }
 
-               if (speed[i].klen)
-                       crypto_ahash_setkey(tfm, tvmem[0], speed[i].klen);
+               if (klen)
+                       crypto_ahash_setkey(tfm, tvmem[0], klen);
 
                pr_info("test%3u "
                        "(%5u byte blocks,%5u bytes per update,%4u updates): ",
@@ -2418,7 +2419,8 @@ static int do_test(const char *alg, u32 type, u32 mask, int m, u32 num_mb)
                if (mode > 300 && mode < 400) break;
                /* fall through */
        case 318:
-               test_hash_speed("ghash-generic", sec, hash_speed_template_16);
+               klen = 16;
+               test_hash_speed("ghash", sec, generic_hash_speed_template);
                if (mode > 300 && mode < 400) break;
                /* fall through */
        case 319:
@@ -3076,6 +3078,8 @@ MODULE_PARM_DESC(sec, "Length in seconds of speed tests "
                      "(defaults to zero which uses CPU cycles instead)");
 module_param(num_mb, uint, 0000);
 MODULE_PARM_DESC(num_mb, "Number of concurrent requests to be used in mb speed tests (defaults to 8)");
+module_param(klen, uint, 0);
+MODULE_PARM_DESC(klen, "Key length (defaults to 0)");
 
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Quick & dirty crypto testing module");
index 7e5fea8..9f65467 100644 (file)
@@ -25,7 +25,6 @@ struct aead_speed_template {
 struct hash_speed {
        unsigned int blen;      /* buffer length */
        unsigned int plen;      /* per-update length */
-       unsigned int klen;      /* key length */
 };
 
 /*
@@ -97,34 +96,6 @@ static struct hash_speed generic_hash_speed_template[] = {
        {  .blen = 0,   .plen = 0, }
 };
 
-static struct hash_speed hash_speed_template_16[] = {
-       { .blen = 16,   .plen = 16,     .klen = 16, },
-       { .blen = 64,   .plen = 16,     .klen = 16, },
-       { .blen = 64,   .plen = 64,     .klen = 16, },
-       { .blen = 256,  .plen = 16,     .klen = 16, },
-       { .blen = 256,  .plen = 64,     .klen = 16, },
-       { .blen = 256,  .plen = 256,    .klen = 16, },
-       { .blen = 1024, .plen = 16,     .klen = 16, },
-       { .blen = 1024, .plen = 256,    .klen = 16, },
-       { .blen = 1024, .plen = 1024,   .klen = 16, },
-       { .blen = 2048, .plen = 16,     .klen = 16, },
-       { .blen = 2048, .plen = 256,    .klen = 16, },
-       { .blen = 2048, .plen = 1024,   .klen = 16, },
-       { .blen = 2048, .plen = 2048,   .klen = 16, },
-       { .blen = 4096, .plen = 16,     .klen = 16, },
-       { .blen = 4096, .plen = 256,    .klen = 16, },
-       { .blen = 4096, .plen = 1024,   .klen = 16, },
-       { .blen = 4096, .plen = 4096,   .klen = 16, },
-       { .blen = 8192, .plen = 16,     .klen = 16, },
-       { .blen = 8192, .plen = 256,    .klen = 16, },
-       { .blen = 8192, .plen = 1024,   .klen = 16, },
-       { .blen = 8192, .plen = 4096,   .klen = 16, },
-       { .blen = 8192, .plen = 8192,   .klen = 16, },
-
-       /* End marker */
-       {  .blen = 0,   .plen = 0,      .klen = 0, }
-};
-
 static struct hash_speed poly1305_speed_template[] = {
        { .blen = 96,   .plen = 16, },
        { .blen = 96,   .plen = 32, },