---
 cryptodev.h             |    4 ++--
 cryptodev_int.h         |    2 --
 cryptodev_main.c        |    4 +++-
 examples/async_cipher.c |   45 ++++++++++++++++++++++++++++++++++++++-------
 examples/async_speed.c  |   25 ++++++++++++++++++++++---
 examples/cipher.c       |   28 ++++++++++++++++++++--------
 examples/speed.c        |   15 +++++++++++++--
 7 files changed, 98 insertions(+), 25 deletions(-)

diff --git a/cryptodev.h b/cryptodev.h
index 9cb2764..c50505b 100644
--- a/cryptodev.h
+++ b/cryptodev.h
@@ -84,8 +84,6 @@ struct session_op {
        __u8    __user *mackey;
 
        __u32   ses;            /* session identifier */
-
-       __u16   alignmask;      /* alignment constraints */
 };
 
 struct session_info_op {
@@ -96,6 +94,8 @@ struct session_info_op {
                char cra_name[CRYPTODEV_MAX_ALG_NAME];
                char cra_driver_name[CRYPTODEV_MAX_ALG_NAME];
        } cipher_info, hash_info;
+
+       __u16   alignmask;      /* alignment constraints */
 };
 
 #define        COP_ENCRYPT     0
diff --git a/cryptodev_int.h b/cryptodev_int.h
index 4d9d6f6..4be66ec 100644
--- a/cryptodev_int.h
+++ b/cryptodev_int.h
@@ -103,8 +103,6 @@ struct compat_session_op {
        compat_uptr_t   mackey;         /* pointer to mac key data */
 
        uint32_t        ses;            /* session identifier */
-
-       uint16_t        alignmask;      /* alignment constraints */
 };
 
 /* input of CIOCCRYPT */
diff --git a/cryptodev_main.c b/cryptodev_main.c
index 17155bf..871690b 100644
--- a/cryptodev_main.c
+++ b/cryptodev_main.c
@@ -291,7 +291,7 @@ crypto_create_session(struct fcrypt *fcr, struct session_op 
*sop)
                }
        }
 
-       sop->alignmask = ses_new->alignmask = max(ses_new->cdata.alignmask,
+       ses_new->alignmask = max(ses_new->cdata.alignmask,
                                                  ses_new->hdata.alignmask);
        dprintk(2, KERN_DEBUG, "%s: got alignmask %d\n", __func__, 
ses_new->alignmask);
 
@@ -1036,6 +1036,8 @@ static int get_session_info(struct fcrypt *fcr, struct 
session_info_op *siop)
                                crypto_ahash_tfm(ses_ptr->hdata.async.s));
        }
 
+       siop->alignmask = ses_ptr->alignmask;
+
        mutex_unlock(&ses_ptr->sem);
        return 0;
 }
diff --git a/examples/async_cipher.c b/examples/async_cipher.c
index 314c36a..e89c7f2 100644
--- a/examples/async_cipher.c
+++ b/examples/async_cipher.c
@@ -28,6 +28,9 @@ test_crypto(int cfd)
        char key[KEY_SIZE];
 
        struct session_op sess;
+#ifdef CIOCGSESSINFO
+       struct session_info_op siop;
+#endif
        struct crypt_op cryp;
 
        printf("running %s\n", __func__);
@@ -49,9 +52,18 @@ test_crypto(int cfd)
 
        printf("%s: got the session\n", __func__);
 
-
-       plaintext = (char *)(((unsigned long)plaintext_raw + sess.alignmask) & 
~sess.alignmask);
-       ciphertext = (char *)(((unsigned long)ciphertext_raw + sess.alignmask) 
& ~sess.alignmask);
+#ifdef CIOCGSESSINFO
+       siop.ses = sess.ses;
+       if (ioctl(cfd, CIOCGSESSINFO, &siop)) {
+               perror("ioctl(CIOCGSESSINFO)");
+               return 1;
+       }
+       plaintext = (char *)(((unsigned long)plaintext_raw + siop.alignmask) & 
~siop.alignmask);
+       ciphertext = (char *)(((unsigned long)ciphertext_raw + siop.alignmask) 
& ~siop.alignmask);
+#else
+       plaintext = plaintext_raw;
+       ciphertext = ciphertext_raw;
+#endif
        memset(plaintext, 0x15, DATA_SIZE);
 
        /* Encrypt data.in to data.encrypted */
@@ -122,6 +134,9 @@ static int test_aes(int cfd)
        char key2[KEY_SIZE];
 
        struct session_op sess1, sess2;
+#ifdef CIOCGSESSINFO
+       struct session_info_op siop1, siop2;
+#endif
        struct crypt_op cryp1, cryp2;
 
        memset(&sess1, 0, sizeof(sess1));
@@ -137,8 +152,16 @@ static int test_aes(int cfd)
                perror("ioctl(CIOCGSESSION)");
                return 1;
        }
-
-       plaintext1 = (char *)(((unsigned long)plaintext1_raw + sess1.alignmask) 
& ~sess1.alignmask);
+#ifdef CIOCGSESSINFO
+       siop1.ses = sess1.ses;
+       if (ioctl(cfd, CIOCGSESSINFO, &siop1)) {
+               perror("ioctl(CIOCGSESSINFO)");
+               return 1;
+       }
+       plaintext1 = (char *)(((unsigned long)plaintext1_raw + siop1.alignmask) 
& ~siop1.alignmask);
+#else
+       plaintext1 = plaintext1_raw;
+#endif
        memset(plaintext1, 0x0, BLOCK_SIZE);
 
        memset(iv1, 0x0, sizeof(iv1));
