diff options
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/tcrypt.c | 89 | ||||
-rw-r--r-- | crypto/tcrypt.h | 129 |
2 files changed, 57 insertions, 161 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); |
diff --git a/crypto/tcrypt.h b/crypto/tcrypt.h index 4180a7463e4e..45e79b56fe96 100644 --- a/crypto/tcrypt.h +++ b/crypto/tcrypt.h | |||
@@ -72,11 +72,6 @@ struct aead_testvec { | |||
72 | unsigned short rlen; | 72 | unsigned short rlen; |
73 | }; | 73 | }; |
74 | 74 | ||
75 | struct cipher_speed { | ||
76 | unsigned char klen; | ||
77 | unsigned int blen; | ||
78 | }; | ||
79 | |||
80 | struct hash_speed { | 75 | struct hash_speed { |
81 | unsigned int blen; /* buffer length */ | 76 | unsigned int blen; /* buffer length */ |
82 | unsigned int plen; /* per-update length */ | 77 | unsigned int plen; /* per-update length */ |
@@ -8032,123 +8027,13 @@ static struct hash_testvec crc32c_tv_template[] = { | |||
8032 | /* | 8027 | /* |
8033 | * Cipher speed tests | 8028 | * Cipher speed tests |
8034 | */ | 8029 | */ |
8035 | static struct cipher_speed speed_template_8[] = { | 8030 | static u8 speed_template_8[] = {8, 0}; |
8036 | { .klen = 8, .blen = 16, }, | 8031 | static u8 speed_template_24[] = {24, 0}; |
8037 | { .klen = 8, .blen = 64, }, | 8032 | static u8 speed_template_8_32[] = {8, 32, 0}; |
8038 | { .klen = 8, .blen = 256, }, | 8033 | static u8 speed_template_16_32[] = {16, 32, 0}; |
8039 | { .klen = 8, .blen = 1024, }, | 8034 | static u8 speed_template_16_24_32[] = {16, 24, 32, 0}; |
8040 | { .klen = 8, .blen = 8192, }, | 8035 | static u8 speed_template_32_40_48[] = {32, 40, 48, 0}; |
8041 | 8036 | static u8 speed_template_32_48_64[] = {32, 48, 64, 0}; | |
8042 | /* End marker */ | ||
8043 | { .klen = 0, .blen = 0, } | ||
8044 | }; | ||
8045 | |||
8046 | static struct cipher_speed speed_template_24[] = { | ||
8047 | { .klen = 24, .blen = 16, }, | ||
8048 | { .klen = 24, .blen = 64, }, | ||
8049 | { .klen = 24, .blen = 256, }, | ||
8050 | { .klen = 24, .blen = 1024, }, | ||
8051 | { .klen = 24, .blen = 8192, }, | ||
8052 | |||
8053 | /* End marker */ | ||
8054 | { .klen = 0, .blen = 0, } | ||
8055 | }; | ||
8056 | |||
8057 | static struct cipher_speed speed_template_8_32[] = { | ||
8058 | /* Don't support blowfish keys > 256 bit in this test */ | ||
8059 | { .klen = 8, .blen = 16, }, | ||
8060 | { .klen = 8, .blen = 64, }, | ||
8061 | { .klen = 8, .blen = 256, }, | ||
8062 | { .klen = 8, .blen = 1024, }, | ||
8063 | { .klen = 8, .blen = 8192, }, | ||
8064 | { .klen = 32, .blen = 16, }, | ||
8065 | { .klen = 32, .blen = 64, }, | ||
8066 | { .klen = 32, .blen = 256, }, | ||
8067 | { .klen = 32, .blen = 1024, }, | ||
8068 | { .klen = 32, .blen = 8192, }, | ||
8069 | |||
8070 | /* End marker */ | ||
8071 | { .klen = 0, .blen = 0, } | ||
8072 | }; | ||
8073 | |||
8074 | static struct cipher_speed speed_template_16_32[] = { | ||
8075 | { .klen = 16, .blen = 16, }, | ||
8076 | { .klen = 16, .blen = 64, }, | ||
8077 | { .klen = 16, .blen = 256, }, | ||
8078 | { .klen = 16, .blen = 1024, }, | ||
8079 | { .klen = 16, .blen = 8192, }, | ||
8080 | { .klen = 32, .blen = 16, }, | ||
8081 | { .klen = 32, .blen = 64, }, | ||
8082 | { .klen = 32, .blen = 256, }, | ||
8083 | { .klen = 32, .blen = 1024, }, | ||
8084 | { .klen = 32, .blen = 8192, }, | ||
8085 | |||
8086 | /* End marker */ | ||
8087 | { .klen = 0, .blen = 0, } | ||
8088 | }; | ||
8089 | |||
8090 | static struct cipher_speed speed_template_16_24_32[] = { | ||
8091 | { .klen = 16, .blen = 16, }, | ||
8092 | { .klen = 16, .blen = 64, }, | ||
8093 | { .klen = 16, .blen = 256, }, | ||
8094 | { .klen = 16, .blen = 1024, }, | ||
8095 | { .klen = 16, .blen = 8192, }, | ||
8096 | { .klen = 24, .blen = 16, }, | ||
8097 | { .klen = 24, .blen = 64, }, | ||
8098 | { .klen = 24, .blen = 256, }, | ||
8099 | { .klen = 24, .blen = 1024, }, | ||
8100 | { .klen = 24, .blen = 8192, }, | ||
8101 | { .klen = 32, .blen = 16, }, | ||
8102 | { .klen = 32, .blen = 64, }, | ||
8103 | { .klen = 32, .blen = 256, }, | ||
8104 | { .klen = 32, .blen = 1024, }, | ||
8105 | { .klen = 32, .blen = 8192, }, | ||
8106 | |||
8107 | /* End marker */ | ||
8108 | { .klen = 0, .blen = 0, } | ||
8109 | }; | ||
8110 | |||
8111 | static struct cipher_speed speed_template_32_40_48[] = { | ||
8112 | { .klen = 32, .blen = 16, }, | ||
8113 | { .klen = 32, .blen = 64, }, | ||
8114 | { .klen = 32, .blen = 256, }, | ||
8115 | { .klen = 32, .blen = 1024, }, | ||
8116 | { .klen = 32, .blen = 8192, }, | ||
8117 | { .klen = 40, .blen = 16, }, | ||
8118 | { .klen = 40, .blen = 64, }, | ||
8119 | { .klen = 40, .blen = 256, }, | ||
8120 | { .klen = 40, .blen = 1024, }, | ||
8121 | { .klen = 40, .blen = 8192, }, | ||
8122 | { .klen = 48, .blen = 16, }, | ||
8123 | { .klen = 48, .blen = 64, }, | ||
8124 | { .klen = 48, .blen = 256, }, | ||
8125 | { .klen = 48, .blen = 1024, }, | ||
8126 | { .klen = 48, .blen = 8192, }, | ||
8127 | |||
8128 | /* End marker */ | ||
8129 | { .klen = 0, .blen = 0, } | ||
8130 | }; | ||
8131 | |||
8132 | static struct cipher_speed speed_template_32_48_64[] = { | ||
8133 | { .klen = 32, .blen = 16, }, | ||
8134 | { .klen = 32, .blen = 64, }, | ||
8135 | { .klen = 32, .blen = 256, }, | ||
8136 | { .klen = 32, .blen = 1024, }, | ||
8137 | { .klen = 32, .blen = 8192, }, | ||
8138 | { .klen = 48, .blen = 16, }, | ||
8139 | { .klen = 48, .blen = 64, }, | ||
8140 | { .klen = 48, .blen = 256, }, | ||
8141 | { .klen = 48, .blen = 1024, }, | ||
8142 | { .klen = 48, .blen = 8192, }, | ||
8143 | { .klen = 64, .blen = 16, }, | ||
8144 | { .klen = 64, .blen = 64, }, | ||
8145 | { .klen = 64, .blen = 256, }, | ||
8146 | { .klen = 64, .blen = 1024, }, | ||
8147 | { .klen = 64, .blen = 8192, }, | ||
8148 | |||
8149 | /* End marker */ | ||
8150 | { .klen = 0, .blen = 0, } | ||
8151 | }; | ||
8152 | 8037 | ||
8153 | /* | 8038 | /* |
8154 | * Digest speed tests | 8039 | * Digest speed tests |