cryptodev: fix KASUMI F9 expected parameters
[dpdk.git] / test / test / test_cryptodev.c
index 5e09b8e..d998cdd 100644 (file)
 #include "test_cryptodev_gcm_test_vectors.h"
 #include "test_cryptodev_hmac_test_vectors.h"
 
-static enum rte_cryptodev_type gbl_cryptodev_type;
+static int gbl_driver_id;
 
 struct crypto_testsuite_params {
        struct rte_mempool *mbuf_pool;
        struct rte_mempool *large_mbuf_pool;
        struct rte_mempool *op_mpool;
+       struct rte_mempool *session_mpool;
        struct rte_cryptodev_config conf;
        struct rte_cryptodev_qp_conf qp_conf;
 
@@ -213,14 +214,11 @@ testsuite_setup(void)
        }
 
        /* Create an AESNI MB device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_AESNI_MB_PMD) {
-#ifndef RTE_LIBRTE_PMD_AESNI_MB
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_MB must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_AESNI_MB_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)));
                if (nb_devs < 1) {
                        ret = rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD), NULL);
@@ -233,14 +231,11 @@ testsuite_setup(void)
        }
 
        /* Create an AESNI GCM device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_AESNI_GCM_PMD) {
-#ifndef RTE_LIBRTE_PMD_AESNI_GCM
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_GCM must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_AESNI_GCM_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD)));
                if (nb_devs < 1) {
                        TEST_ASSERT_SUCCESS(rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD), NULL),
@@ -251,13 +246,11 @@ testsuite_setup(void)
        }
 
        /* Create a SNOW 3G device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_SNOW3G_PMD) {
-#ifndef RTE_LIBRTE_PMD_SNOW3G
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_SNOW3G must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_SNOW3G_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD)));
                if (nb_devs < 1) {
                        TEST_ASSERT_SUCCESS(rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD), NULL),
@@ -268,13 +261,11 @@ testsuite_setup(void)
        }
 
        /* Create a KASUMI device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_KASUMI_PMD) {
-#ifndef RTE_LIBRTE_PMD_KASUMI
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_KASUMI must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_KASUMI_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_KASUMI_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_KASUMI_PMD)));
                if (nb_devs < 1) {
                        TEST_ASSERT_SUCCESS(rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_KASUMI_PMD), NULL),
@@ -285,13 +276,11 @@ testsuite_setup(void)
        }
 
        /* Create a ZUC device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_ZUC_PMD) {
-#ifndef RTE_LIBRTE_PMD_ZUC
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_ZUC must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(RTE_CRYPTODEV_ZUC_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_ZUC_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_ZUC_PMD)));
                if (nb_devs < 1) {
                        TEST_ASSERT_SUCCESS(rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_ZUC_PMD), NULL),
@@ -302,14 +291,11 @@ testsuite_setup(void)
        }
 
        /* Create a NULL device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_NULL_PMD) {
-#ifndef RTE_LIBRTE_PMD_NULL_CRYPTO
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_NULL_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_NULL_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_NULL_PMD)));
                if (nb_devs < 1) {
                        ret = rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_NULL_PMD), NULL);
@@ -322,14 +308,11 @@ testsuite_setup(void)
        }
 
        /* Create an OPENSSL device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_OPENSSL_PMD) {
-#ifndef RTE_LIBRTE_PMD_OPENSSL
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_OPENSSL must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_OPENSSL_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)));
                if (nb_devs < 1) {
                        ret = rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD),
@@ -342,14 +325,11 @@ testsuite_setup(void)
        }
 
        /* Create a ARMv8 device if required */
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_ARMV8_PMD) {
-#ifndef RTE_LIBRTE_PMD_ARMV8_CRYPTO
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_ARMV8_PMD);
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_ARMV8_PMD))) {
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_ARMV8_PMD)));
                if (nb_devs < 1) {
                        ret = rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_ARMV8_PMD),
@@ -362,15 +342,12 @@ testsuite_setup(void)
        }
 
 #ifdef RTE_LIBRTE_PMD_CRYPTO_SCHEDULER
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_SCHEDULER_PMD) {
+       if (gbl_driver_id == rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD))) {
 
-#ifndef RTE_LIBRTE_PMD_AESNI_MB
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_MB must be"
-                       " enabled in config file to run this testsuite.\n");
-               return TEST_FAILED;
-#endif
-               nb_devs = rte_cryptodev_count_devtype(
-                               RTE_CRYPTODEV_SCHEDULER_PMD);
+               nb_devs = rte_cryptodev_device_count_by_driver(
+                               rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD)));
                if (nb_devs < 1) {
                        ret = rte_vdev_init(
                                RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD),
@@ -384,14 +361,6 @@ testsuite_setup(void)
        }
 #endif /* RTE_LIBRTE_PMD_CRYPTO_SCHEDULER */
 
-#ifndef RTE_LIBRTE_PMD_QAT
-       if (gbl_cryptodev_type == RTE_CRYPTODEV_QAT_SYM_PMD) {
-               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_QAT must be enabled "
-                               "in config file to run this testsuite.\n");
-               return TEST_FAILED;
-       }
-#endif
-
        nb_devs = rte_cryptodev_count();
        if (nb_devs < 1) {
                RTE_LOG(ERR, USER1, "No crypto devices found?\n");
@@ -401,7 +370,7 @@ testsuite_setup(void)
        /* Create list of valid crypto devs */
        for (i = 0; i < nb_devs; i++) {
                rte_cryptodev_info_get(i, &info);
-               if (info.dev_type == gbl_cryptodev_type)
+               if (info.driver_id == gbl_driver_id)
                        ts_params->valid_devs[ts_params->valid_dev_count++] = i;
        }
 
@@ -416,7 +385,23 @@ testsuite_setup(void)
 
        ts_params->conf.nb_queue_pairs = info.max_nb_queue_pairs;
        ts_params->conf.socket_id = SOCKET_ID_ANY;
-       ts_params->conf.session_mp.nb_objs = info.sym.max_nb_sessions;
+
+       unsigned int session_size = rte_cryptodev_get_private_session_size(dev_id);
+
+       /*
+        * Create mempool with maximum number of sessions * 2,
+        * to include the session headers
+        */
+       ts_params->session_mpool = rte_mempool_create(
+                               "test_sess_mp",
+                               info.sym.max_nb_sessions * 2,
+                               session_size,
+                               0, 0, NULL, NULL, NULL,
+                               NULL, SOCKET_ID_ANY,
+                               0);
+
+       TEST_ASSERT_NOT_NULL(ts_params->session_mpool,
+                       "session mempool allocation failed");
 
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id,
                        &ts_params->conf),
@@ -428,7 +413,8 @@ testsuite_setup(void)
        for (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        dev_id, qp_id, &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(dev_id)),
+                       rte_cryptodev_socket_id(dev_id),
+                       ts_params->session_mpool),
                        "Failed to setup queue pair %u on cryptodev %u",
                        qp_id, dev_id);
        }
@@ -451,6 +437,11 @@ testsuite_teardown(void)
                rte_mempool_avail_count(ts_params->op_mpool));
        }
 
+       /* Free session mempools */
+       if (ts_params->session_mpool != NULL) {
+               rte_mempool_free(ts_params->session_mpool);
+               ts_params->session_mpool = NULL;
+       }
 }
 
 static int
@@ -466,7 +457,6 @@ ut_setup(void)
 
        /* Reconfigure device to default parameters */
        ts_params->conf.socket_id = SOCKET_ID_ANY;
-       ts_params->conf.session_mp.nb_objs = DEFAULT_NUM_OPS_INFLIGHT;
 
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
@@ -477,7 +467,8 @@ ut_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0], qp_id,
                        &ts_params->qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
+                       ts_params->session_mpool),
                        "Failed to setup queue pair %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
        }
