mbuf_offload: remove library
[dpdk.git] / app / test / test_cryptodev.c
index 1a0f204..3240ecd 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2015 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2015-2016 Intel Corporation. All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
  *   modification, are permitted provided that the following conditions
@@ -35,7 +35,6 @@
 #include <rte_mbuf.h>
 #include <rte_malloc.h>
 #include <rte_memcpy.h>
-#include <rte_mbuf_offload.h>
 
 #include <rte_crypto.h>
 #include <rte_cryptodev.h>
@@ -48,7 +47,7 @@ static enum rte_cryptodev_type gbl_cryptodev_type;
 
 struct crypto_testsuite_params {
        struct rte_mempool *mbuf_pool;
-       struct rte_mempool *mbuf_ol_pool;
+       struct rte_mempool *op_mpool;
        struct rte_cryptodev_config conf;
        struct rte_cryptodev_qp_conf qp_conf;
 
@@ -57,12 +56,11 @@ struct crypto_testsuite_params {
 };
 
 struct crypto_unittest_params {
-       struct rte_crypto_xform cipher_xform;
-       struct rte_crypto_xform auth_xform;
+       struct rte_crypto_sym_xform cipher_xform;
+       struct rte_crypto_sym_xform auth_xform;
 
-       struct rte_cryptodev_session *sess;
+       struct rte_cryptodev_sym_session *sess;
 
-       struct rte_mbuf_offload *ol;
        struct rte_crypto_op *op;
 
        struct rte_mbuf *obuf, *ibuf;
@@ -78,7 +76,7 @@ test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
                struct crypto_unittest_params *ut_params);
 
 static int
-test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_session *sess,
+test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_sym_session *sess,
                struct crypto_unittest_params *ut_params,
                struct crypto_testsuite_params *ts_param);
 
@@ -112,19 +110,21 @@ hexdump_mbuf_data(FILE *f, const char *title, struct rte_mbuf *m)
 }
 #endif
 
-static struct rte_mbuf *
-process_crypto_request(uint8_t dev_id, struct rte_mbuf *ibuf)
+static struct rte_crypto_op *
+process_crypto_request(uint8_t dev_id, struct rte_crypto_op *op)
 {
-       struct rte_mbuf *obuf = NULL;
 #if HEX_DUMP
        hexdump_mbuf_data(stdout, "Enqueued Packet", ibuf);
 #endif
 
-       if (rte_cryptodev_enqueue_burst(dev_id, 0, &ibuf, 1) != 1) {
+       if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {
                printf("Error sending packet for encryption");
                return NULL;
        }
-       while (rte_cryptodev_dequeue_burst(dev_id, 0, &obuf, 1) == 0)
+
+       op = NULL;
+
+       while (rte_cryptodev_dequeue_burst(dev_id, 0, &op, 1) == 0)
                rte_pause();
 
 #if HEX_DUMP
@@ -132,7 +132,7 @@ process_crypto_request(uint8_t dev_id, struct rte_mbuf *ibuf)
                hexdump_mbuf_data(stdout, "Dequeued Packet", obuf);
 #endif
 
-       return obuf;
+       return op;
 }
 
 static struct crypto_testsuite_params testsuite_params = { NULL };
@@ -162,13 +162,14 @@ testsuite_setup(void)
                }
        }
 
-       ts_params->mbuf_ol_pool = rte_pktmbuf_offload_pool_create(
-                       "MBUF_OFFLOAD_POOL",
+       ts_params->op_mpool = rte_crypto_op_pool_create(
+                       "MBUF_CRYPTO_SYM_OP_POOL",
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC,
                        NUM_MBUFS, MBUF_CACHE_SIZE,
                        DEFAULT_NUM_XFORMS *
-                       sizeof(struct rte_crypto_xform),
+                       sizeof(struct rte_crypto_sym_xform),
                        rte_socket_id());
-       if (ts_params->mbuf_ol_pool == NULL) {
+       if (ts_params->op_mpool == NULL) {
                RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n");
                return TEST_FAILED;
        }
@@ -221,7 +222,7 @@ 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.max_nb_sessions;
+               ts_params->conf.session_mp.nb_objs = info.sym.max_nb_sessions;
 
                TEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id,
                                &ts_params->conf),
@@ -253,10 +254,9 @@ testsuite_teardown(void)
                rte_mempool_count(ts_params->mbuf_pool));
        }
 
