This change adds setting up of alignment mask for buffers according to
the value, which is obtained from the kernel algorithm definition.

Signed-off-by: Vladimir Zapolskiy <vzapols...@gmail.com>
---
 examples/hashcrypt_speed.c |   10 ++++++----
 examples/sha_speed.c       |   10 ++++++----
 examples/speed.c           |   12 ++++++++++--
 3 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/examples/hashcrypt_speed.c b/examples/hashcrypt_speed.c
index f5e0e40..2344577 100644
--- a/examples/hashcrypt_speed.c
+++ b/examples/hashcrypt_speed.c
@@ -80,7 +80,7 @@ int hash_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
        uint8_t mac[AALG_MAX_RESULT_LEN];
 
        if (alignmask) {
-               if (posix_memalign((void **)&buffer, alignmask, chunksize)) {
+               if (posix_memalign((void **)&buffer, alignmask + 1, chunksize)) 
{
                        printf("posix_memalign() failed!\n");
                        return 1;
                }
@@ -128,7 +128,7 @@ int hash_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
 
 int main(void)
 {
-       int fd, i, fdc = -1;
+       int fd, i, fdc = -1, alignmask = 0;
        struct session_op sess;
        char keybuf[32];
 #ifdef CIOCGSESSINFO
@@ -165,10 +165,11 @@ int main(void)
        }
        printf("requested hash CRYPTO_SHA1, got %s with driver %s\n",
                        siop.hash_info.cra_name, 
siop.hash_info.cra_driver_name);
+       alignmask = siop.alignmask;
 #endif
 
        for (i = 256; i <= (64 * 4096); i *= 2) {
-               if (hash_data(&sess, fdc, i, siop.alignmask))
+               if (hash_data(&sess, fdc, i, alignmask))
                        break;
        }
 
@@ -189,10 +190,11 @@ int main(void)
        }
        printf("requested hash CRYPTO_SHA2_256, got %s with driver %s\n",
                        siop.hash_info.cra_name, 
siop.hash_info.cra_driver_name);
+       alignmask = siop.alignmask;
 #endif
 
        for (i = 256; i <= (64 * 1024); i *= 2) {
-               if (hash_data(&sess, fdc, i, 0))
+               if (hash_data(&sess, fdc, i, alignmask))
                        break;
        }
 
diff --git a/examples/sha_speed.c b/examples/sha_speed.c
index f31558f..6389db2 100644
--- a/examples/sha_speed.c
+++ b/examples/sha_speed.c
@@ -80,7 +80,7 @@ int hash_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
        uint8_t mac[AALG_MAX_RESULT_LEN];
 
        if (alignmask) {
-               if (posix_memalign((void **)&buffer, alignmask, chunksize)) {
+               if (posix_memalign((void **)&buffer, alignmask + 1, chunksize)) 
{
                        printf("posix_memalign() failed!\n");
                        return 1;
                }
@@ -128,7 +128,7 @@ int hash_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
 
 int main(void)
 {
-       int fd, i, fdc = -1;
+       int fd, i, fdc = -1, alignmask = 0;
        struct session_op sess;
        char keybuf[32];
 #ifdef CIOCGSESSINFO
@@ -161,10 +161,11 @@ int main(void)
        }
        printf("requested hash CRYPTO_SHA1, got %s with driver %s\n",
                        siop.hash_info.cra_name, 
siop.hash_info.cra_driver_name);
+       alignmask = siop.alignmask;
 #endif
 
        for (i = 256; i <= (64 * 4096); i *= 2) {
-               if (hash_data(&sess, fdc, i, siop.alignmask))
+               if (hash_data(&sess, fdc, i, alignmask))
                        break;
        }
 
@@ -183,10 +184,11 @@ int main(void)
        }
        printf("requested hash CRYPTO_SHA2_256, got %s with driver %s\n",
                        siop.hash_info.cra_name, 
siop.hash_info.cra_driver_name);
+       alignmask = siop.alignmask;
 #endif
 
        for (i = 256; i <= (64 * 1024); i *= 2) {
-               if (hash_data(&sess, fdc, i, 0))
+               if (hash_data(&sess, fdc, i, alignmask))
                        break;
        }
 
diff --git a/examples/speed.c b/examples/speed.c
index 1d5525c..59eaf06 100644
--- a/examples/speed.c
+++ b/examples/speed.c
@@ -80,7 +80,7 @@ int encrypt_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
        char metric[16];
 
        if (alignmask) {
-               if (posix_memalign((void **)&buffer, alignmask, chunksize)) {
+               if (posix_memalign((void **)&buffer, alignmask + 1, chunksize)) 
{
                        printf("posix_memalign() failed!\n");
                        return 1;
                }
@@ -191,9 +191,17 @@ int main(int argc, char** argv)
                perror("ioctl(CIOCGSESSION)");
                return 1;
        }
+#ifdef CIOCGSESSINFO
+       siop.ses = sess.ses;
+       if (ioctl(fdc, CIOCGSESSINFO, &siop)) {
+               perror("ioctl(CIOCGSESSINFO)");
+               return 1;
+       }
+       alignmask = siop.alignmask;
+#endif
 
        for (i = 256; i <= (64 * 1024); i *= 2) {
-               if (encrypt_data(&sess, fdc, i, 0))
+               if (encrypt_data(&sess, fdc, i, alignmask))
                        break;
        }
 
-- 
1.7.2.3


_______________________________________________
Cryptodev-linux-devel mailing list
Cryptodev-linux-devel@gna.org
https://mail.gna.org/listinfo/cryptodev-linux-devel

Reply via email to