@@ -502,8 +493,9 @@ ut_teardown(void)
 
        /* free crypto session structure */
        if (ut_params->sess) {
-               rte_cryptodev_sym_session_free(ts_params->valid_devs[0],
+               rte_cryptodev_sym_session_clear(ts_params->valid_devs[0],
                                ut_params->sess);
+               rte_cryptodev_sym_session_free(ut_params->sess);
                ut_params->sess = NULL;
        }
 
@@ -596,7 +588,8 @@ test_device_configure_invalid_queue_pair_ids(void)
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],
                        &ts_params->conf),
                        "Failed to configure cryptodev: dev_id %u, qp_id %u",
-                       ts_params->valid_devs[0], ts_params->conf.nb_queue_pairs);
+                       ts_params->valid_devs[0],
+                       ts_params->conf.nb_queue_pairs);
 
 
        /* invalid - zero queue pairs */
@@ -654,13 +647,11 @@ test_queue_pair_descriptor_setup(void)
 
        rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);
 
-       ts_params->conf.session_mp.nb_objs = dev_info.sym.max_nb_sessions;
-
        TEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],
-                       &ts_params->conf), "Failed to configure cryptodev %u",
+                       &ts_params->conf),
+                       "Failed to configure cryptodev %u",
                        ts_params->valid_devs[0]);
 
-
        /*
         * Test various ring sizes on this device. memzones can't be
         * freed so are re-used if ring is released and re-created.
@@ -671,7 +662,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Failed test for "
                                "rte_cryptodev_queue_pair_setup: num_inflights "
                                "%u on qp %u on cryptodev %u",
@@ -685,7 +677,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Failed test for"
                                " rte_cryptodev_queue_pair_setup: num_inflights"
                                " %u on qp %u on cryptodev %u",
@@ -699,7 +692,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Failed test for "
                                "rte_cryptodev_queue_pair_setup: num_inflights"
                                " %u on qp %u on cryptodev %u",
@@ -714,7 +708,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -729,7 +724,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -743,7 +739,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Failed test for"
                                " rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -758,7 +755,8 @@ test_queue_pair_descriptor_setup(void)
                TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                                ts_params->valid_devs[0], qp_id, &qp_conf,
                                rte_cryptodev_socket_id(
-                                               ts_params->valid_devs[0])),
+                                               ts_params->valid_devs[0]),
+                               ts_params->session_mpool),
                                "Unexpectedly passed test for "
                                "rte_cryptodev_queue_pair_setup:"
                                "num_inflights %u on qp %u on cryptodev %u",
@@ -774,7 +772,8 @@ test_queue_pair_descriptor_setup(void)
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
                        qp_id, &qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
+                       ts_params->session_mpool),
                        "Failed test for rte_cryptodev_queue_pair_setup:"
                        "invalid qp %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
@@ -784,7 +783,8 @@ test_queue_pair_descriptor_setup(void)
        TEST_ASSERT_FAIL(rte_cryptodev_queue_pair_setup(
                        ts_params->valid_devs[0],
                        qp_id, &qp_conf,
-                       rte_cryptodev_socket_id(ts_params->valid_devs[0])),
+                       rte_cryptodev_socket_id(ts_params->valid_devs[0]),
+                       ts_params->session_mpool),
                        "Failed test for rte_cryptodev_queue_pair_setup:"
                        "invalid qp %u on cryptodev %u",
                        qp_id, ts_params->valid_devs[0]);
@@ -1286,10 +1286,13 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)
        ut_params->auth_xform.auth.key.data = hmac_sha1_key;
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA1;
 
-       /* Create crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0],
-                       &ut_params->cipher_xform);
+                       ts_params->session_mpool);
+
+       /* Create crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->cipher_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate crypto op data structure */
@@ -1341,7 +1344,8 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)
 
        TEST_ASSERT_BUFFERS_ARE_EQUAL(digest,
                        catch_22_quote_2_512_bytes_AES_CBC_HMAC_SHA1_digest,
-                       gbl_cryptodev_type == RTE_CRYPTODEV_AESNI_MB_PMD ?
+                       gbl_driver_id == rte_cryptodev_driver_id_get(
+                                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)) ?
                                        TRUNCATED_DIGEST_BYTE_LENGTH_SHA1 :
                                        DIGEST_BYTE_LENGTH_SHA1,
                        "Generated digest data not as expected");
@@ -1501,8 +1505,11 @@ test_AES_cipheronly_mb_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_AESNI_MB_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)),
                BLKCIPHER_AES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1517,8 +1524,11 @@ test_AES_docsis_mb_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_AESNI_MB_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)),
                BLKCIPHER_AES_DOCSIS_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1533,8 +1543,11 @@ test_AES_docsis_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_AES_DOCSIS_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1549,8 +1562,11 @@ test_DES_docsis_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_DES_DOCSIS_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1565,8 +1581,11 @@ test_authonly_mb_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_AESNI_MB_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)),
                BLKCIPHER_AUTHONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1574,6 +1593,24 @@ test_authonly_mb_all(void)
        return TEST_SUCCESS;
 }
 
+static int
+test_authonly_qat_all(void)
+{
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
+       int status;
+
+       status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
+               BLKCIPHER_AUTHONLY_TYPE);
+
+       TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+       return TEST_SUCCESS;
+}
 static int
 test_AES_chain_mb_all(void)
 {
@@ -1581,8 +1618,11 @@ test_AES_chain_mb_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_AESNI_MB_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1599,8 +1639,11 @@ test_AES_cipheronly_scheduler_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_SCHEDULER_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD)),
                BLKCIPHER_AES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1615,8 +1658,11 @@ test_AES_chain_scheduler_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_SCHEDULER_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1631,8 +1677,11 @@ test_authonly_scheduler_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_SCHEDULER_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD)),
                BLKCIPHER_AUTHONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1649,8 +1698,11 @@ test_AES_chain_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1665,8 +1717,11 @@ test_AES_cipheronly_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_AES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1681,8 +1736,11 @@ test_AES_chain_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1697,8 +1755,11 @@ test_AES_cipheronly_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_AES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1713,8 +1774,11 @@ test_AES_chain_dpaa2_sec_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_DPAA2_SEC_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1729,8 +1793,11 @@ test_AES_cipheronly_dpaa2_sec_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_DPAA2_SEC_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD)),
                BLKCIPHER_AES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1738,6 +1805,25 @@ test_AES_cipheronly_dpaa2_sec_all(void)
        return TEST_SUCCESS;
 }
 
