All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] crypto: engine - support for parallel and batch requests
@ 2020-02-07 12:36 Iuliana Prodan
  2020-02-07 12:36 ` [PATCH v3 1/2] crypto: engine - support for parallel requests Iuliana Prodan
  2020-02-07 12:36 ` [PATCH v3 2/2] crypto: engine - support for batch requests Iuliana Prodan
  0 siblings, 2 replies; 6+ messages in thread
From: Iuliana Prodan @ 2020-02-07 12:36 UTC (permalink / raw)
  To: Herbert Xu, Baolin Wang, Ard Biesheuvel, Corentin Labbe,
	Horia Geanta, Maxime Coquelin, Alexandre Torgue, Maxime Ripard
  Cc: Aymen Sghaier, David S. Miller, Silvano Di Ninno,
	Franck Lenormand, linux-crypto, linux-kernel, linux-imx,
	Iuliana Prodan

Added support for executing multiple, independent or not, requests
for crypto engine. This is based on a callback, can_enqueue_more, which
asks the driver if the hardware has free space, to enqueue a new request.
If hardware supports batch requests, crypto-engine can handle this use-case
through do_batch_requests callback.

Since, these new features, cannot be supported by all hardware,
the crypto-engine framework is backward compatible:
- by using the crypto_engine_alloc_init function, to initialize
crypto-engine, the new callbacks are NULL and the engine will work
as before these changes;
- to support only multiple requests, in parallel, the can_enqueue_more
callback must be implemented in driver. On crypto_pump_requests, if
can_enqueue_more callback returns true, a new request is send
to hardware, until there is no space and the callback returns false.
- to support batch requests, do_batch_requests callback must be
implemented in driver, to execute a batch of requests. The link
between the requests, is expected to be done in driver, in
do_one_request(). 

Signed-off-by: Iuliana Prodan <iuliana.prodan@nxp.com>

---
Changes since V2:
- readded cur_req in crypto-engine, to keep, the exact behavior as before
these changes, if can_enqueue_more is not implemented: send requests to hardware,
_one-by-one_, on crypto_pump_requests, and complete it, on
crypto_finalize_request, and so on.
- do_batch_requests is available only with can_enqueue_more.

Changes since V1:
- changed the name of can_enqueue_hardware callback to can_enqueue_more, and
the argument of this callback to crypto_engine structure (for cases when more
than ore crypto-engine is used).
- added a new patch with support for batch requests.

Changes since V0 (RFC):
- removed max_no_req and no_req, as the number of request that can be
processed in parallel;
- added a new callback, can_enqueue_more, to check whether the hardware
can process a new request.

Iuliana Prodan (2):
  crypto: engine - support for parallel requests
  crypto: engine - support for batch requests

 crypto/crypto_engine.c  | 132 +++++++++++++++++++++++++++++++++++++-----------
 include/crypto/engine.h |  14 +++--
 2 files changed, 113 insertions(+), 33 deletions(-)

-- 
2.1.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-02-14  3:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-07 12:36 [PATCH v3 0/2] crypto: engine - support for parallel and batch requests Iuliana Prodan
2020-02-07 12:36 ` [PATCH v3 1/2] crypto: engine - support for parallel requests Iuliana Prodan
2020-02-13  6:18   ` Herbert Xu
2020-02-14  1:25     ` Iuliana Prodan
2020-02-14  3:39       ` Herbert Xu
2020-02-07 12:36 ` [PATCH v3 2/2] crypto: engine - support for batch requests Iuliana Prodan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.