cryptodev: add total raw buffer length

The current crypto raw data vectors is extended to support
rte_security usecases, where we need total data length to know
how much additional memory space is available in buffer other
than data length so that driver/HW can write expanded size
data after encryption.

Signed-off-by: Gagandeep Singh <g.singh@nxp.com>
Acked-by: Akhil Goyal <gakhil@marvell.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
Gagandeep Singh 2021-10-14 00:30:19 +05:30 committed by Akhil Goyal
parent 10488d59ae
commit 6afd461f9f
3 changed files with 7 additions and 7 deletions

View File

@ -190,13 +190,6 @@ Deprecation Notices
This field will be null for inplace processing.
This change is targeted for DPDK 21.11.
* cryptodev: The structure ``rte_crypto_vec`` would be updated to add
``tot_len`` to support total buffer length.
This is required for security cases like IPsec and PDCP encryption offload
to know how much additional memory space is available in buffer other than
data length so that driver/HW can write expanded size data after encryption.
This change is targeted for DPDK 21.11.
* cryptodev: Hide structures ``rte_cryptodev_sym_session`` and
``rte_cryptodev_asym_session`` to remove unnecessary indirection between
session and the private data of session. An opaque pointer can be exposed

View File

@ -269,6 +269,9 @@ API Changes
* cryptodev: The field ``dataunit_len`` of the ``struct rte_crypto_cipher_xform``
moved to the end of the structure and extended to ``uint32_t``.
* cryptodev: The structure ``rte_crypto_vec`` was updated to add ``tot_len``
field to support total buffer length to facilitate protocol offload case.
ABI Changes
-----------

View File

@ -37,6 +37,8 @@ struct rte_crypto_vec {
rte_iova_t iova;
/** length of the data buffer */
uint32_t len;
/** total buffer length */
uint32_t tot_len;
};
/**
@ -963,6 +965,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len,
vec[0].base = rte_pktmbuf_mtod_offset(mb, void *, ofs);
vec[0].iova = rte_pktmbuf_iova_offset(mb, ofs);
vec[0].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs;
/* whole data lies in the first segment */
seglen = mb->data_len - ofs;
@ -978,6 +981,7 @@ rte_crypto_mbuf_to_vec(const struct rte_mbuf *mb, uint32_t ofs, uint32_t len,
vec[i].base = rte_pktmbuf_mtod(nseg, void *);
vec[i].iova = rte_pktmbuf_iova(nseg);
vec[i].tot_len = mb->buf_len - rte_pktmbuf_headroom(mb) - ofs;
seglen = nseg->data_len;
if (left <= seglen) {