+static int
+test_authonly_dpaa2_sec_all(void)
+{
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
+       int status;
+
+       status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(RTE_CRYPTODEV_DPAA2_SEC_PMD)),
+               BLKCIPHER_AUTHONLY_TYPE);
+
+       TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+       return TEST_SUCCESS;
+}
+
 static int
 test_authonly_openssl_all(void)
 {
@@ -1745,8 +1831,11 @@ test_authonly_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_AUTHONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1761,8 +1850,11 @@ test_AES_chain_armv8_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_ARMV8_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_ARMV8_PMD)),
                BLKCIPHER_AES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -1780,6 +1872,7 @@ create_wireless_algo_hash_session(uint8_t dev_id,
 {
        uint8_t hash_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(hash_key, key, key_len);
@@ -1797,8 +1890,11 @@ create_wireless_algo_hash_session(uint8_t dev_id,
        ut_params->auth_xform.auth.digest_length = auth_len;
        ut_params->auth_xform.auth.iv.offset = IV_OFFSET;
        ut_params->auth_xform.auth.iv.length = iv_len;
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->auth_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->auth_xform, ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
        return 0;
 }
@@ -1812,6 +1908,7 @@ create_wireless_algo_cipher_session(uint8_t dev_id,
 {
        uint8_t cipher_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(cipher_key, key, key_len);
@@ -1830,9 +1927,11 @@ create_wireless_algo_cipher_session(uint8_t dev_id,
        TEST_HEXDUMP(stdout, "key:", key, key_len);
 
        /* Create Crypto session */
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                                               &ut_params->
-                                               cipher_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->cipher_xform, ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
        return 0;
 }
@@ -1911,6 +2010,7 @@ create_wireless_algo_cipher_auth_session(uint8_t dev_id,
 {
        uint8_t cipher_auth_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(cipher_auth_key, key, key_len);
@@ -1943,8 +2043,11 @@ create_wireless_algo_cipher_auth_session(uint8_t dev_id,
        TEST_HEXDUMP(stdout, "key:", key, key_len);
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->cipher_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->cipher_xform, ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
        return 0;
@@ -1961,6 +2064,7 @@ create_wireless_cipher_auth_session(uint8_t dev_id,
        const uint8_t key_len = tdata->key.len;
        uint8_t cipher_auth_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
        const uint8_t *key = tdata->key.data;
        const uint8_t auth_len = tdata->digest.len;
@@ -1998,8 +2102,11 @@ create_wireless_cipher_auth_session(uint8_t dev_id,
        TEST_HEXDUMP(stdout, "key:", key, key_len);
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->cipher_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->cipher_xform, ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
        return 0;
@@ -2027,6 +2134,7 @@ create_wireless_algo_auth_cipher_session(uint8_t dev_id,
 {
        uint8_t auth_cipher_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(auth_cipher_key, key, key_len);
@@ -2056,8 +2164,11 @@ create_wireless_algo_auth_cipher_session(uint8_t dev_id,
        TEST_HEXDUMP(stdout, "key:", key, key_len);
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->auth_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->auth_xform, ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
@@ -2242,9 +2353,9 @@ create_wireless_algo_cipher_hash_operation(const uint8_t *auth_tag,
        rte_memcpy(iv_ptr, auth_iv, auth_iv_len);
 
        sym_op->cipher.data.length = cipher_len;
-       sym_op->cipher.data.offset = cipher_offset + auth_offset;
+       sym_op->cipher.data.offset = cipher_offset;
        sym_op->auth.data.length = auth_len;
-       sym_op->auth.data.offset = auth_offset + cipher_offset;
+       sym_op->auth.data.offset = auth_offset;
 
        return 0;
 }
@@ -2298,10 +2409,10 @@ create_wireless_algo_auth_cipher_operation(unsigned int auth_tag_len,
        rte_memcpy(iv_ptr, auth_iv, auth_iv_len);
 
        sym_op->cipher.data.length = cipher_len;
-       sym_op->cipher.data.offset = auth_offset + cipher_offset;
+       sym_op->cipher.data.offset = cipher_offset;
 
        sym_op->auth.data.length = auth_len;
-       sym_op->auth.data.offset = auth_offset + cipher_offset;
+       sym_op->auth.data.offset = auth_offset;
 
        return 0;
 }
@@ -2440,7 +2551,7 @@ test_kasumi_authentication(const struct kasumi_hash_test_data *tdata)
        /* Create KASUMI session */
        retval = create_wireless_algo_hash_session(ts_params->valid_devs[0],
                        tdata->key.data, tdata->key.len,
-                       tdata->auth_iv.len, tdata->digest.len,
+                       0, tdata->digest.len,
                        RTE_CRYPTO_AUTH_OP_GENERATE,
                        RTE_CRYPTO_AUTH_KASUMI_F9);
        if (retval < 0)
@@ -2462,9 +2573,9 @@ test_kasumi_authentication(const struct kasumi_hash_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_hash_operation(NULL, tdata->digest.len,
-                       tdata->auth_iv.data, tdata->auth_iv.len,
+                       NULL, 0,
                        plaintext_pad_len, RTE_CRYPTO_AUTH_OP_GENERATE,
-                       tdata->validAuthLenInBits.len,
+                       tdata->plaintext.len,
                        0);
        if (retval < 0)
                return retval;
@@ -2500,7 +2611,7 @@ test_kasumi_authentication_verify(const struct kasumi_hash_test_data *tdata)
        /* Create KASUMI session */
        retval = create_wireless_algo_hash_session(ts_params->valid_devs[0],
                                tdata->key.data, tdata->key.len,
-                               tdata->auth_iv.len, tdata->digest.len,
+                               0, tdata->digest.len,
                                RTE_CRYPTO_AUTH_OP_VERIFY,
                                RTE_CRYPTO_AUTH_KASUMI_F9);
        if (retval < 0)
@@ -2522,10 +2633,10 @@ test_kasumi_authentication_verify(const struct kasumi_hash_test_data *tdata)
        /* Create KASUMI operation */
        retval = create_wireless_algo_hash_operation(tdata->digest.data,
                        tdata->digest.len,
-                       tdata->auth_iv.data, tdata->auth_iv.len,
+                       NULL, 0,
                        plaintext_pad_len,
                        RTE_CRYPTO_AUTH_OP_VERIFY,
-                       tdata->validAuthLenInBits.len,
+                       tdata->plaintext.len,
                        0);
        if (retval < 0)
                return retval;
@@ -2723,9 +2834,9 @@ test_kasumi_encryption(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_operation(tdata->cipher_iv.data,
-                                       tdata->cipher_iv.len,
-                                       tdata->plaintext.len,
-                                       0);
+                               tdata->cipher_iv.len,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -2737,14 +2848,16 @@ test_kasumi_encryption(const struct kasumi_test_data *tdata)
        if (ut_params->obuf)
                ciphertext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
        else
-               ciphertext = plaintext;
+               ciphertext = plaintext + (tdata->validCipherOffsetInBits.len >> 3);
 
        TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len);
 
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                ciphertext,
-               tdata->ciphertext.data,
+               reference_ciphertext,
                tdata->validCipherLenInBits.len,
                "KASUMI Ciphertext data not as expected");
        return 0;
@@ -2796,9 +2909,9 @@ test_kasumi_encryption_sgl(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_operation(tdata->cipher_iv.data,
-                                       tdata->cipher_iv.len,
-                                       tdata->plaintext.len,
-                                       0);
+                               tdata->cipher_iv.len,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -2812,19 +2925,22 @@ test_kasumi_encryption_sgl(const struct kasumi_test_data *tdata)
                ciphertext = rte_pktmbuf_read(ut_params->obuf, 0,
                                plaintext_len, buffer);
        else
-               ciphertext = rte_pktmbuf_read(ut_params->ibuf, 0,
+               ciphertext = rte_pktmbuf_read(ut_params->ibuf,
+                               tdata->validCipherOffsetInBits.len >> 3,
                                plaintext_len, buffer);
 
        /* Validate obuf */
        TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len);
 
-               /* Validate obuf */
-               TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
-                       ciphertext,
-                       tdata->ciphertext.data,
-                       tdata->validCipherLenInBits.len,
-                       "KASUMI Ciphertext data not as expected");
-               return 0;
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
+       /* Validate obuf */
+       TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
+               ciphertext,
+               reference_ciphertext,
+               tdata->validCipherLenInBits.len,
+               "KASUMI Ciphertext data not as expected");
+       return 0;
 }
 
 static int
@@ -2867,9 +2983,9 @@ test_kasumi_encryption_oop(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_operation_oop(tdata->cipher_iv.data,
-                                       tdata->cipher_iv.len,
-                                       tdata->plaintext.len,
-                                       0);
+                               tdata->cipher_iv.len,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -2881,14 +2997,16 @@ test_kasumi_encryption_oop(const struct kasumi_test_data *tdata)
        if (ut_params->obuf)
                ciphertext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
        else
-               ciphertext = plaintext;
+               ciphertext = plaintext + (tdata->validCipherOffsetInBits.len >> 3);
 
        TEST_HEXDUMP(stdout, "ciphertext:", ciphertext, plaintext_len);
 
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                ciphertext,
-               tdata->ciphertext.data,
+               reference_ciphertext,
                tdata->validCipherLenInBits.len,
                "KASUMI Ciphertext data not as expected");
        return 0;
@@ -2941,9 +3059,9 @@ test_kasumi_encryption_oop_sgl(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_operation_oop(tdata->cipher_iv.data,
-                                       tdata->cipher_iv.len,
-                                       tdata->plaintext.len,
-                                       0);
+                               tdata->cipher_iv.len,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -2956,13 +3074,16 @@ test_kasumi_encryption_oop_sgl(const struct kasumi_test_data *tdata)
                ciphertext = rte_pktmbuf_read(ut_params->obuf, 0,
                                plaintext_pad_len, buffer);
        else
-               ciphertext = rte_pktmbuf_read(ut_params->ibuf, 0,
+               ciphertext = rte_pktmbuf_read(ut_params->ibuf,
+                               tdata->validCipherOffsetInBits.len >> 3,
                                plaintext_pad_len, buffer);
 
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                ciphertext,
-               tdata->ciphertext.data,
+               reference_ciphertext,
                tdata->validCipherLenInBits.len,
                "KASUMI Ciphertext data not as expected");
        return 0;
@@ -3009,9 +3130,9 @@ test_kasumi_decryption_oop(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_operation_oop(tdata->cipher_iv.data,
-                                       tdata->cipher_iv.len,
-                                       tdata->ciphertext.len,
-                                       0);
+                               tdata->cipher_iv.len,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -3023,14 +3144,16 @@ test_kasumi_decryption_oop(const struct kasumi_test_data *tdata)
        if (ut_params->obuf)
                plaintext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
        else
-               plaintext = ciphertext;
+               plaintext = ciphertext + (tdata->validCipherOffsetInBits.len >> 3);
 
        TEST_HEXDUMP(stdout, "plaintext:", plaintext, ciphertext_len);
 
+       const uint8_t *reference_plaintext = tdata->plaintext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                plaintext,
-               tdata->plaintext.data,
+               reference_plaintext,
                tdata->validCipherLenInBits.len,
                "KASUMI Plaintext data not as expected");
        return 0;
@@ -3076,7 +3199,7 @@ test_kasumi_decryption(const struct kasumi_test_data *tdata)
        retval = create_wireless_algo_cipher_operation(tdata->cipher_iv.data,
                                        tdata->cipher_iv.len,
                                        tdata->ciphertext.len,
-                                       0);
+                                       tdata->validCipherOffsetInBits.len);
        if (retval < 0)
                return retval;
 
@@ -3088,14 +3211,16 @@ test_kasumi_decryption(const struct kasumi_test_data *tdata)
        if (ut_params->obuf)
                plaintext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
        else
-               plaintext = ciphertext;
+               plaintext = ciphertext + (tdata->validCipherOffsetInBits.len >> 3);
 
        TEST_HEXDUMP(stdout, "plaintext:", plaintext, ciphertext_len);
 
+       const uint8_t *reference_plaintext = tdata->plaintext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                plaintext,
-               tdata->plaintext.data,
+               reference_plaintext,
                tdata->validCipherLenInBits.len,
                "KASUMI Plaintext data not as expected");
        return 0;
@@ -3836,7 +3961,7 @@ test_kasumi_auth_cipher(const struct kasumi_test_data *tdata)
                        RTE_CRYPTO_AUTH_KASUMI_F9,
                        RTE_CRYPTO_CIPHER_KASUMI_F8,
                        tdata->key.data, tdata->key.len,
-                       tdata->auth_iv.len, tdata->digest.len,
+                       0, tdata->digest.len,
                        tdata->cipher_iv.len);
        if (retval < 0)
                return retval;
@@ -3859,10 +3984,10 @@ test_kasumi_auth_cipher(const struct kasumi_test_data *tdata)
        /* Create KASUMI operation */
        retval = create_wireless_algo_auth_cipher_operation(tdata->digest.len,
                                tdata->cipher_iv.data, tdata->cipher_iv.len,
-                               tdata->auth_iv.data, tdata->auth_iv.len,
+                               NULL, 0,
                                plaintext_pad_len,
                                tdata->validCipherLenInBits.len,
-                               0,
+                               tdata->validCipherOffsetInBits.len,
                                tdata->validAuthLenInBits.len,
                                0
                                );
@@ -3873,19 +3998,23 @@ test_kasumi_auth_cipher(const struct kasumi_test_data *tdata)
        ut_params->op = process_crypto_request(ts_params->valid_devs[0],
                        ut_params->op);
        TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf");
-       ut_params->obuf = ut_params->op->sym->m_src;
-       if (ut_params->obuf)
-               ciphertext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
+       if (ut_params->op->sym->m_dst)
+               ut_params->obuf = ut_params->op->sym->m_dst;
        else
-               ciphertext = plaintext;
+               ut_params->obuf = ut_params->op->sym->m_src;
+
+       ciphertext = rte_pktmbuf_mtod_offset(ut_params->obuf, uint8_t *,
+                               tdata->validCipherOffsetInBits.len >> 3);
 
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                        ciphertext,
-                       tdata->ciphertext.data,
+                       reference_ciphertext,
                        tdata->validCipherLenInBits.len,
                        "KASUMI Ciphertext data not as expected");
-       ut_params->digest = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *)
+       ut_params->digest = rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *)
            + plaintext_pad_len;
 
        /* Validate obuf */
@@ -3917,7 +4046,7 @@ test_kasumi_cipher_auth(const struct kasumi_test_data *tdata)
                        RTE_CRYPTO_AUTH_KASUMI_F9,
                        RTE_CRYPTO_CIPHER_KASUMI_F8,
                        tdata->key.data, tdata->key.len,
-                       tdata->auth_iv.len, tdata->digest.len,
+                       0, tdata->digest.len,
                        tdata->cipher_iv.len);
        if (retval < 0)
                return retval;
@@ -3940,12 +4069,11 @@ test_kasumi_cipher_auth(const struct kasumi_test_data *tdata)
 
        /* Create KASUMI operation */
        retval = create_wireless_algo_cipher_hash_operation(tdata->digest.data,
-                               tdata->digest.len, tdata->auth_iv.data,
-                               tdata->auth_iv.len,
+                               tdata->digest.len, NULL, 0,
                                plaintext_pad_len, RTE_CRYPTO_AUTH_OP_GENERATE,
                                tdata->cipher_iv.data, tdata->cipher_iv.len,
-                               tdata->validCipherLenInBits.len,
-                               0,
+                               RTE_ALIGN_CEIL(tdata->validCipherLenInBits.len, 8),
+                               tdata->validCipherOffsetInBits.len,
                                tdata->validAuthLenInBits.len,
                                0
                                );
@@ -3955,19 +4083,24 @@ test_kasumi_cipher_auth(const struct kasumi_test_data *tdata)
        ut_params->op = process_crypto_request(ts_params->valid_devs[0],
                        ut_params->op);
        TEST_ASSERT_NOT_NULL(ut_params->op, "failed to retrieve obuf");
-       ut_params->obuf = ut_params->op->sym->m_src;
-       if (ut_params->obuf)
-               ciphertext = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *);
+
+       if (ut_params->op->sym->m_dst)
+               ut_params->obuf = ut_params->op->sym->m_dst;
        else
-               ciphertext = plaintext;
+               ut_params->obuf = ut_params->op->sym->m_src;
+
+       ciphertext = rte_pktmbuf_mtod_offset(ut_params->obuf, uint8_t *,
+                               tdata->validCipherOffsetInBits.len >> 3);
 
        ut_params->digest = rte_pktmbuf_mtod(ut_params->obuf, uint8_t *)
                        + plaintext_pad_len;
 
+       const uint8_t *reference_ciphertext = tdata->ciphertext.data +
+                               (tdata->validCipherOffsetInBits.len >> 3);
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
                ciphertext,
-               tdata->ciphertext.data,
+               reference_ciphertext,
                tdata->validCipherLenInBits.len,
                "KASUMI Ciphertext data not as expected");
 
@@ -4507,8 +4640,11 @@ test_3DES_chain_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_3DES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4523,8 +4659,11 @@ test_DES_cipheronly_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_DES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4539,8 +4678,11 @@ test_DES_docsis_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_DES_DOCSIS_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4555,8 +4697,11 @@ test_3DES_chain_dpaa2_sec_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_DPAA2_SEC_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD)),
                BLKCIPHER_3DES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4571,8 +4716,11 @@ test_3DES_cipheronly_dpaa2_sec_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_DPAA2_SEC_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD)),
                BLKCIPHER_3DES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4587,8 +4735,11 @@ test_3DES_cipheronly_qat_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_QAT_SYM_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)),
                BLKCIPHER_3DES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4603,8 +4754,11 @@ test_3DES_chain_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_3DES_CHAIN_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4619,8 +4773,11 @@ test_3DES_cipheronly_openssl_all(void)
        int status;
 
        status = test_blockcipher_all_tests(ts_params->mbuf_pool,
-               ts_params->op_mpool, ts_params->valid_devs[0],
-               RTE_CRYPTODEV_OPENSSL_PMD,
+               ts_params->op_mpool,
+               ts_params->session_mpool,
+               ts_params->valid_devs[0],
+               rte_cryptodev_driver_id_get(
+               RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)),
                BLKCIPHER_3DES_CIPHERONLY_TYPE);
 
        TEST_ASSERT_EQUAL(status, 0, "Test failed");