-
-       if (ts_params->mbuf_ol_pool != NULL) {
+       if (ts_params->op_mpool != NULL) {
                RTE_LOG(DEBUG, USER1, "CRYPTO_OP_POOL count %u\n",
-               rte_mempool_count(ts_params->mbuf_ol_pool));
+               rte_mempool_count(ts_params->op_mpool));
        }
 
 }
@@ -276,7 +276,7 @@ ut_setup(void)
        ts_params->conf.nb_queue_pairs = DEFAULT_NUM_QPS_PER_QAT_DEVICE;
        ts_params->conf.socket_id = SOCKET_ID_ANY;
        ts_params->conf.session_mp.nb_objs =
-                       (gbl_cryptodev_type == RTE_CRYPTODEV_QAT_PMD) ?
+                       (gbl_cryptodev_type == RTE_CRYPTODEV_QAT_SYM_PMD) ?
                                        DEFAULT_NUM_OPS_INFLIGHT :
                                        DEFAULT_NUM_OPS_INFLIGHT;
 
@@ -320,14 +320,14 @@ ut_teardown(void)
 
        /* free crypto session structure */
        if (ut_params->sess) {
-               rte_cryptodev_session_free(ts_params->valid_devs[0],
+               rte_cryptodev_sym_session_free(ts_params->valid_devs[0],
                                ut_params->sess);
                ut_params->sess = NULL;
        }
 
        /* free crypto operation structure */
-       if (ut_params->ol)
-               rte_pktmbuf_offload_free(ut_params->ol);
+       if (ut_params->op)
+               rte_crypto_op_free(ut_params->op);
 
        /*
         * free mbuf - both obuf and ibuf are usually the same,
@@ -465,7 +465,7 @@ 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.max_nb_sessions;
+       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",
@@ -768,7 +768,7 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)
        TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = &ut_params->auth_xform;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -777,7 +777,8 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
+
        ut_params->auth_xform.next = NULL;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
@@ -787,58 +788,64 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA1;
 
        /* Create crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(
+       ut_params->sess = rte_cryptodev_sym_session_create(
                        ts_params->valid_devs[0],
                        &ut_params->cipher_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
-       /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       /* Generate crypto op data structure */
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
+
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       /* Set crypto operation authentication parameters */
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA1;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA1;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       /* Set crypto operation cipher parameters */
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
                        CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
+                       CIPHER_IV_LENGTH_AES_CBC);
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
 
        /* Validate obuf */
