From: Fiona Trahe Date: Wed, 13 Jun 2018 12:14:01 +0000 (+0200) Subject: crypto/qat: move sgl related element to appropriate files X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=571ffe236ff10e193910f7fe4cbd980eef14076a;p=dpdk.git crypto/qat: move sgl related element to appropriate files Move SGL (Scatter-Gather List) related functions to common file Move qat_sym_op_cookie struct to sym header file Signed-off-by: Arkadiusz Kusztal Signed-off-by: Fiona Trahe --- diff --git a/drivers/crypto/qat/Makefile b/drivers/crypto/qat/Makefile index 8cb802b9d2..902c47ff47 100644 --- a/drivers/crypto/qat/Makefile +++ b/drivers/crypto/qat/Makefile @@ -25,6 +25,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += qat_sym.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += qat_device.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += qat_qp.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += qat_sym_session.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += qat_common.c SRCS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += rte_qat_cryptodev.c # export include files diff --git a/drivers/crypto/qat/meson.build b/drivers/crypto/qat/meson.build index e596006daa..12910c377d 100644 --- a/drivers/crypto/qat/meson.build +++ b/drivers/crypto/qat/meson.build @@ -7,6 +7,7 @@ if not dep.found() endif sources = files('qat_sym.c', 'qat_qp.c', 'qat_sym_session.c', + 'qat_common.c', 'rte_qat_cryptodev.c', 'qat_device.c') includes += include_directories('qat_adf') diff --git a/drivers/crypto/qat/qat_common.c b/drivers/crypto/qat/qat_common.c new file mode 100644 index 0000000000..a8865904f4 --- /dev/null +++ b/drivers/crypto/qat/qat_common.c @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Intel Corporation + */ + +#include "qat_common.h" +#include "qat_logs.h" + +int +qat_sgl_fill_array(struct rte_mbuf *buf, uint64_t buf_start, + struct qat_sgl *list, uint32_t data_len) +{ + int nr = 1; + + uint32_t buf_len = rte_pktmbuf_iova(buf) - + buf_start + rte_pktmbuf_data_len(buf); + + list->buffers[0].addr = buf_start; + list->buffers[0].resrvd = 0; + list->buffers[0].len = buf_len; + + if (data_len <= buf_len) { + list->num_bufs = nr; + list->buffers[0].len = data_len; + return 0; + } + + buf = buf->next; + while (buf) { + if (unlikely(nr == QAT_SGL_MAX_NUMBER)) { + PMD_DRV_LOG(ERR, + "QAT PMD exceeded size of QAT SGL entry(%u)", + QAT_SGL_MAX_NUMBER); + return -EINVAL; + } + + list->buffers[nr].len = rte_pktmbuf_data_len(buf); + list->buffers[nr].resrvd = 0; + list->buffers[nr].addr = rte_pktmbuf_iova(buf); + + buf_len += list->buffers[nr].len; + buf = buf->next; + + if (buf_len > data_len) { + list->buffers[nr].len -= + buf_len - data_len; + buf = NULL; + } + ++nr; + } + list->num_bufs = nr; + + return 0; +} diff --git a/drivers/crypto/qat/qat_common.h b/drivers/crypto/qat/qat_common.h index 1936395502..77ffc8f724 100644 --- a/drivers/crypto/qat/qat_common.h +++ b/drivers/crypto/qat/qat_common.h @@ -6,6 +6,8 @@ #include +#include + /**< Intel(R) QAT Symmetric Crypto PMD device name */ #define CRYPTODEV_NAME_QAT_SYM_PMD crypto_qat @@ -45,11 +47,8 @@ struct qat_sgl { struct qat_flat_buf buffers[QAT_SGL_MAX_NUMBER]; } __rte_packed __rte_cache_aligned; -struct qat_sym_op_cookie { - struct qat_sgl qat_sgl_src; - struct qat_sgl qat_sgl_dst; - phys_addr_t qat_sgl_src_phys_addr; - phys_addr_t qat_sgl_dst_phys_addr; -}; +int +qat_sgl_fill_array(struct rte_mbuf *buf, uint64_t buf_start, + struct qat_sgl *list, uint32_t data_len); #endif /* _QAT_COMMON_H_ */ diff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c index a9beff0646..b74dfa634b 100644 --- a/drivers/crypto/qat/qat_sym.c +++ b/drivers/crypto/qat/qat_sym.c @@ -248,53 +248,6 @@ qat_sym_pmd_dequeue_op_burst(void *qp, struct rte_crypto_op **ops, return qat_dequeue_op_burst(qp, (void **)ops, nb_ops); } -static inline int -qat_sgl_fill_array(struct rte_mbuf *buf, uint64_t buff_start, - struct qat_sgl *list, uint32_t data_len) -{ - int nr = 1; - - uint32_t buf_len = rte_pktmbuf_iova(buf) - - buff_start + rte_pktmbuf_data_len(buf); - - list->buffers[0].addr = buff_start; - list->buffers[0].resrvd = 0; - list->buffers[0].len = buf_len; - - if (data_len <= buf_len) { - list->num_bufs = nr; - list->buffers[0].len = data_len; - return 0; - } - - buf = buf->next; - while (buf) { - if (unlikely(nr == QAT_SGL_MAX_NUMBER)) { - PMD_DRV_LOG(ERR, "QAT PMD exceeded size of QAT SGL" - " entry(%u)", - QAT_SGL_MAX_NUMBER); - return -EINVAL; - } - - list->buffers[nr].len = rte_pktmbuf_data_len(buf); - list->buffers[nr].resrvd = 0; - list->buffers[nr].addr = rte_pktmbuf_iova(buf); - - buf_len += list->buffers[nr].len; - buf = buf->next; - - if (buf_len > data_len) { - list->buffers[nr].len -= - buf_len - data_len; - buf = NULL; - } - ++nr; - } - list->num_bufs = nr; - - return 0; -} - static inline void set_cipher_iv(uint16_t iv_length, uint16_t iv_offset, struct icp_qat_fw_la_cipher_req_params *cipher_param, diff --git a/drivers/crypto/qat/qat_sym.h b/drivers/crypto/qat/qat_sym.h index b92ec72de0..37bec3ce34 100644 --- a/drivers/crypto/qat/qat_sym.h +++ b/drivers/crypto/qat/qat_sym.h @@ -22,6 +22,13 @@ struct qat_sym_session; +struct qat_sym_op_cookie { + struct qat_sgl qat_sgl_src; + struct qat_sgl qat_sgl_dst; + phys_addr_t qat_sgl_src_phys_addr; + phys_addr_t qat_sgl_dst_phys_addr; +}; + int qat_sym_build_request(void *in_op, uint8_t *out_msg, void *op_cookie, enum qat_device_gen qat_dev_gen);