@@ -4638,6 +4795,7 @@ create_gcm_session(uint8_t dev_id, enum rte_crypto_aead_operation op,
 {
        uint8_t aead_key[key_len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(aead_key, key, key_len);
@@ -4657,8 +4815,11 @@ create_gcm_session(uint8_t dev_id, enum rte_crypto_aead_operation op,
        TEST_HEXDUMP(stdout, "key:", key, key_len);
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                       &ut_params->aead_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->aead_xform, ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
@@ -4815,7 +4976,7 @@ create_gcm_operation(enum rte_crypto_aead_operation op,
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption(const struct gcm_test_data *tdata)
+test_AES_GCM_authenticated_encryption(const struct gcm_test_data *tdata)
 {
        struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
@@ -4897,103 +5058,145 @@ test_mb_AES_GCM_authenticated_encryption(const struct gcm_test_data *tdata)
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_1(void)
+test_AES_GCM_authenticated_encryption_test_case_1(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_1);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_2(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_2);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_3(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_3);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_4(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_4);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_5(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_5);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_6(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_6);
+}
+
+static int
+test_AES_GCM_authenticated_encryption_test_case_7(void)
+{
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_7);
+}
+
+static int
+test_AES_GCM_auth_encryption_test_case_192_1(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_1);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_1);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_2(void)
+test_AES_GCM_auth_encryption_test_case_192_2(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_2);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_2);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_3(void)
+test_AES_GCM_auth_encryption_test_case_192_3(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_3);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_3);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_4(void)
+test_AES_GCM_auth_encryption_test_case_192_4(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_4);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_4);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_5(void)
+test_AES_GCM_auth_encryption_test_case_192_5(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_5);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_5);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_6(void)
+test_AES_GCM_auth_encryption_test_case_192_6(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_6);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_6);
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_test_case_7(void)
+test_AES_GCM_auth_encryption_test_case_192_7(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_7);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_192_7);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_1(void)
+test_AES_GCM_auth_encryption_test_case_256_1(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_1);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_1);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_2(void)
+test_AES_GCM_auth_encryption_test_case_256_2(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_2);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_2);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_3(void)
+test_AES_GCM_auth_encryption_test_case_256_3(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_3);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_3);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_4(void)
+test_AES_GCM_auth_encryption_test_case_256_4(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_4);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_4);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_5(void)
+test_AES_GCM_auth_encryption_test_case_256_5(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_5);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_5);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_6(void)
+test_AES_GCM_auth_encryption_test_case_256_6(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_6);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_6);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_256_7(void)
+test_AES_GCM_auth_encryption_test_case_256_7(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_256_7);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_256_7);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_aad_1(void)
+test_AES_GCM_auth_encryption_test_case_aad_1(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_aad_1);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_aad_1);
 }
 
 static int