@@ -152,8 +175,16 @@ static int test_aes(int cfd)
                perror("ioctl(CIOCGSESSION)");
                return 1;
        }
-
-       plaintext2 = (char *)(((unsigned long)plaintext2_raw + sess2.alignmask) 
& ~sess2.alignmask);
+#ifdef CIOCGSESSINFO
+       siop2.ses = sess2.ses;
+       if (ioctl(cfd, CIOCGSESSINFO, &siop2)) {
+               perror("ioctl(CIOCGSESSINFO)");
+               return 1;
+       }
+       plaintext2 = (char *)(((unsigned long)plaintext2_raw + siop2.alignmask) 
& ~siop2.alignmask);
+#else
+       plaintext2 = plaintext2_raw;
+#endif
        memcpy(plaintext2, plaintext2_data, BLOCK_SIZE);
 
        /* Encrypt data.in to data.encrypted */
diff --git a/examples/async_speed.c b/examples/async_speed.c
index 940d923..4aea5e3 100644
--- a/examples/async_speed.c
+++ b/examples/async_speed.c
@@ -144,8 +144,11 @@ int encrypt_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;
+#ifdef CIOCGSESSINFO
+       struct session_info_op siop;
+#endif
        char keybuf[32];
 
        signal(SIGALRM, alarm_handler);
@@ -168,9 +171,17 @@ int main(void)
                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 * 4096); i *= 2) {
-               if (encrypt_data(&sess, fdc, i, sess.alignmask))
+               if (encrypt_data(&sess, fdc, i, alignmask))
                        break;
        }
 
@@ -184,9 +195,17 @@ int main(void)
                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, sess.alignmask))
+               if (encrypt_data(&sess, fdc, i, alignmask))
                        break;
        }
 
diff --git a/examples/cipher.c b/examples/cipher.c
index 9f19c5e..007d3fe 100644
--- a/examples/cipher.c
+++ b/examples/cipher.c
@@ -53,10 +53,13 @@ test_crypto(int cfd)
        }
        printf("requested cipher CRYPTO_AES_CBC, got %s with driver %s\n",
                        siop.cipher_info.cra_name, 
siop.cipher_info.cra_driver_name);
-#endif
 
-       plaintext = (char *)(((unsigned long)plaintext_raw + sess.alignmask) & 
~sess.alignmask);
-       ciphertext = (char *)(((unsigned long)ciphertext_raw + sess.alignmask) 
& ~sess.alignmask);
+       plaintext = (char *)(((unsigned long)plaintext_raw + siop.alignmask) & 
~siop.alignmask);
+       ciphertext = (char *)(((unsigned long)ciphertext_raw + siop.alignmask) 
& ~siop.alignmask);
+#else
+       plaintext = plaintext_raw;
+       ciphertext = ciphertext_raw;
+#endif
        memset(plaintext, 0x15, DATA_SIZE);
 
        /* Encrypt data.in to data.encrypted */
@@ -163,9 +166,16 @@ static int test_aes(int cfd)
                perror("ioctl(CIOCGSESSION)");
                return 1;
        }
-
-       plaintext1 = (char *)(((unsigned long)plaintext1_raw + sess.alignmask) 
& ~sess.alignmask);
-
+#ifdef CIOCGSESSINFO
+       siop.ses = sess.ses;
+       if (ioctl(cfd, CIOCGSESSINFO, &siop)) {
+               perror("ioctl(CIOCGSESSINFO)");
+               return 1;
+       }
+       plaintext1 = (char *)(((unsigned long)plaintext1_raw + siop.alignmask) 
& ~siop.alignmask);
+#else
+       plaintext1 = plaintext1_raw;
+#endif
        memset(plaintext1, 0x0, BLOCK_SIZE);
        memset(iv1, 0x0, sizeof(iv1));
 
@@ -210,9 +220,11 @@ static int test_aes(int cfd)
        }
        printf("requested cipher CRYPTO_AES_CBC, got %s with driver %s\n",
                        siop.cipher_info.cra_name, 
siop.cipher_info.cra_driver_name);
-#endif
 
-       plaintext2 = (char *)(((unsigned long)plaintext2_raw + sess.alignmask) 
& ~sess.alignmask);
+       plaintext2 = (char *)(((unsigned long)plaintext2_raw + siop.alignmask) 
& ~siop.alignmask);
+#else
+       plaintext2 = plaintext2_raw;
+#endif
        memcpy(plaintext2, plaintext2_data, BLOCK_SIZE);
 
        /* Encrypt data.in to data.encrypted */
diff --git a/examples/speed.c b/examples/speed.c
index 38b3821..e2985ff 100644
--- a/examples/speed.c
+++ b/examples/speed.c
@@ -129,8 +129,11 @@ int encrypt_data(struct session_op *sess, int fdc, int 
chunksize, int alignmask)
 
 int main(int argc, char** argv)
 {
-       int fd, i, fdc = -1;
+       int fd, i, fdc = -1, alignmask = 0;
        struct session_op sess;
+#ifdef CIOCGSESSINFO
+       struct session_info_op siop;
+#endif
        char keybuf[32];
 
        signal(SIGALRM, alarm_handler);
@@ -163,9 +166,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 * 4096); i *= 2) {
-               if (encrypt_data(&sess, fdc, i, sess.alignmask))
+               if (encrypt_data(&sess, fdc, i, alignmask))
                        break;
        }
 
-- 
1.7.3.4



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

Reply via email to