[dpdk-dev] [PATCH v4 0/3] Chained Mbufs support in SW PMDs

Tomasz Kulasek tomaszx.kulasek at intel.com
Thu Jan 5 17:46:05 CET 2017

This patch set adds support of scattered-gather list for SW PMDs.

As of now, application needs to reserve continuous block of memory for
mbufs which is not always the case. Hence needed to support chaining of
mbufs which are smaller in size but can be used if chained.

Above work involves:

 a) Create mbuf functions to coalesce mbuf chains into a single mbuf.
 b) For each software poll mode driver code to detect chained mbufs
    support and coalesce these before preforming crypto.
 c) Add relevant unit tests to test the functionality.

Known limitations for openssl PMD:

While libcrypto library expects continuous destination buffer for
output of cipher operations, implementation of openssl PMD is limited
the same way, and requires contiguous destination mbuf.


While "rte_mbuf: add rte_pktmbuf_linearize" were separated from this
patch set, patch "rte_mbuf: add rte_pktmbuf_linearize" should be
applied before this one.

This patch set shares some unit tests with SGL implementation for QAT
(already merged in dpdk-next-crypto) and should be applied on top of it,
and after applying fix "app/test: fix aad padding size in SGL operation"
by Arek Kusztal.

changes in v4:
 - separated "rte_pktmbuf_linearize" implementation from this patch set
   and sent as new patch for better reviewing,

changes in v3:
 - rebased to dpdk-next-crypto
 - reused tests for AES GCM SGL support in opensll from "app/test: add
   SGL tests to cryptodev QAT suite"

changes in v2:
 - add support for sgl in openssl PMD
 - rte_pktmbuf_coalesce replaced with rte_pktmbuf_linearize
 - extended test vector data for aes gcm from 60 to 2048 bytes

Tomasz Kulasek (3):
  crypto: add sgl support in sw PMDs
  crypto: add sgl support in openssl PMD
  test: add sgl unit tests for crypto devices

 app/test/test_cryptodev.c                  |  386 ++++++++++++++++++-
 app/test/test_cryptodev.h                  |  139 +++++++
 app/test/test_cryptodev_aes_test_vectors.h |   52 +++
 app/test/test_cryptodev_blockcipher.c      |  180 +++++----
 app/test/test_cryptodev_blockcipher.h      |    1 +
 app/test/test_cryptodev_gcm_test_vectors.h |  553 ++++++++++++++++++++++++++++
 doc/guides/cryptodevs/openssl.rst          |    3 +-
 drivers/crypto/aesni_gcm/aesni_gcm_pmd.c   |   14 +
 drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c |   19 +-
 drivers/crypto/kasumi/rte_kasumi_pmd.c     |   13 +
 drivers/crypto/null/null_crypto_pmd.c      |    3 +-
 drivers/crypto/openssl/rte_openssl_pmd.c   |  329 +++++++++++++----
 drivers/crypto/snow3g/rte_snow3g_pmd.c     |   15 +
 drivers/crypto/zuc/rte_zuc_pmd.c           |   13 +
 lib/librte_cryptodev/rte_cryptodev.c       |    4 +-
 lib/librte_cryptodev/rte_cryptodev.h       |    2 +
 16 files changed, 1577 insertions(+), 149 deletions(-)


More information about the dev mailing list