-test_mb_AES_GCM_auth_encryption_test_case_aad_2(void)
+test_AES_GCM_auth_encryption_test_case_aad_2(void)
 {
-       return test_mb_AES_GCM_authenticated_encryption(&gcm_test_case_aad_2);
+       return test_AES_GCM_authenticated_encryption(&gcm_test_case_aad_2);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption(const struct gcm_test_data *tdata)
+test_AES_GCM_authenticated_decryption(const struct gcm_test_data *tdata)
 {
        struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
@@ -5063,99 +5266,141 @@ test_mb_AES_GCM_authenticated_decryption(const struct gcm_test_data *tdata)
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_1(void)
+test_AES_GCM_authenticated_decryption_test_case_1(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_1);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_1);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_2(void)
+test_AES_GCM_authenticated_decryption_test_case_2(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_2);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_2);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_3(void)
+test_AES_GCM_authenticated_decryption_test_case_3(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_3);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_3);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_4(void)
+test_AES_GCM_authenticated_decryption_test_case_4(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_4);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_4);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_5(void)
+test_AES_GCM_authenticated_decryption_test_case_5(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_5);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_5);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_6(void)
+test_AES_GCM_authenticated_decryption_test_case_6(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_6);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_6);
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_test_case_7(void)
+test_AES_GCM_authenticated_decryption_test_case_7(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_7);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_7);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_1(void)
+test_AES_GCM_auth_decryption_test_case_192_1(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_1);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_1);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_2(void)
+test_AES_GCM_auth_decryption_test_case_192_2(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_2);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_2);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_3(void)
+test_AES_GCM_auth_decryption_test_case_192_3(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_3);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_3);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_4(void)
+test_AES_GCM_auth_decryption_test_case_192_4(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_4);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_4);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_5(void)
+test_AES_GCM_auth_decryption_test_case_192_5(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_5);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_5);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_6(void)
+test_AES_GCM_auth_decryption_test_case_192_6(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_6);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_6);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_256_7(void)
+test_AES_GCM_auth_decryption_test_case_192_7(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_256_7);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_192_7);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_aad_1(void)
+test_AES_GCM_auth_decryption_test_case_256_1(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_aad_1);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_1);
 }
 
 static int
-test_mb_AES_GCM_auth_decryption_test_case_aad_2(void)
+test_AES_GCM_auth_decryption_test_case_256_2(void)
 {
-       return test_mb_AES_GCM_authenticated_decryption(&gcm_test_case_aad_2);
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_2);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_256_3(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_3);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_256_4(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_4);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_256_5(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_5);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_256_6(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_6);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_256_7(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_256_7);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_aad_1(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_aad_1);
+}
+
+static int
+test_AES_GCM_auth_decryption_test_case_aad_2(void)
+{
+       return test_AES_GCM_authenticated_decryption(&gcm_test_case_aad_2);
 }
 
 static int
@@ -5230,7 +5475,7 @@ test_AES_GCM_authenticated_encryption_oop(const struct gcm_test_data *tdata)
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_oop(void)
+test_AES_GCM_authenticated_encryption_oop_test_case_1(void)
 {
        return test_AES_GCM_authenticated_encryption_oop(&gcm_test_case_5);
 }
@@ -5298,7 +5543,7 @@ test_AES_GCM_authenticated_decryption_oop(const struct gcm_test_data *tdata)
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_oop(void)
+test_AES_GCM_authenticated_decryption_oop_test_case_1(void)
 {
        return test_AES_GCM_authenticated_decryption_oop(&gcm_test_case_5);
 }
@@ -5378,7 +5623,7 @@ test_AES_GCM_authenticated_encryption_sessionless(
 }
 
 static int
