mirror of
https://github.com/opnsense/src.git
synced 2026-04-03 08:25:16 -04:00
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 |
||
|---|---|---|
| .. | ||
| bde | ||
| cache | ||
| concat | ||
| eli | ||
| gate | ||
| journal | ||
| label | ||
| linux_lvm | ||
| mirror | ||
| mountver | ||
| multipath | ||
| nop | ||
| part | ||
| raid | ||
| raid3 | ||
| shsec | ||
| stripe | ||
| uzip | ||
| vinum | ||
| virstor | ||
| zero | ||
| geom.h | ||
| geom_bsd_enc.c | ||
| geom_ccd.c | ||
| geom_ctl.c | ||
| geom_ctl.h | ||
| geom_dbg.h | ||
| geom_dev.c | ||
| geom_disk.c | ||
| geom_disk.h | ||
| geom_dump.c | ||
| geom_event.c | ||
| geom_flashmap.c | ||
| geom_flashmap.h | ||
| geom_int.h | ||
| geom_io.c | ||
| geom_kern.c | ||
| geom_map.c | ||
| geom_redboot.c | ||
| geom_slice.c | ||
| geom_slice.h | ||
| geom_subr.c | ||
| geom_vfs.c | ||
| geom_vfs.h | ||
| notes | ||