#
40705eb3 |
| 05-Sep-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
crypto/armv8: do not append digest
When performing an authentication verification, the PMD was using memory at the end of the input buffer, to store temporarily the digest. This operation requires t
crypto/armv8: do not append digest
When performing an authentication verification, the PMD was using memory at the end of the input buffer, to store temporarily the digest. This operation requires the buffer to have enough tailroom unnecessarily. Instead, memory is allocated for each queue pair, to store temporarily the digest generated by the driver, so it can be compared with the one provided in the crypto operation, without needing to touch the input buffer.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
show more ...
|
#
effd3b9f |
| 16-Aug-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: allocate driver structure statically
When register a crypto driver, a cryptodev driver structure was being allocated, using malloc. Since this call may fail, it is safer to allocate this
cryptodev: allocate driver structure statically
When register a crypto driver, a cryptodev driver structure was being allocated, using malloc. Since this call may fail, it is safer to allocate this memory statically in each PMD, so driver registration will never fail.
Coverity issue: 158645 Fixes: 7a364faef185 ("cryptodev: remove crypto device type enumeration")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Reviewed-by: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
show more ...
|
#
473174a7 |
| 30-Jul-2017 |
Srisivasubramanian S <ssrinivasan@caviumnetworks.com> |
crypto/armv8: fix authentication session configuration
For key sizes greater than digest length, pad with zero rather than computing hash of the key itself.
Fixes: 169ca3db550c ("crypto/armv8: add
crypto/armv8: fix authentication session configuration
For key sizes greater than digest length, pad with zero rather than computing hash of the key itself.
Fixes: 169ca3db550c ("crypto/armv8: add PMD optimized for ARMv8 processors") Cc: stable@dpdk.org
Signed-off-by: Srisivasubramanian S <ssrinivasan@caviumnetworks.com>
show more ...
|
#
27391b53 |
| 25-Jul-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: fix session init return value
When calling rte_cryptodev_sym_session_init(), if there was an error, it returned -1, instead of returning the specific error code, which can be valuable for
cryptodev: fix session init return value
When calling rte_cryptodev_sym_session_init(), if there was an error, it returned -1, instead of returning the specific error code, which can be valuable for the application for error handling.
Fixes: b3bbd9e5f265 ("cryptodev: support device independent sessions")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
show more ...
|
#
3abcd29f |
| 08-Jul-2017 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
update Cavium Inc copyright headers
Replace the incorrect reference to "Cavium Networks", "Cavium Ltd" company name with correct the "Cavium, Inc" company name in copyright headers.
Signed-off-by:
update Cavium Inc copyright headers
Replace the incorrect reference to "Cavium Networks", "Cavium Ltd" company name with correct the "Cavium, Inc" company name in copyright headers.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
show more ...
|
#
b3bbd9e5 |
| 05-Jul-2017 |
Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> |
cryptodev: support device independent sessions
Change crypto device's session management to make it device independent and simplify architecture when session is intended to be used on more than one
cryptodev: support device independent sessions
Change crypto device's session management to make it device independent and simplify architecture when session is intended to be used on more than one device.
Sessions private data is agnostic to underlying device by adding an indirection in the sessions private data using the crypto driver identifier. A single session can contain indirections to multiple device types.
New function rte_cryptodev_sym_session_init has been created, to initialize the driver private session data per driver to be used on a same session, and rte_cryptodev_sym_session_clear to clear this data before calling rte_cryptodev_sym_session_free.
Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
show more ...
|
#
70c5c3d1 |
| 05-Jul-2017 |
Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> |
cryptodev: remove driver id from session
Since crypto session will not be attached to a specific device or driver, the field driver_id is not required anymore (only used to check that a session was
cryptodev: remove driver id from session
Since crypto session will not be attached to a specific device or driver, the field driver_id is not required anymore (only used to check that a session was being handled by the right device).
Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
show more ...
|
#
7a364fae |
| 30-Jun-2017 |
Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> |
cryptodev: remove crypto device type enumeration
Changes device type identification to be based on a unique driver id replacing the current device type enumeration, which needed library changes ever
cryptodev: remove crypto device type enumeration
Changes device type identification to be based on a unique driver id replacing the current device type enumeration, which needed library changes every time a new crypto driver was added.
The driver id is assigned dynamically during driver registration using the new macro RTE_PMD_REGISTER_CRYPTO_DRIVER which returns a unique uint8_t identifier for that driver. New APIs are also introduced to allow retrieval of the driver id using the driver name.
Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
show more ...
|
#
7f003427 |
| 02-Jul-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: remove digest length from crypto op
Digest length was duplicated in the authentication transform and the crypto operation structures.
Since digest length is not expected to change in a s
cryptodev: remove digest length from crypto op
Digest length was duplicated in the authentication transform and the crypto operation structures.
Since digest length is not expected to change in a same session, it is removed from the crypto operation.
Also, the length has been shrunk to 16 bits, which should be sufficient for any digest.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
show more ...
|
#
0fbd75a9 |
| 02-Jul-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: move IV parameters to session
Since IV parameters (offset and length) should not change for operations in the same session, these parameters are moved to the crypto transform structure, s
cryptodev: move IV parameters to session
Since IV parameters (offset and length) should not change for operations in the same session, these parameters are moved to the crypto transform structure, so they will be stored in the sessions.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
show more ...
|
#
5082f991 |
| 02-Jul-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: pass IV as offset
Since IV now is copied after the crypto operation, in its private size, IV can be passed only with offset and length.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch
cryptodev: pass IV as offset
Since IV now is copied after the crypto operation, in its private size, IV can be passed only with offset and length.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
show more ...
|
#
5209df0d |
| 02-Jul-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: move session type to generic crypto op
Session type (operation with or without session) is not something specific to symmetric operations. Therefore, the variable is moved to the generic
cryptodev: move session type to generic crypto op
Session type (operation with or without session) is not something specific to symmetric operations. Therefore, the variable is moved to the generic crypto operation structure.
Since this is an ABI change, the cryptodev library version gets bumped.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com> Acked-by: Akhil Goyal <akhil.goyal@nxp.com> Acked-by: Fiona Trahe <fiona.trahe@intel.com>
show more ...
|
#
63348b9d |
| 27-Jun-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: move vdev functions to a separate file
Move all functions handling virtual devices to a separate header file "rte_cryptodev_vdev.h", in order to leave only generic functions for any devic
cryptodev: move vdev functions to a separate file
Move all functions handling virtual devices to a separate header file "rte_cryptodev_vdev.h", in order to leave only generic functions for any device in the rest of the files.
It also creates the file "rte_cryptodev_pmd.c", with the implementations of these functions.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
show more ...
|
#
917ac9c4 |
| 21-Jun-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
cryptodev: store device pointer in virtual devices
Only non virtual devices were storing the pointer to rte_device structure in rte_cryptodev, which will be needed to retrieve the driver name for an
cryptodev: store device pointer in virtual devices
Only non virtual devices were storing the pointer to rte_device structure in rte_cryptodev, which will be needed to retrieve the driver name for any device.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Declan Doherty <declan.doherty@intel.com>
show more ...
|
#
168b9e76 |
| 18-Apr-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
drivers/crypto: do not create unique name internally
Crypto devices of the same type could be initialized with the same name, since internally this name was suffixed with an index.
Since commit <dd
drivers/crypto: do not create unique name internally
Crypto devices of the same type could be initialized with the same name, since internally this name was suffixed with an index.
Since commit <dda987315ca2> ("vdev: make virtual bus use its device struct"), this is not allowed anymore.
Therefore, there is no need to create an unique name at device initialization.
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
show more ...
|
#
7e214771 |
| 18-Apr-2017 |
Pablo de Lara <pablo.de.lara.guarch@intel.com> |
drivers/crypto: check if name is null
Check if virtual device name is NULL, to avoid possible segmentation faults.
Fixes: 5d2aa461cbca ("vdev: use generic vdev struct for probe and remove")
Signed
drivers/crypto: check if name is null
Check if virtual device name is NULL, to avoid possible segmentation faults.
Fixes: 5d2aa461cbca ("vdev: use generic vdev struct for probe and remove")
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com> Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
show more ...
|
#
5d2aa461 |
| 11-Apr-2017 |
Jan Blunck <jblunck@infradead.org> |
vdev: use generic vdev struct for probe and remove
This is a preparation to embed the generic rte_device into the rte_eth_dev also for virtual devices.
Signed-off-by: Jan Blunck <jblunck@infradead.
vdev: use generic vdev struct for probe and remove
This is a preparation to embed the generic rte_device into the rte_eth_dev also for virtual devices.
Signed-off-by: Jan Blunck <jblunck@infradead.org> Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
show more ...
|
#
ecaed092 |
| 29-Mar-2017 |
Bruce Richardson <bruce.richardson@intel.com> |
ring: return remaining entry count when dequeuing
Add an extra parameter to the ring dequeue burst/bulk functions so that those functions can optionally return the amount of remaining objs in the ri
ring: return remaining entry count when dequeuing
Add an extra parameter to the ring dequeue burst/bulk functions so that those functions can optionally return the amount of remaining objs in the ring. This information can be used by applications in a number of ways, for instance, with single-consumer queues, it provides a max dequeue size which is guaranteed to work.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
show more ...
|
#
14fbffb0 |
| 29-Mar-2017 |
Bruce Richardson <bruce.richardson@intel.com> |
ring: return free space when enqueuing
Add an extra parameter to the ring enqueue burst/bulk functions so that those functions can optionally return the amount of free space in the ring. This inform
ring: return free space when enqueuing
Add an extra parameter to the ring enqueue burst/bulk functions so that those functions can optionally return the amount of free space in the ring. This information can be used by applications in a number of ways, for instance, with single-producer queues, it provides a max enqueue size which is guaranteed to work. It can also be used to implement watermark functionality in apps, replacing the older functionality with a more flexible version, which enables apps to implement multiple watermark thresholds, rather than just one.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
show more ...
|
#
c2fec022 |
| 18-Jan-2017 |
Zbigniew Bodek <zbigniew.bodek@caviumnetworks.com> |
cryptodev: introduce ARM-specific feature flags
Add two new feature flags: * RTE_CRYPTODEV_FF_CPU_NEON represents ARM NEON (TM) instructions * RTE_CRYPTODEV_FF_CPU_ARM_CE represents ARM crypto e
cryptodev: introduce ARM-specific feature flags
Add two new feature flags: * RTE_CRYPTODEV_FF_CPU_NEON represents ARM NEON (TM) instructions * RTE_CRYPTODEV_FF_CPU_ARM_CE represents ARM crypto extensions
Add them to both cryptodev library, documentation and relevant PMD driver for ARMv8.
Signed-off-by: Zbigniew Bodek <zbigniew.bodek@caviumnetworks.com>
show more ...
|
#
169ca3db |
| 18-Jan-2017 |
Zbigniew Bodek <zbigniew.bodek@caviumnetworks.com> |
crypto/armv8: add PMD optimized for ARMv8 processors
This patch introduces crypto poll mode driver using ARMv8 cryptographic extensions. CPU compatibility with this driver is detected in run-time an
crypto/armv8: add PMD optimized for ARMv8 processors
This patch introduces crypto poll mode driver using ARMv8 cryptographic extensions. CPU compatibility with this driver is detected in run-time and virtual crypto device will not be created if CPU doesn't provide: AES, SHA1, SHA2 and NEON.
This PMD is optimized to provide performance boost for chained crypto operations processing, such as encryption + HMAC generation, decryption + HMAC validation. In particular, cipher only or hash only operations are not provided.
The driver currently supports AES-128-CBC in combination with: SHA256 HMAC and SHA1 HMAC and relies on the external armv8_crypto library: https://github.com/caviumnetworks/armv8_crypto
Build ARMv8 crypto PMD if compiling for ARM64 and CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO option is enable in the configuration file. ARMV8_CRYPTO_LIB_PATH environment variable will point to the appropriate library directory.
Signed-off-by: Zbigniew Bodek <zbigniew.bodek@caviumnetworks.com> Reviewed-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
show more ...
|