-test_mb_AES_GCM_authenticated_encryption_sessionless(void)
+test_AES_GCM_authenticated_encryption_sessionless_test_case_1(void)
 {
        return test_AES_GCM_authenticated_encryption_sessionless(
                        &gcm_test_case_5);
@@ -5450,7 +5695,7 @@ test_AES_GCM_authenticated_decryption_sessionless(
 }
 
 static int
-test_mb_AES_GCM_authenticated_decryption_sessionless(void)
+test_AES_GCM_authenticated_decryption_sessionless_test_case_1(void)
 {
        return test_AES_GCM_authenticated_decryption_sessionless(
                        &gcm_test_case_5);
@@ -5535,7 +5780,11 @@ static int MD5_HMAC_create_session(struct crypto_testsuite_params *ts_params,
        ut_params->auth_xform.auth.key.data = key;
 
        ut_params->sess = rte_cryptodev_sym_session_create(
-               ts_params->valid_devs[0], &ut_params->auth_xform);
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->auth_xform,
+                       ts_params->session_mpool);
 
        if (ut_params->sess == NULL)
                return TEST_FAILED;
@@ -5710,9 +5959,13 @@ test_multi_session(void)
 
        /* Create multiple crypto sessions*/
        for (i = 0; i < dev_info.sym.max_nb_sessions; i++) {
+
                sessions[i] = rte_cryptodev_sym_session_create(
-                               ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+                               ts_params->session_mpool);
+
+               rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                               sessions[i], &ut_params->auth_xform,
+                               ts_params->session_mpool);
                TEST_ASSERT_NOT_NULL(sessions[i],
                                "Session creation failed at session number %u",
                                i);
@@ -5748,14 +6001,17 @@ test_multi_session(void)
        }
 
        /* Next session create should fail */
-       sessions[i] = rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       sessions[i], &ut_params->auth_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NULL(sessions[i],
                        "Session creation succeeded unexpectedly!");
 
-       for (i = 0; i < dev_info.sym.max_nb_sessions; i++)
-               rte_cryptodev_sym_session_free(ts_params->valid_devs[0],
+       for (i = 0; i < dev_info.sym.max_nb_sessions; i++) {
+               rte_cryptodev_sym_session_clear(ts_params->valid_devs[0],
                                sessions[i]);
+               rte_cryptodev_sym_session_free(sessions[i]);
+       }
 
        rte_free(sessions);
 
@@ -5813,6 +6069,9 @@ test_multi_session_random_usage(void)
                                        * dev_info.sym.max_nb_sessions) + 1, 0);
 
        for (i = 0; i < MB_SESSION_NUMBER; i++) {
+               sessions[i] = rte_cryptodev_sym_session_create(
+                               ts_params->session_mpool);
+
                rte_memcpy(&ut_paramz[i].ut_params, &testsuite_params,
                                sizeof(struct crypto_unittest_params));
 
@@ -5821,9 +6080,11 @@ test_multi_session_random_usage(void)
                                ut_paramz[i].cipher_key, ut_paramz[i].hmac_key);
 
                /* Create multiple crypto sessions*/
-               sessions[i] = rte_cryptodev_sym_session_create(
+               rte_cryptodev_sym_session_init(
                                ts_params->valid_devs[0],
-                               &ut_paramz[i].ut_params.auth_xform);
+                               sessions[i],
+                               &ut_paramz[i].ut_params.auth_xform,
+                               ts_params->session_mpool);
 
                TEST_ASSERT_NOT_NULL(sessions[i],
                                "Session creation failed at session number %u",
@@ -5866,9 +6127,11 @@ test_multi_session_random_usage(void)
                }
        }
 
-       for (i = 0; i < MB_SESSION_NUMBER; i++)
-               rte_cryptodev_sym_session_free(ts_params->valid_devs[0],
+       for (i = 0; i < MB_SESSION_NUMBER; i++) {
+               rte_cryptodev_sym_session_clear(ts_params->valid_devs[0],
                                sessions[i]);
+               rte_cryptodev_sym_session_free(sessions[i]);
+       }
 
        rte_free(sessions);
 
@@ -5892,9 +6155,14 @@ test_null_cipher_only_operation(void)
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_NULL;
        ut_params->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->cipher_xform);
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                               ut_params->sess,
+                               &ut_params->cipher_xform,
+                               ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
@@ -5949,9 +6217,13 @@ test_null_auth_only_operation(void)
        ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_NULL;
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->auth_xform);
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->auth_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
@@ -6005,9 +6277,13 @@ test_null_cipher_auth_operation(void)
        ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_NULL;
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->cipher_xform);
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->cipher_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
@@ -6071,9 +6347,13 @@ test_null_auth_cipher_operation(void)
        ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_NULL;
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->cipher_xform);
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->cipher_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
@@ -6119,6 +6399,7 @@ test_null_invalid_operation(void)
 {
        struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
+       int ret;
 
        /* Setup Cipher Parameters */
        ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
@@ -6127,10 +6408,14 @@ test_null_invalid_operation(void)
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
        ut_params->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->cipher_xform);
-       TEST_ASSERT_NULL(ut_params->sess,
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       ret = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->cipher_xform,
+                       ts_params->session_mpool);
+       TEST_ASSERT(ret == -1,
                        "Session creation succeeded unexpectedly");
 
 
@@ -6141,10 +6426,14 @@ test_null_invalid_operation(void)
        ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_SHA1_HMAC;
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->auth_xform);
-       TEST_ASSERT_NULL(ut_params->sess,
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       ret = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->auth_xform,
+                       ts_params->session_mpool);
+       TEST_ASSERT(ret == -1,
                        "Session creation succeeded unexpectedly");
 
        return TEST_SUCCESS;
@@ -6178,9 +6467,13 @@ test_null_burst_operation(void)
        ut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_NULL;
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
 
