Spdk/lib/util
James Bergsten d2bbef66dc lib/util: Add ISA-L and faster table-based options for T10 CRC-16 generation
This patch extends existing ISA-L support for NVMe/SCSI T10 CRC-16
protection check (PI). The choice of which algorithm to use is set
via an existing configure parameter.  The default for x86 systems with
appropriate CPU instructions is to us ISA-L.

Testing shows that PI checking/generation will run at device speed using
ISA-L.  The table-based algorithm is much faster than the original algorithm
and is provided to speed up calculations on non-x86 systems.

This patch also fixes one issue in a false configure error if nasm
is at a higher version than currently checked (i.e. 2.13.03)

Local performance testing yeilds these results:

Original -    15 mbit/sec. (code removed)
Table    -   400 mbit/sec. (27 times faster than original)
ISA-L    - 3,400 mbit/sec. (227 times faster than original)

Signed-off-by: James Bergsten <jamesx.bergsten@intel.com>
Change-Id: Idc7f1d97252644d839621ffe9fa995edd922da52
Signed-off-by: James Bergsten <jamesx.bergsten@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/443646
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2019-03-08 15:39:32 +00:00
..
base64.c util/base64: add base64 lib and unit tests 2018-07-19 00:50:54 +00:00
bit_array.c util: added bit array bitmask load, store and clear 2018-12-14 15:34:53 +00:00
cpuset.c util/cpuset: fix internal string buffer size 2019-01-12 11:19:12 +00:00
crc16.c lib/util: Add ISA-L and faster table-based options for T10 CRC-16 generation 2019-03-08 15:39:32 +00:00
crc32_ieee.c util: add CRC32 utility functions 2017-08-02 19:47:35 -04:00
crc32.c Update spdk crc32.c with ARM CRC32 intrinsics 2019-01-29 18:23:01 +00:00
crc32c.c util: Move architecture detection to crc32c.c 2019-02-04 19:14:22 +00:00
dif.c dif: Create iovec array so that a space for metadata is left for each block 2019-03-07 07:03:27 +00:00
fd.c util/fd: drop fallback from spdk_fd_get_blocklen() 2017-08-11 19:36:30 -04:00
Makefile dif: Generate DIF for extended LBA payload 2018-12-20 17:52:29 +00:00
strerror_tls.c util: add spdk_strerror() wrapper with TLS support 2018-01-04 15:00:09 -05:00
string.c util/string: additional errno check after strtol() 2019-01-29 14:57:16 +00:00
uuid.c util/uuid: add a new uuid copy API. 2018-12-06 22:25:09 +00:00