-       TEST_ASSERT_BUFFERS_ARE_EQUAL(
-                       rte_pktmbuf_mtod(ut_params->obuf, uint8_t *) +
-                       CIPHER_IV_LENGTH_AES_CBC,
+       uint8_t *ciphertext = rte_pktmbuf_mtod_offset(ut_params->op->sym->m_src,
+                       uint8_t *, CIPHER_IV_LENGTH_AES_CBC);
+
+       TEST_ASSERT_BUFFERS_ARE_EQUAL(ciphertext,
                        catch_22_quote_2_512_bytes_AES_CBC_ciphertext,
                        QUOTE_512_BYTES,
                        "ciphertext data not as expected");
 
-       TEST_ASSERT_BUFFERS_ARE_EQUAL(
-                       rte_pktmbuf_mtod(ut_params->obuf, uint8_t *) +
-                       CIPHER_IV_LENGTH_AES_CBC + QUOTE_512_BYTES,
+       uint8_t *digest = ciphertext + QUOTE_512_BYTES;
+
+       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 ?
                                        TRUNCATED_DIGEST_BYTE_LENGTH_SHA1 :
@@ -863,60 +870,66 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest_sessionless(void)
        TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
-
-       ut_params->op = &ut_params->ol->op.crypto;
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       TEST_ASSERT_NOT_NULL(rte_pktmbuf_offload_alloc_crypto_xforms(
-                       ut_params->ol, 2),
+       TEST_ASSERT_NOT_NULL(rte_crypto_op_sym_xforms_alloc(ut_params->op, 2),
                        "failed to allocate space for crypto transforms");
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
+
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
+
        /* Set crypto operation data parameters */
-       ut_params->op->xform->type = RTE_CRYPTO_XFORM_CIPHER;
+       sym_op->xform->type = RTE_CRYPTO_SYM_XFORM_CIPHER;
 
        /* cipher parameters */
-       ut_params->op->xform->cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
-       ut_params->op->xform->cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
-       ut_params->op->xform->cipher.key.data = aes_cbc_key;
-       ut_params->op->xform->cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
+       sym_op->xform->cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;
+       sym_op->xform->cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
+       sym_op->xform->cipher.key.data = aes_cbc_key;
+       sym_op->xform->cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* hash parameters */
-       ut_params->op->xform->next->type = RTE_CRYPTO_XFORM_AUTH;
+       sym_op->xform->next->type = RTE_CRYPTO_SYM_XFORM_AUTH;
 
-       ut_params->op->xform->next->auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
-       ut_params->op->xform->next->auth.algo = RTE_CRYPTO_AUTH_SHA1_HMAC;
-       ut_params->op->xform->next->auth.key.length = HMAC_KEY_LENGTH_SHA1;
-       ut_params->op->xform->next->auth.key.data = hmac_sha1_key;
-       ut_params->op->xform->next->auth.digest_length =
+       sym_op->xform->next->auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
+       sym_op->xform->next->auth.algo = RTE_CRYPTO_AUTH_SHA1_HMAC;
+       sym_op->xform->next->auth.key.length = HMAC_KEY_LENGTH_SHA1;
+       sym_op->xform->next->auth.key.data = hmac_sha1_key;
+       sym_op->xform->next->auth.digest_length =
                        DIGEST_BYTE_LENGTH_SHA1;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA1;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA1;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
+
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
                        CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
+                       CIPHER_IV_LENGTH_AES_CBC);
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
+
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -960,7 +973,7 @@ test_AES_CBC_HMAC_SHA1_decrypt_digest_verify(void)
                        DIGEST_BYTE_LENGTH_SHA1);
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = NULL;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -969,7 +982,7 @@ test_AES_CBC_HMAC_SHA1_decrypt_digest_verify(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = &ut_params->cipher_xform;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
@@ -979,47 +992,54 @@ test_AES_CBC_HMAC_SHA1_decrypt_digest_verify(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA1;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+       ut_params->sess =
+               rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
+                                               &ut_params->auth_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       /* attach symmetric crypto session to crypto operations */
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA1;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA1;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
                        CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
+                       CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
+
+       ut_params->obuf = ut_params->op->sym->m_src;
+
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1068,7 +1088,7 @@ test_AES_CBC_HMAC_SHA256_encrypt_digest(void)
        TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = &ut_params->auth_xform;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1077,7 +1097,7 @@ test_AES_CBC_HMAC_SHA256_encrypt_digest(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = NULL;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
@@ -1087,46 +1107,51 @@ test_AES_CBC_HMAC_SHA256_encrypt_digest(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA256;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->valid_devs[0],
                        &ut_params->cipher_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA256;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA256;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
                        CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
+                       CIPHER_IV_LENGTH_AES_CBC);
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
+
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1170,7 +1195,7 @@ test_AES_CBC_HMAC_SHA256_decrypt_digest_verify(void)
                        DIGEST_BYTE_LENGTH_SHA256);
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = NULL;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1179,7 +1204,7 @@ test_AES_CBC_HMAC_SHA256_decrypt_digest_verify(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = &ut_params->cipher_xform;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
@@ -1189,47 +1214,53 @@ test_AES_CBC_HMAC_SHA256_decrypt_digest_verify(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA256;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+       ut_params->sess =
+               rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
+                                               &ut_params->auth_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
-
-       ut_params->op = &ut_params->ol->op.crypto;
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
 
        /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
+
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
+
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA256;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA256;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
+
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(
                        ut_params->ibuf, CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
                        CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       /* Process crypto operation */
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
 
-       /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1283,7 +1314,7 @@ test_AES_CBC_HMAC_SHA512_encrypt_digest(void)
        TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = &ut_params->auth_xform;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1292,7 +1323,7 @@ test_AES_CBC_HMAC_SHA512_encrypt_digest(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = NULL;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
@@ -1302,48 +1333,52 @@ test_AES_CBC_HMAC_SHA512_encrypt_digest(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA512;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
-                       &ut_params->cipher_xform);
+       ut_params->sess =
+               rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
+                                               &ut_params->cipher_xform);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
-
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA512;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA512;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
                        CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
+                       CIPHER_IV_LENGTH_AES_CBC);
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
+
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1371,7 +1406,7 @@ test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
                struct crypto_unittest_params *ut_params);
 
 static int
-test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_session *sess,
+test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_sym_session *sess,
                struct crypto_unittest_params *ut_params,
                struct crypto_testsuite_params *ts_params);
 
@@ -1386,8 +1421,9 @@ test_AES_CBC_HMAC_SHA512_decrypt_digest_verify(void)
                        "Failed to create session params");
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+       ut_params->sess =
+               rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
+                                               &ut_params->auth_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        return test_AES_CBC_HMAC_SHA512_decrypt_perform(ut_params->sess,
@@ -1400,7 +1436,7 @@ test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
 {
 
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = NULL;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1409,7 +1445,7 @@ test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = &ut_params->cipher_xform;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
@@ -1423,7 +1459,7 @@ test_AES_CBC_HMAC_SHA512_decrypt_create_session_params(
 
 
 static int
-test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_session *sess,
+test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_sym_session *sess,
                struct crypto_unittest_params *ut_params,
                struct crypto_testsuite_params *ts_params)
 {
@@ -1442,43 +1478,46 @@ test_AES_CBC_HMAC_SHA512_decrypt_perform(struct rte_cryptodev_session *sess,
                        DIGEST_BYTE_LENGTH_SHA512);
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       rte_crypto_op_attach_sym_session(ut_params->op, sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA512;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA512;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
+
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(
                        ut_params->ibuf, CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, 0);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
                        CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       /* Process crypto operation */
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
 
-       /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1516,12 +1555,8 @@ test_AES_CBC_HMAC_AES_XCBC_encrypt_digest(void)
        ut_params->ibuf = setup_test_string(ts_params->mbuf_pool,
                        catch_22_quote, QUOTE_512_BYTES, 0);
 
-       ut_params->digest = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
-                       DIGEST_BYTE_LENGTH_AES_XCBC);
-       TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
-
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = &ut_params->auth_xform;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1530,7 +1565,7 @@ test_AES_CBC_HMAC_AES_XCBC_encrypt_digest(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = NULL;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;
@@ -1540,53 +1575,71 @@ test_AES_CBC_HMAC_AES_XCBC_encrypt_digest(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_AES_XCBC;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
+       ut_params->sess = rte_cryptodev_sym_session_create(
+                       ts_params->valid_devs[0],
                        &ut_params->cipher_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->iv.data = (uint8_t *)
-               rte_pktmbuf_prepend(ut_params->ibuf,
-                               CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       /* Set operation cipher parameters */
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(
+                       sym_op->m_src, CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(sym_op->m_src);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
                        CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
+
+       /* Set operation authentication parameters */
+       sym_op->auth.digest.data = (uint8_t *)rte_pktmbuf_append(
+                       sym_op->m_src, DIGEST_BYTE_LENGTH_AES_XCBC);
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
+                       sym_op->m_src,
+                       CIPHER_IV_LENGTH_AES_CBC + QUOTE_512_BYTES);
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_AES_XCBC;
+
+       memset(sym_op->auth.digest.data, 0, DIGEST_BYTE_LENGTH_AES_XCBC);
+
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
 
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       ut_params->op = process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op);
+       TEST_ASSERT_NOT_NULL(ut_params->op, "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
-                       rte_pktmbuf_mtod(ut_params->obuf, uint8_t *) +
-                       CIPHER_IV_LENGTH_AES_CBC,
+                       rte_pktmbuf_mtod_offset(ut_params->op->sym->m_src,
+                                       uint8_t *, CIPHER_IV_LENGTH_AES_CBC),
                        catch_22_quote_2_512_bytes_AES_CBC_ciphertext,
                        QUOTE_512_BYTES,
                        "Ciphertext data not as expected");
+
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
-                       rte_pktmbuf_mtod(ut_params->obuf, uint8_t *) +
-                       CIPHER_IV_LENGTH_AES_CBC + QUOTE_512_BYTES,
+                       rte_pktmbuf_mtod_offset(
+                                       ut_params->op->sym->m_src, uint8_t *,
+                                       CIPHER_IV_LENGTH_AES_CBC +
+                                       QUOTE_512_BYTES),
                        catch_22_quote_2_512_bytes_HMAC_AES_XCBC_digest,
                        DIGEST_BYTE_LENGTH_AES_XCBC,
                        "Generated digest data not as expected");
@@ -1605,16 +1658,8 @@ test_AES_CBC_HMAC_AES_XCBC_decrypt_digest_verify(void)
                (const char *)catch_22_quote_2_512_bytes_AES_CBC_ciphertext,
                QUOTE_512_BYTES, 0);
 
-       ut_params->digest = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
-                       DIGEST_BYTE_LENGTH_AES_XCBC);
-       TEST_ASSERT_NOT_NULL(ut_params->digest, "no room to append digest");
-
-       rte_memcpy(ut_params->digest,
-                       catch_22_quote_2_512_bytes_HMAC_AES_XCBC_digest,
-                       DIGEST_BYTE_LENGTH_AES_XCBC);
-
        /* Setup Cipher Parameters */
-       ut_params->cipher_xform.type = RTE_CRYPTO_XFORM_CIPHER;
+       ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
        ut_params->cipher_xform.next = NULL;
 
        ut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;
@@ -1623,7 +1668,7 @@ test_AES_CBC_HMAC_AES_XCBC_decrypt_digest_verify(void)
        ut_params->cipher_xform.cipher.key.length = CIPHER_KEY_LENGTH_AES_CBC;
 
        /* Setup HMAC Parameters */
-       ut_params->auth_xform.type = RTE_CRYPTO_XFORM_AUTH;
+       ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
        ut_params->auth_xform.next = &ut_params->cipher_xform;
 
        ut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY;
@@ -1633,40 +1678,61 @@ test_AES_CBC_HMAC_AES_XCBC_decrypt_digest_verify(void)
        ut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_AES_XCBC;
 
        /* Create Crypto session*/
-       ut_params->sess = rte_cryptodev_session_create(ts_params->valid_devs[0],
-                       &ut_params->auth_xform);
+       ut_params->sess =
+               rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
+                                               &ut_params->auth_xform);
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
-       ut_params->op = &ut_params->ol->op.crypto;
+       /* Set crypto operation data parameters */
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
 
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
 
-       /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(ut_params->ibuf,
-                       CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       sym_op->auth.digest.data = (uint8_t *)rte_pktmbuf_append(
+                               ut_params->ibuf, DIGEST_BYTE_LENGTH_AES_XCBC);
+       TEST_ASSERT_NOT_NULL(sym_op->auth.digest.data,
+                       "no room to append digest");
+
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
+                       ut_params->ibuf, QUOTE_512_BYTES);
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_AES_XCBC;
+
+       rte_memcpy(sym_op->auth.digest.data,
+                       catch_22_quote_2_512_bytes_HMAC_AES_XCBC_digest,
+                       DIGEST_BYTE_LENGTH_AES_XCBC);
+
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
+
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(
+                       ut_params->ibuf, CIPHER_IV_LENGTH_AES_CBC);
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys(ut_params->ibuf);
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
+
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
                        CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       TEST_ASSERT_NOT_NULL(process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op), "failed to process sym crypto op");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto op processing failed");
+
+       ut_params->obuf = ut_params->op->sym->m_src;
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
@@ -1751,7 +1817,7 @@ test_multi_session(void)
        struct crypto_unittest_params *ut_params = &unittest_params;
 
        struct rte_cryptodev_info dev_info;
-       struct rte_cryptodev_session **sessions;
+       struct rte_cryptodev_sym_session **sessions;
 
        uint16_t i;
 
@@ -1760,12 +1826,13 @@ test_multi_session(void)
 
        rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);
 
-       sessions = rte_malloc(NULL, (sizeof(struct rte_cryptodev_session *) *
-                       dev_info.max_nb_sessions) + 1, 0);
+       sessions = rte_malloc(NULL,
+                       (sizeof(struct rte_cryptodev_sym_session *) *
+                       dev_info.sym.max_nb_sessions) + 1, 0);
 
        /* Create multiple crypto sessions*/
-       for (i = 0; i < dev_info.max_nb_sessions; i++) {
-               sessions[i] = rte_cryptodev_session_create(
+       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);
                TEST_ASSERT_NOT_NULL(sessions[i],
@@ -1780,13 +1847,13 @@ test_multi_session(void)
        }
 
        /* Next session create should fail */
-       sessions[i] = rte_cryptodev_session_create(ts_params->valid_devs[0],
+       sessions[i] = rte_cryptodev_sym_session_create(ts_params->valid_devs[0],
                        &ut_params->auth_xform);
        TEST_ASSERT_NULL(sessions[i],
                        "Session creation succeeded unexpectedly!");
 
-       for (i = 0; i < dev_info.max_nb_sessions; i++)
-               rte_cryptodev_session_free(ts_params->valid_devs[0],
+       for (i = 0; i < dev_info.sym.max_nb_sessions; i++)
+               rte_cryptodev_sym_session_free(ts_params->valid_devs[0],
                                sessions[i]);
 
        rte_free(sessions);
@@ -1805,7 +1872,7 @@ test_not_in_place_crypto(void)
 
        /* Create multiple crypto sessions*/
 
-       ut_params->sess = rte_cryptodev_session_create(
+       ut_params->sess = rte_cryptodev_sym_session_create(
                        ts_params->valid_devs[0], &ut_params->auth_xform);
 
        TEST_ASSERT_NOT_NULL(ut_params->sess, "Session creation failed");
@@ -1826,50 +1893,53 @@ test_not_in_place_crypto(void)
                        DIGEST_BYTE_LENGTH_SHA512);
 
        /* Generate Crypto op data structure */
-       ut_params->ol = rte_pktmbuf_offload_alloc(ts_params->mbuf_ol_pool,
-                               RTE_PKTMBUF_OL_CRYPTO);
-       TEST_ASSERT_NOT_NULL(ut_params->ol,
-                       "Failed to allocate pktmbuf offload");
-
-       ut_params->op = &ut_params->ol->op.crypto;
+       ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+                       RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+       TEST_ASSERT_NOT_NULL(ut_params->op,
+                       "Failed to allocate symmetric crypto operation struct");
 
 
        /* Set crypto operation data parameters */
-       rte_crypto_op_attach_session(ut_params->op, ut_params->sess);
+       rte_crypto_op_attach_sym_session(ut_params->op, ut_params->sess);
+
+       struct rte_crypto_sym_op *sym_op = ut_params->op->sym;
+
+       /* set crypto operation source mbuf */
+       sym_op->m_src = ut_params->ibuf;
+       sym_op->m_dst = dst_m;
 
-       ut_params->op->digest.data = ut_params->digest;
-       ut_params->op->digest.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->auth.digest.data = ut_params->digest;
+       sym_op->auth.digest.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, QUOTE_512_BYTES);
-       ut_params->op->digest.length = DIGEST_BYTE_LENGTH_SHA512;
+       sym_op->auth.digest.length = DIGEST_BYTE_LENGTH_SHA512;
 
-       ut_params->op->iv.data = (uint8_t *)rte_pktmbuf_prepend(
+       sym_op->auth.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->auth.data.length = QUOTE_512_BYTES;
+
+
+       sym_op->cipher.iv.data = (uint8_t *)rte_pktmbuf_prepend(
                        ut_params->ibuf, CIPHER_IV_LENGTH_AES_CBC);
-       ut_params->op->iv.phys_addr = rte_pktmbuf_mtophys_offset(
+       sym_op->cipher.iv.phys_addr = rte_pktmbuf_mtophys_offset(
                        ut_params->ibuf, 0);
-       ut_params->op->iv.length = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.iv.length = CIPHER_IV_LENGTH_AES_CBC;
 
-       rte_memcpy(ut_params->op->iv.data, aes_cbc_iv,
+       rte_memcpy(sym_op->cipher.iv.data, aes_cbc_iv,
                        CIPHER_IV_LENGTH_AES_CBC);
 
-       ut_params->op->data.to_cipher.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_cipher.length = QUOTE_512_BYTES;
-
-       ut_params->op->data.to_hash.offset = CIPHER_IV_LENGTH_AES_CBC;
-       ut_params->op->data.to_hash.length = QUOTE_512_BYTES;
-
-       ut_params->op->dst.m = dst_m;
-       ut_params->op->dst.offset = 0;
-
-       rte_pktmbuf_offload_attach(ut_params->ibuf, ut_params->ol);
+       sym_op->cipher.data.offset = CIPHER_IV_LENGTH_AES_CBC;
+       sym_op->cipher.data.length = QUOTE_512_BYTES;
 
        /* Process crypto operation */
-       ut_params->obuf = process_crypto_request(ts_params->valid_devs[0],
-                       ut_params->ibuf);
-       TEST_ASSERT_NOT_NULL(ut_params->obuf, "failed to retrieve obuf");
+       ut_params->op = process_crypto_request(ts_params->valid_devs[0],
+                       ut_params->op);
+       TEST_ASSERT_NOT_NULL(ut_params->op, "no crypto operation returned");
+
+       TEST_ASSERT_EQUAL(ut_params->op->status, RTE_CRYPTO_OP_STATUS_SUCCESS,
+                       "crypto operation processing failed");
 
        /* Validate obuf */
        TEST_ASSERT_BUFFERS_ARE_EQUAL(
-                       rte_pktmbuf_mtod(ut_params->op->dst.m, char *),
+                       rte_pktmbuf_mtod(ut_params->op->sym->m_dst, char *),
                        catch_22_quote,
                        QUOTE_512_BYTES,
                        "Plaintext data not as expected");
@@ -1961,7 +2031,7 @@ static struct unit_test_suite cryptodev_aesni_mb_testsuite  = {
 static int
 test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/)
 {
-       gbl_cryptodev_type = RTE_CRYPTODEV_QAT_PMD;
+       gbl_cryptodev_type = RTE_CRYPTODEV_QAT_SYM_PMD;
        return unit_test_suite_runner(&cryptodev_qat_testsuite);
 }
 static struct test_command cryptodev_qat_cmd = {