-       /* Create Crypto session*/
        ut_params->sess = rte_cryptodev_sym_session_create(
-                       ts_params->valid_devs[0], &ut_params->cipher_xform);
+                       ts_params->session_mpool);
+
+       /* Create Crypto session*/
+       rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
+                       ut_params->sess, &ut_params->cipher_xform,
+                       ts_params->session_mpool);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        TEST_ASSERT_EQUAL(rte_crypto_op_bulk_alloc(ts_params->op_mpool,
@@ -6293,6 +6586,7 @@ static int create_gmac_session(uint8_t dev_id,
 {
        uint8_t auth_key[tdata->key.len];
 
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        memcpy(auth_key, tdata->key.data, tdata->key.len);
@@ -6309,8 +6603,12 @@ static int create_gmac_session(uint8_t dev_id,
        ut_params->auth_xform.auth.iv.length = tdata->iv.len;
 
 
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                       &ut_params->auth_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                       &ut_params->auth_xform,
+                       ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
@@ -6670,6 +6968,7 @@ create_auth_session(struct crypto_unittest_params *ut_params,
                const struct test_crypto_vector *reference,
                enum rte_crypto_auth_operation auth_op)
 {
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        uint8_t auth_key[reference->auth_key.len + 1];
 
        memcpy(auth_key, reference->auth_key.data, reference->auth_key.len);
@@ -6684,8 +6983,12 @@ create_auth_session(struct crypto_unittest_params *ut_params,
        ut_params->auth_xform.auth.digest_length = reference->digest.len;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->auth_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                               &ut_params->auth_xform,
+                               ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
@@ -6699,6 +7002,7 @@ create_auth_cipher_session(struct crypto_unittest_params *ut_params,
                enum rte_crypto_auth_operation auth_op,
                enum rte_crypto_cipher_operation cipher_op)
 {
+       struct crypto_testsuite_params *ts_params = &testsuite_params;
        uint8_t cipher_key[reference->cipher_key.len + 1];
        uint8_t auth_key[reference->auth_key.len + 1];
 
@@ -6732,8 +7036,12 @@ create_auth_cipher_session(struct crypto_unittest_params *ut_params,
        }
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_sym_session_create(dev_id,
-                               &ut_params->auth_xform);
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->session_mpool);
+
+       rte_cryptodev_sym_session_init(dev_id, ut_params->sess,
+                               &ut_params->auth_xform,
+                               ts_params->session_mpool);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
@@ -7561,8 +7869,9 @@ test_scheduler_attach_slave_op(void)
        char vdev_name[32];
 
        /* create 2 AESNI_MB if necessary */
-       nb_devs = rte_cryptodev_count_devtype(
-                       RTE_CRYPTODEV_AESNI_MB_PMD);
+       nb_devs = rte_cryptodev_device_count_by_driver(
+                       rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)));
        if (nb_devs < 2) {
                for (i = nb_devs; i < 2; i++) {
                        snprintf(vdev_name, sizeof(vdev_name), "%s_%u",
@@ -7583,9 +7892,37 @@ test_scheduler_attach_slave_op(void)
                struct rte_cryptodev_info info;
 
                rte_cryptodev_info_get(i, &info);
-               if (info.dev_type != RTE_CRYPTODEV_AESNI_MB_PMD)
+               if (info.driver_id != rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)))
                        continue;
 
+               /*
+                * Create the session mempool again, since now there are new devices
+                * to use the mempool.
+                */
+               if (ts_params->session_mpool) {
+                       rte_mempool_free(ts_params->session_mpool);
+                       ts_params->session_mpool = NULL;
+               }
+               unsigned int session_size = rte_cryptodev_get_private_session_size(i);
+
+               /*
+                * Create mempool with maximum number of sessions * 2,
+                * to include the session headers
+                */
+               if (ts_params->session_mpool == NULL) {
+                       ts_params->session_mpool = rte_mempool_create(
+                                       "test_sess_mp",
+                                       info.sym.max_nb_sessions * 2,
+                                       session_size,
+                                       0, 0, NULL, NULL, NULL,
+                                       NULL, SOCKET_ID_ANY,
+                                       0);
+
+                       TEST_ASSERT_NOT_NULL(ts_params->session_mpool,
+                                       "session mempool allocation failed");
+               }
+
                ret = rte_cryptodev_scheduler_slave_attach(sched_id,
                                (uint8_t)i);
 
@@ -7697,6 +8034,7 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {
                                                test_AES_docsis_qat_all),
                TEST_CASE_ST(ut_setup, ut_teardown,
                                                test_DES_docsis_qat_all),
+               TEST_CASE_ST(ut_setup, ut_teardown, test_authonly_qat_all),
                TEST_CASE_ST(ut_setup, ut_teardown, test_stats),
 
                /** AES GCM Authenticated Encryption */
@@ -7707,35 +8045,83 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {
                TEST_CASE_ST(ut_setup, ut_teardown,
                        test_AES_GCM_auth_encrypt_SGL_out_of_place_1500B_2000B),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_1),
+                       test_AES_GCM_authenticated_encryption_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_2),
+                       test_AES_GCM_authenticated_encryption_test_case_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_3),
+                       test_AES_GCM_authenticated_encryption_test_case_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_4),
+                       test_AES_GCM_authenticated_encryption_test_case_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_5),
+                       test_AES_GCM_authenticated_encryption_test_case_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_6),
+                       test_AES_GCM_authenticated_encryption_test_case_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_7),
+                       test_AES_GCM_authenticated_encryption_test_case_7),
 
                /** AES GCM Authenticated Decryption */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_1),
+                       test_AES_GCM_authenticated_decryption_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_7),
+
+               /** AES GCM Authenticated Encryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_7),
+
+               /** AES GCM Authenticated Decryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_7),
+
+               /** AES GCM Authenticated Encryption 256 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_2),
+                       test_AES_GCM_auth_encryption_test_case_256_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_3),
+                       test_AES_GCM_auth_encryption_test_case_256_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_4),
+                       test_AES_GCM_auth_encryption_test_case_256_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_5),
+                       test_AES_GCM_auth_encryption_test_case_256_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_6),
+                       test_AES_GCM_auth_encryption_test_case_256_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_7),
+                       test_AES_GCM_auth_encryption_test_case_256_7),
 
                /** AES GMAC Authentication */
                TEST_CASE_ST(ut_setup, ut_teardown,
@@ -7842,10 +8228,31 @@ static struct unit_test_suite cryptodev_qat_testsuite  = {
                TEST_CASE_ST(ut_setup, ut_teardown,
                        test_null_auth_cipher_operation),
 
+               /** KASUMI tests */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_generate_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_generate_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_generate_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_generate_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_generate_test_case_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
                        test_kasumi_hash_generate_test_case_6),
 
-               /** KASUMI tests */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_verify_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_verify_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_verify_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_verify_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_kasumi_hash_verify_test_case_5),
+
                TEST_CASE_ST(ut_setup, ut_teardown,
                        test_kasumi_encryption_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
@@ -7910,35 +8317,100 @@ static struct unit_test_suite cryptodev_openssl_testsuite  = {
 
                /** AES GCM Authenticated Encryption */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_1),
+                       test_AES_GCM_authenticated_encryption_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_2),
+                       test_AES_GCM_authenticated_encryption_test_case_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_3),
+                       test_AES_GCM_authenticated_encryption_test_case_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_4),
+                       test_AES_GCM_authenticated_encryption_test_case_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_5),
+                       test_AES_GCM_authenticated_encryption_test_case_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_6),
+                       test_AES_GCM_authenticated_encryption_test_case_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_7),
+                       test_AES_GCM_authenticated_encryption_test_case_7),
 
                /** AES GCM Authenticated Decryption */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_1),
+                       test_AES_GCM_authenticated_decryption_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_7),
+
+
+               /** AES GCM Authenticated Encryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_7),
+
+               /** AES GCM Authenticated Decryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_7),
+
+               /** AES GCM Authenticated Encryption 256 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_7),
+
+               /** AES GCM Authenticated Decryption 256 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_2),
+                       test_AES_GCM_auth_decryption_test_case_256_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_3),
+                       test_AES_GCM_auth_decryption_test_case_256_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_4),
+                       test_AES_GCM_auth_decryption_test_case_256_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_5),
+                       test_AES_GCM_auth_decryption_test_case_256_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_6),
+                       test_AES_GCM_auth_decryption_test_case_256_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_7),
+                       test_AES_GCM_auth_decryption_test_case_256_7),
 
                /** AES GMAC Authentication */
                TEST_CASE_ST(ut_setup, ut_teardown,
@@ -7987,79 +8459,111 @@ static struct unit_test_suite cryptodev_aesni_gcm_testsuite  = {
        .unit_test_cases = {
                /** AES GCM Authenticated Encryption */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_1),
+                       test_AES_GCM_authenticated_encryption_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_2),
+                       test_AES_GCM_authenticated_encryption_test_case_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_3),
+                       test_AES_GCM_authenticated_encryption_test_case_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_4),
+                       test_AES_GCM_authenticated_encryption_test_case_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_5),
+                       test_AES_GCM_authenticated_encryption_test_case_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_6),
+                       test_AES_GCM_authenticated_encryption_test_case_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_test_case_7),
+                       test_AES_GCM_authenticated_encryption_test_case_7),
 
                /** AES GCM Authenticated Decryption */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_1),
+                       test_AES_GCM_authenticated_decryption_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_7),
+
+               /** AES GCM Authenticated Encryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_7),
+
+               /** AES GCM Authenticated Decryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_2),
+                       test_AES_GCM_auth_decryption_test_case_192_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_3),
+                       test_AES_GCM_auth_decryption_test_case_192_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_4),
+                       test_AES_GCM_auth_decryption_test_case_192_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_5),
+                       test_AES_GCM_auth_decryption_test_case_192_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_6),
+                       test_AES_GCM_auth_decryption_test_case_192_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_test_case_7),
+                       test_AES_GCM_auth_decryption_test_case_192_7),
 
                /** AES GCM Authenticated Encryption 256 bits key */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_1),
+                       test_AES_GCM_auth_encryption_test_case_256_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_2),
+                       test_AES_GCM_auth_encryption_test_case_256_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_3),
+                       test_AES_GCM_auth_encryption_test_case_256_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_4),
+                       test_AES_GCM_auth_encryption_test_case_256_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_5),
+                       test_AES_GCM_auth_encryption_test_case_256_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_6),
+                       test_AES_GCM_auth_encryption_test_case_256_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_256_7),
+                       test_AES_GCM_auth_encryption_test_case_256_7),
 
                /** AES GCM Authenticated Decryption 256 bits key */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_1),
