freebsd-dev/sys/geom/eli
Mark Johnston 68f6800ce0 opencrypto: Introduce crypto_dispatch_async()
Currently, OpenCrypto consumers can request asynchronous dispatch by
setting a flag in the cryptop.  (Currently only IPSec may do this.)   I
think this is a bit confusing: we (conditionally) set cryptop flags to
request async dispatch, and then crypto_dispatch() immediately examines
those flags to see if the consumer wants async dispatch. The flag names
are also confusing since they don't specify what "async" applies to:
dispatch or completion.

Add a new KPI, crypto_dispatch_async(), rather than encoding the
requested dispatch type in each cryptop. crypto_dispatch_async() falls
back to crypto_dispatch() if the session's driver provides asynchronous
dispatch. Get rid of CRYPTOP_ASYNC() and CRYPTOP_ASYNC_KEEPORDER().

Similarly, add crypto_dispatch_batch() to request processing of a tailq
of cryptops, rather than encoding the scheduling policy using cryptop
flags.  Convert GELI, the only user of this interface (disabled by
default) to use the new interface.

Add CRYPTO_SESS_SYNC(), which can be used by consumers to determine
whether crypto requests will be dispatched synchronously. This is just
a helper macro. Use it instead of looking at cap flags directly.

Fix style in crypto_done(). Also get rid of CRYPTO_RETW_EMPTY() and
just check the relevant queues directly. This could result in some
unnecessary wakeups but I think it's very uncommon to be using more than
one queue per worker in a given workload, so checking all three queues
is a waste of cycles.

Reviewed by:	jhb
Sponsored by:	Ampere Computing
Submitted by:	Klara, Inc.
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D28194
2021-02-08 09:19:19 -05:00
..
g_eli_crypto.c Add support for optional separate output buffers to in-kernel crypto. 2020-05-25 22:12:04 +00:00
g_eli_ctl.c geom: clean up empty lines in .c and .h files 2020-09-01 22:14:09 +00:00
g_eli_hmac.c geli: style nits 2019-06-12 19:29:48 +00:00
g_eli_integrity.c opencrypto: Introduce crypto_dispatch_async() 2021-02-08 09:19:19 -05:00
g_eli_key_cache.c Use zfree() instead of explicit_bzero() and free(). 2020-06-25 20:17:34 +00:00
g_eli_key.c Introduce the 'n' flag for the geli attach command. 2018-05-09 20:53:38 +00:00
g_eli_privacy.c opencrypto: Introduce crypto_dispatch_async() 2021-02-08 09:19:19 -05:00
g_eli.c Move kernel env global variables, etc to sys/kenv.h 2020-10-07 06:16:37 +00:00
g_eli.h We don't need the sc_ekeys_lock in standalone environment. 2020-09-14 23:51:14 +00:00
pkcs5v2.c geli: partially revert r348709 2019-06-12 19:29:12 +00:00
pkcs5v2.h geli: partially revert r348709 2019-06-12 19:29:12 +00:00