diff options
Diffstat (limited to 'crypto/tcrypt.c')
-rw-r--r-- | crypto/tcrypt.c | 89 |
1 files changed, 50 insertions, 39 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index cff18364fbc1..6b8315b6f2a5 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -721,15 +721,18 @@ out: | |||
721 | return ret; | 721 | return ret; |
722 | } | 722 | } |
723 | 723 | ||
724 | static u32 block_sizes[] = { 16, 64, 256, 1024, 8192, 0 }; | ||
725 | |||
724 | static void test_cipher_speed(char *algo, int enc, unsigned int sec, | 726 | static void test_cipher_speed(char *algo, int enc, unsigned int sec, |
725 | struct cipher_testvec *template, | 727 | struct cipher_testvec *template, |
726 | unsigned int tcount, struct cipher_speed *speed) | 728 | unsigned int tcount, u8 *keysize) |
727 | { | 729 | { |
728 | unsigned int ret, i, j, iv_len; | 730 | unsigned int ret, i, j, iv_len; |
729 | unsigned char *key, *p, iv[128]; | 731 | unsigned char *key, *p, iv[128]; |
730 | struct crypto_blkcipher *tfm; | 732 | struct crypto_blkcipher *tfm; |
731 | struct blkcipher_desc desc; | 733 | struct blkcipher_desc desc; |
732 | const char *e; | 734 | const char *e; |
735 | u32 *b_size; | ||
733 | 736 | ||
734 | if (enc == ENCRYPT) | 737 | if (enc == ENCRYPT) |
735 | e = "encryption"; | 738 | e = "encryption"; |
@@ -748,52 +751,60 @@ static void test_cipher_speed(char *algo, int enc, unsigned int sec, | |||
748 | desc.tfm = tfm; | 751 | desc.tfm = tfm; |
749 | desc.flags = 0; | 752 | desc.flags = 0; |
750 | 753 | ||
751 | for (i = 0; speed[i].klen != 0; i++) { | 754 | i = 0; |
752 | if ((speed[i].blen + speed[i].klen) > TVMEMSIZE) { | 755 | do { |
753 | printk("template (%u) too big for tvmem (%u)\n", | ||
754 | speed[i].blen + speed[i].klen, TVMEMSIZE); | ||
755 | goto out; | ||
756 | } | ||
757 | 756 | ||
758 | printk("test %u (%d bit key, %d byte blocks): ", i, | 757 | b_size = block_sizes; |
759 | speed[i].klen * 8, speed[i].blen); | 758 | do { |
760 | 759 | ||
761 | memset(tvmem, 0xff, speed[i].klen + speed[i].blen); | 760 | if ((*keysize + *b_size) > TVMEMSIZE) { |
761 | printk("template (%u) too big for tvmem (%u)\n", | ||
762 | *keysize + *b_size, TVMEMSIZE); | ||
763 | goto out; | ||
764 | } | ||
762 | 765 | ||
763 | /* set key, plain text and IV */ | 766 | printk("test %u (%d bit key, %d byte blocks): ", i, |
764 | key = (unsigned char *)tvmem; | 767 | *keysize * 8, *b_size); |
765 | for (j = 0; j < tcount; j++) { | 768 | |
766 | if (template[j].klen == speed[i].klen) { | 769 | memset(tvmem, 0xff, *keysize + *b_size); |
767 | key = template[j].key; | 770 | |
768 | break; | 771 | /* set key, plain text and IV */ |
772 | key = (unsigned char *)tvmem; | ||
773 | for (j = 0; j < tcount; j++) { | ||
774 | if (template[j].klen == *keysize) { | ||
775 | key = template[j].key; | ||
776 | break; | ||
777 | } | ||
769 | } | 778 | } |
770 | } | 779 | p = (unsigned char *)tvmem + *keysize; |
771 | p = (unsigned char *)tvmem + speed[i].klen; | ||
772 | 780 | ||
773 | ret = crypto_blkcipher_setkey(tfm, key, speed[i].klen); | 781 | ret = crypto_blkcipher_setkey(tfm, key, *keysize); |
774 | if (ret) { | 782 | if (ret) { |
775 | printk("setkey() failed flags=%x\n", | 783 | printk("setkey() failed flags=%x\n", |
776 | crypto_blkcipher_get_flags(tfm)); | 784 | crypto_blkcipher_get_flags(tfm)); |
777 | goto out; | 785 | goto out; |
778 | } | 786 | } |
779 | 787 | ||
780 | iv_len = crypto_blkcipher_ivsize(tfm); | 788 | iv_len = crypto_blkcipher_ivsize(tfm); |
781 | if (iv_len) { | 789 | if (iv_len) { |
782 | memset(&iv, 0xff, iv_len); | 790 | memset(&iv, 0xff, iv_len); |
783 | crypto_blkcipher_set_iv(tfm, iv, iv_len); | 791 | crypto_blkcipher_set_iv(tfm, iv, iv_len); |
784 | } | 792 | } |
785 | 793 | ||
786 | if (sec) | 794 | if (sec) |
787 | ret = test_cipher_jiffies(&desc, enc, p, speed[i].blen, | 795 | ret = test_cipher_jiffies(&desc, enc, p, *b_size, sec); |
788 | sec); | 796 | else |
789 | else | 797 | ret = test_cipher_cycles(&desc, enc, p, *b_size); |
790 | ret = test_cipher_cycles(&desc, enc, p, speed[i].blen); | ||
791 | 798 | ||
792 | if (ret) { | 799 | if (ret) { |
793 | printk("%s() failed flags=%x\n", e, desc.flags); | 800 | printk("%s() failed flags=%x\n", e, desc.flags); |
794 | break; | 801 | break; |
795 | } | 802 | } |
796 | } | 803 | b_size++; |
804 | i++; | ||
805 | } while (*b_size); | ||
806 | keysize++; | ||
807 | } while (*keysize); | ||
797 | 808 | ||
798 | out: | 809 | out: |
799 | crypto_free_blkcipher(tfm); | 810 | crypto_free_blkcipher(tfm); |