+                       test_AES_GCM_auth_decryption_test_case_256_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_2),
+                       test_AES_GCM_auth_decryption_test_case_256_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_3),
+                       test_AES_GCM_auth_decryption_test_case_256_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_4),
+                       test_AES_GCM_auth_decryption_test_case_256_4),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_5),
+                       test_AES_GCM_auth_decryption_test_case_256_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_6),
+                       test_AES_GCM_auth_decryption_test_case_256_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_256_7),
+                       test_AES_GCM_auth_decryption_test_case_256_7),
 
                /** AES GCM Authenticated Encryption big aad size */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_aad_1),
+                       test_AES_GCM_auth_encryption_test_case_aad_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_encryption_test_case_aad_2),
+                       test_AES_GCM_auth_encryption_test_case_aad_2),
 
                /** AES GCM Authenticated Decryption big aad size */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_aad_1),
+                       test_AES_GCM_auth_decryption_test_case_aad_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_auth_decryption_test_case_aad_2),
+                       test_AES_GCM_auth_decryption_test_case_aad_2),
 
                /** AES GMAC Authentication */
                TEST_CASE_ST(ut_setup, ut_teardown,
@@ -8083,15 +8587,15 @@ static struct unit_test_suite cryptodev_aesni_gcm_testsuite  = {
 
                /** Out of place tests */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_oop),
+                       test_AES_GCM_authenticated_encryption_oop_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_oop),
+                       test_AES_GCM_authenticated_decryption_oop_test_case_1),
 
                /** Session-less tests */
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_encryption_sessionless),
+                       test_AES_GCM_authenticated_encryption_sessionless_test_case_1),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                       test_mb_AES_GCM_authenticated_decryption_sessionless),
+                       test_AES_GCM_authenticated_decryption_sessionless_test_case_1),
 
                /** Scatter-Gather */
                TEST_CASE_ST(ut_setup, ut_teardown,
@@ -8281,28 +8785,116 @@ static struct unit_test_suite cryptodev_dpaa2_sec_testsuite  = {
        .teardown = testsuite_teardown,
        .unit_test_cases = {
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_device_configure_invalid_dev_id),
+                       test_device_configure_invalid_dev_id),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_multi_session),
+                       test_multi_session),
 
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_AES_chain_dpaa2_sec_all),
+                       test_AES_chain_dpaa2_sec_all),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_3DES_chain_dpaa2_sec_all),
+                       test_3DES_chain_dpaa2_sec_all),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_AES_cipheronly_dpaa2_sec_all),
+                       test_AES_cipheronly_dpaa2_sec_all),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_3DES_cipheronly_dpaa2_sec_all),
+                       test_3DES_cipheronly_dpaa2_sec_all),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_authonly_dpaa2_sec_all),
 
-               /** HMAC_MD5 Authentication */
+               /** AES GCM Authenticated Encryption */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_encryption_test_case_7),
+
+               /** AES GCM Authenticated Decryption */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_authenticated_decryption_test_case_7),
+
+               /** AES GCM Authenticated Encryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_192_7),
+
+               /** AES GCM Authenticated Decryption 192 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_192_7),
+
+               /** AES GCM Authenticated Encryption 256 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_2),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_3),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_encryption_test_case_256_5),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_MD5_HMAC_generate_case_1),
+                       test_AES_GCM_auth_encryption_test_case_256_6),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_MD5_HMAC_verify_case_1),
+                       test_AES_GCM_auth_encryption_test_case_256_7),
+
+               /** AES GCM Authenticated Decryption 256 bits key */
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_1),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_2),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_MD5_HMAC_generate_case_2),
+                       test_AES_GCM_auth_decryption_test_case_256_3),
                TEST_CASE_ST(ut_setup, ut_teardown,
-                            test_MD5_HMAC_verify_case_2),
+                       test_AES_GCM_auth_decryption_test_case_256_4),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_5),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_6),
+               TEST_CASE_ST(ut_setup, ut_teardown,
+                       test_AES_GCM_auth_decryption_test_case_256_7),
 
                TEST_CASES_END() /**< NULL terminate unit test array */
        }
@@ -8350,14 +8942,31 @@ static struct unit_test_suite cryptodev_armv8_testsuite  = {
 static int
 test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_QAT_SYM_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "QAT PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_QAT is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
+
        return unit_test_suite_runner(&cryptodev_qat_testsuite);
 }
 
 static int
 test_cryptodev_aesni_mb(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_AESNI_MB_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "AESNI MB PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_AESNI_MB is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_aesni_mb_testsuite);
 }
@@ -8365,7 +8974,15 @@ test_cryptodev_aesni_mb(void /*argv __rte_unused, int argc __rte_unused*/)
 static int
 test_cryptodev_openssl(void)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_OPENSSL_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_OPENSSL_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "AESNI MB PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_AESNI_MB is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_openssl_testsuite);
 }
@@ -8373,7 +8990,15 @@ test_cryptodev_openssl(void)
 static int
 test_cryptodev_aesni_gcm(void)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_AESNI_GCM_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "AESNI GCM PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_AESNI_GCM is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_aesni_gcm_testsuite);
 }
@@ -8381,7 +9006,15 @@ test_cryptodev_aesni_gcm(void)
 static int
 test_cryptodev_null(void)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_NULL_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_NULL_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "NULL PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_NULL is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_null_testsuite);
 }
@@ -8389,7 +9022,15 @@ test_cryptodev_null(void)
 static int
 test_cryptodev_sw_snow3g(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_SNOW3G_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "SNOW3G PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_SNOW3G is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_sw_snow3g_testsuite);
 }
@@ -8397,7 +9038,15 @@ test_cryptodev_sw_snow3g(void /*argv __rte_unused, int argc __rte_unused*/)
 static int
 test_cryptodev_sw_kasumi(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_KASUMI_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_KASUMI_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "ZUC PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_KASUMI is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_sw_kasumi_testsuite);
 }
@@ -8405,7 +9054,15 @@ test_cryptodev_sw_kasumi(void /*argv __rte_unused, int argc __rte_unused*/)
 static int
 test_cryptodev_sw_zuc(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_ZUC_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_ZUC_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "ZUC PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_ZUC is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_sw_zuc_testsuite);
 }
@@ -8413,7 +9070,15 @@ test_cryptodev_sw_zuc(void /*argv __rte_unused, int argc __rte_unused*/)
 static int
 test_cryptodev_armv8(void)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_ARMV8_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_ARMV8_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "ARMV8 PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_ARMV8 is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
 
        return unit_test_suite_runner(&cryptodev_armv8_testsuite);
 }
@@ -8423,7 +9088,22 @@ test_cryptodev_armv8(void)
 static int
 test_cryptodev_scheduler(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_SCHEDULER_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "SCHEDULER PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_SCHEDULER is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
+
+       if (rte_cryptodev_driver_id_get(
+                               RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)) == -1) {
+               RTE_LOG(ERR, USER1, "CONFIG_RTE_LIBRTE_PMD_AESNI_MB must be"
+                       " enabled in config file to run this testsuite.\n");
+               return TEST_FAILED;
+}
        return unit_test_suite_runner(&cryptodev_scheduler_testsuite);
 }
 
@@ -8434,7 +9114,16 @@ REGISTER_TEST_COMMAND(cryptodev_scheduler_autotest, test_cryptodev_scheduler);
 static int
 test_cryptodev_dpaa2_sec(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_DPAA2_SEC_PMD;
+       gbl_driver_id = rte_cryptodev_driver_id_get(
+                       RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD));
+
+       if (gbl_driver_id == -1) {
+               RTE_LOG(ERR, USER1, "DPAA2 SEC PMD must be loaded. Check if "
+                               "CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC is enabled "
+                               "in config file to run this testsuite.\n");
+               return TEST_FAILED;
+       }
+
        return unit_test_suite_runner(&cryptodev_dpaa2_sec_testsuite);
 }