From d5dc392742a9818e2766a63f3533980543e18060 Mon Sep 17 00:00:00 2001 From: Sebastian Siewior Date: Tue, 11 Mar 2008 21:27:11 +0800 Subject: [CRYPTO] tcrypt: Shrink speed templates The speed templates as it look always the same. The key size is repeated for each block size and we test always the same block size. The addition of one inner loop makes it possible to get rid of the struct and it is possible to use a tiny u8 array :) Signed-off-by: Sebastian Siewior Signed-off-by: Herbert Xu --- crypto/tcrypt.c | 89 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 39 deletions(-) (limited to 'crypto/tcrypt.c') diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index cff18364fbc..6b8315b6f2a 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c @@ -721,15 +721,18 @@ out: return ret; } +static u32 block_sizes[] = { 16, 64, 256, 1024, 8192, 0 }; + static void test_cipher_speed(char *algo, int enc, unsigned int sec, struct cipher_testvec *template, - unsigned int tcount, struct cipher_speed *speed) + unsigned int tcount, u8 *keysize) { unsigned int ret, i, j, iv_len; unsigned char *key, *p, iv[128]; struct crypto_blkcipher *tfm; struct blkcipher_desc desc; const char *e; + u32 *b_size; if (enc == ENCRYPT) e = "encryption"; @@ -748,52 +751,60 @@ static void test_cipher_speed(char *algo, int enc, unsigned int sec, desc.tfm = tfm; desc.flags = 0; - for (i = 0; speed[i].klen != 0; i++) { - if ((speed[i].blen + speed[i].klen) > TVMEMSIZE) { - printk("template (%u) too big for tvmem (%u)\n", - speed[i].blen + speed[i].klen, TVMEMSIZE); - goto out; - } + i = 0; + do { - printk("test %u (%d bit key, %d byte blocks): ", i, - speed[i].klen * 8, speed[i].blen); + b_size = block_sizes; + do { - memset(tvmem, 0xff, speed[i].klen + speed[i].blen); + if ((*keysize + *b_size) > TVMEMSIZE) { + printk("template (%u) too big for tvmem (%u)\n", + *keysize + *b_size, TVMEMSIZE); + goto out; + } - /* set key, plain text and IV */ - key = (unsigned char *)tvmem; - for (j = 0; j < tcount; j++) { - if (template[j].klen == speed[i].klen) { - key = template[j].key; - break; + printk("test %u (%d bit key, %d byte blocks): ", i, + *keysize * 8, *b_size); + + memset(tvmem, 0xff, *keysize + *b_size); + + /* set key, plain text and IV */ + key = (unsigned char *)tvmem; + for (j = 0; j < tcount; j++) { + if (template[j].klen == *keysize) { + key = template[j].key; + break; + } } - } - p = (unsigned char *)tvmem + speed[i].klen; + p = (unsigned char *)tvmem + *keysize; - ret = crypto_blkcipher_setkey(tfm, key, speed[i].klen); - if (ret) { - printk("setkey() failed flags=%x\n", - crypto_blkcipher_get_flags(tfm)); - goto out; - } + ret = crypto_blkcipher_setkey(tfm, key, *keysize); + if (ret) { + printk("setkey() failed flags=%x\n", + crypto_blkcipher_get_flags(tfm)); + goto out; + } - iv_len = crypto_blkcipher_ivsize(tfm); - if (iv_len) { - memset(&iv, 0xff, iv_len); - crypto_blkcipher_set_iv(tfm, iv, iv_len); - } + iv_len = crypto_blkcipher_ivsize(tfm); + if (iv_len) { + memset(&iv, 0xff, iv_len); + crypto_blkcipher_set_iv(tfm, iv, iv_len); + } - if (sec) - ret = test_cipher_jiffies(&desc, enc, p, speed[i].blen, - sec); - else - ret = test_cipher_cycles(&desc, enc, p, speed[i].blen); + if (sec) + ret = test_cipher_jiffies(&desc, enc, p, *b_size, sec); + else + ret = test_cipher_cycles(&desc, enc, p, *b_size); - if (ret) { - printk("%s() failed flags=%x\n", e, desc.flags); - break; - } - } + if (ret) { + printk("%s() failed flags=%x\n", e, desc.flags); + break; + } + b_size++; + i++; + } while (*b_size); + keysize++; + } while (*keysize); out: crypto_free_blkcipher(tfm); -- cgit v1.2.3