FreeBSD: disable the use of hardware crypto offload drivers for now
commite7adccf7f537a4d07281a2b74b360154bae367bc
authorMark Johnston <markjdb@gmail.com>
Thu, 18 Feb 2021 23:51:20 +0000 (18 18:51 -0500)
committerGitHub <noreply@github.com>
Thu, 18 Feb 2021 23:51:20 +0000 (18 15:51 -0800)
treee6cccb72ec180cb0cf54417814f67221263eeffd
parent778869fa139ab72ed557e7455e4f1126684f2625
FreeBSD: disable the use of hardware crypto offload drivers for now

First, the crypto request completion handler contains a bug in that it
fails to reset fs_done correctly after the request is completed.  This
is only a problem for asynchronous drivers.  Second, some hardware
drivers have input constraints which ZFS does not satisfy.  For
instance, ccp(4) apparently requires the AAD length for AES-GCM to be a
multiple of the cipher block size, and with qat(4) the AES-GCM AAD
length may not be longer than 240 bytes.  FreeBSD's generic crypto
framework doesn't have a mechanism to automatically fall back to a
software implementation if a hardware driver cannot process a request,
and ZFS does not tolerate such errors.

The plan is to implement such a fallback mechanism, but with FreeBSD
13.0 approaching we should simply disable the use hardware drivers for
now.

Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Mark Johnston <markj@FreeBSD.org>
Closes #11612
module/os/freebsd/zfs/crypto_os.c