X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcrypto%2Fzuc%2Frte_zuc_pmd.c;h=ad65b80c54d4dbcaca23aa285256054e27bdd5da;hb=08e21af90d17f8736e01764c2da41d559608b9d9;hp=b301711e238f5124f4d3f129f0de4e2d1a86ab93;hpb=27391b53b3fceb84e21173fa663650c3912dffca;p=dpdk.git diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c index b301711e23..ad65b80c54 100644 --- a/drivers/crypto/zuc/rte_zuc_pmd.c +++ b/drivers/crypto/zuc/rte_zuc_pmd.c @@ -1,48 +1,17 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2016-2017 Intel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2017 Intel Corporation */ #include -#include #include #include #include -#include -#include +#include #include #include #include "rte_zuc_pmd_private.h" -#define ZUC_DIGEST_LENGTH 4 #define ZUC_MAX_BURST 8 #define BYTE_LEN 8 @@ -258,7 +227,7 @@ process_zuc_cipher_op(struct rte_crypto_op **ops, /** Generate/verify hash from mbufs with same hash key. */ static int -process_zuc_hash_op(struct rte_crypto_op **ops, +process_zuc_hash_op(struct zuc_qp *qp, struct rte_crypto_op **ops, struct zuc_session *session, uint8_t num_ops) { @@ -285,8 +254,7 @@ process_zuc_hash_op(struct rte_crypto_op **ops, session->auth_iv_offset); if (session->auth_op == RTE_CRYPTO_AUTH_OP_VERIFY) { - dst = (uint32_t *)rte_pktmbuf_append(ops[i]->sym->m_src, - ZUC_DIGEST_LENGTH); + dst = (uint32_t *)qp->temp_digest; sso_zuc_eia3_1_buffer(session->pKey_hash, iv, src, @@ -295,10 +263,6 @@ process_zuc_hash_op(struct rte_crypto_op **ops, if (memcmp(dst, ops[i]->sym->auth.digest.data, ZUC_DIGEST_LENGTH) != 0) ops[i]->status = RTE_CRYPTO_OP_STATUS_AUTH_FAILED; - - /* Trim area used for digest from mbuf. */ - rte_pktmbuf_trim(ops[i]->sym->m_src, - ZUC_DIGEST_LENGTH); } else { dst = (uint32_t *)ops[i]->sym->auth.digest.data; @@ -327,16 +291,16 @@ process_ops(struct rte_crypto_op **ops, struct zuc_session *session, session, num_ops); break; case ZUC_OP_ONLY_AUTH: - processed_ops = process_zuc_hash_op(ops, session, + processed_ops = process_zuc_hash_op(qp, ops, session, num_ops); break; case ZUC_OP_CIPHER_AUTH: processed_ops = process_zuc_cipher_op(ops, session, num_ops); - process_zuc_hash_op(ops, session, processed_ops); + process_zuc_hash_op(qp, ops, session, processed_ops); break; case ZUC_OP_AUTH_CIPHER: - processed_ops = process_zuc_hash_op(ops, session, + processed_ops = process_zuc_hash_op(qp, ops, session, num_ops); process_zuc_cipher_op(ops, session, processed_ops); break; @@ -469,19 +433,14 @@ static int cryptodev_zuc_remove(struct rte_vdev_device *vdev); static int cryptodev_zuc_create(const char *name, struct rte_vdev_device *vdev, - struct rte_crypto_vdev_init_params *init_params) + struct rte_cryptodev_pmd_init_params *init_params) { struct rte_cryptodev *dev; struct zuc_private *internals; uint64_t cpu_flags = RTE_CRYPTODEV_FF_CPU_SSE; - if (init_params->name[0] == '\0') - snprintf(init_params->name, sizeof(init_params->name), - "%s", name); - dev = rte_cryptodev_vdev_pmd_init(init_params->name, - sizeof(struct zuc_private), init_params->socket_id, - vdev); + dev = rte_cryptodev_pmd_create(name, &vdev->device, init_params); if (dev == NULL) { ZUC_LOG_ERR("failed to create cryptodev vdev"); goto init_error; @@ -515,11 +474,12 @@ init_error: static int cryptodev_zuc_probe(struct rte_vdev_device *vdev) { - struct rte_crypto_vdev_init_params init_params = { - RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_QUEUE_PAIRS, - RTE_CRYPTODEV_VDEV_DEFAULT_MAX_NB_SESSIONS, + struct rte_cryptodev_pmd_init_params init_params = { + "", + sizeof(struct zuc_private), rte_socket_id(), - {0} + RTE_CRYPTODEV_PMD_DEFAULT_MAX_NB_QUEUE_PAIRS, + RTE_CRYPTODEV_PMD_DEFAULT_MAX_NB_SESSIONS }; const char *name; const char *input_args; @@ -529,17 +489,7 @@ cryptodev_zuc_probe(struct rte_vdev_device *vdev) return -EINVAL; input_args = rte_vdev_device_args(vdev); - rte_cryptodev_vdev_parse_init_params(&init_params, input_args); - - RTE_LOG(INFO, PMD, "Initialising %s on NUMA node %d\n", name, - init_params.socket_id); - if (init_params.name[0] != '\0') - RTE_LOG(INFO, PMD, " User defined name = %s\n", - init_params.name); - RTE_LOG(INFO, PMD, " Max number of queue pairs = %d\n", - init_params.max_nb_queue_pairs); - RTE_LOG(INFO, PMD, " Max number of sessions = %d\n", - init_params.max_nb_sessions); + rte_cryptodev_pmd_parse_input_args(&init_params, input_args); return cryptodev_zuc_create(name, vdev, &init_params); } @@ -547,17 +497,19 @@ cryptodev_zuc_probe(struct rte_vdev_device *vdev) static int cryptodev_zuc_remove(struct rte_vdev_device *vdev) { + + struct rte_cryptodev *cryptodev; const char *name; name = rte_vdev_device_name(vdev); if (name == NULL) return -EINVAL; - RTE_LOG(INFO, PMD, "Closing ZUC crypto device %s" - " on numa socket %u\n", - name, rte_socket_id()); + cryptodev = rte_cryptodev_pmd_get_named_dev(name); + if (cryptodev == NULL) + return -ENODEV; - return 0; + return rte_cryptodev_pmd_destroy(cryptodev); } static struct rte_vdev_driver cryptodev_zuc_pmd_drv = { @@ -565,9 +517,12 @@ static struct rte_vdev_driver cryptodev_zuc_pmd_drv = { .remove = cryptodev_zuc_remove }; +static struct cryptodev_driver zuc_crypto_drv; + RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_ZUC_PMD, cryptodev_zuc_pmd_drv); RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_ZUC_PMD, "max_nb_queue_pairs= " "max_nb_sessions= " "socket_id="); -RTE_PMD_REGISTER_CRYPTO_DRIVER(cryptodev_zuc_pmd_drv, cryptodev_driver_id); +RTE_PMD_REGISTER_CRYPTO_DRIVER(zuc_crypto_drv, cryptodev_zuc_pmd_drv, + cryptodev_driver_id);