crypto: tcrypt - Speed testing support for ghash
Huang Ying [Wed, 10 Mar 2010 10:30:32 +0000 (18:30 +0800)]
Because ghash needs setkey, the setkey and keysize template support
for test_hash_speed is added.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

crypto/tcrypt.c
crypto/tcrypt.h

index aa3f84c..0b7a843 100644 (file)
@@ -437,6 +437,9 @@ static void test_hash_speed(const char *algo, unsigned int sec,
                        goto out;
                }
 
+               if (speed[i].klen)
+                       crypto_hash_setkey(tfm, tvmem[0], speed[i].klen);
+
                printk(KERN_INFO "test%3u "
                       "(%5u byte blocks,%5u bytes per update,%4u updates): ",
                       i, speed[i].blen, speed[i].plen, speed[i].blen / speed[i].plen);
@@ -881,6 +884,10 @@ static int do_test(int m)
                test_hash_speed("rmd320", sec, generic_hash_speed_template);
                if (mode > 300 && mode < 400) break;
 
+       case 318:
+               test_hash_speed("ghash-generic", sec, hash_speed_template_16);
+               if (mode > 300 && mode < 400) break;
+
        case 399:
                break;
 
index 966bbfa..10cb925 100644 (file)
@@ -25,6 +25,7 @@ struct cipher_speed_template {
 struct hash_speed {
        unsigned int blen;      /* buffer length */
        unsigned int plen;      /* per-update length */
+       unsigned int klen;      /* key length */
 };
 
 /*
@@ -83,4 +84,32 @@ 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, }
+};
+
 #endif /* _CRYPTO_TCRYPT_H */