afalg_engine: Update to 1.2.0-beta.1 11182/head
authorEneas U de Queiroz <cotequeiroz@gmail.com>
Thu, 30 Jan 2020 12:22:40 +0000 (09:22 -0300)
committerEneas U de Queiroz <cotequeiroz@gmail.com>
Thu, 30 Jan 2020 14:41:59 +0000 (11:41 -0300)
This is a beta release that introduces a software fallback mechanism
that greatly speeds up smaller requests by fulfilling them in software,
avoiding the latency of switching to kernel-mode for small jobs.

Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
libs/afalg_engine/Config.in [new file with mode: 0644]
libs/afalg_engine/Makefile

diff --git a/libs/afalg_engine/Config.in b/libs/afalg_engine/Config.in
new file mode 100644 (file)
index 0000000..ed67f52
--- /dev/null
@@ -0,0 +1,43 @@
+if PACKAGE_libopenssl-afalg_sync
+    comment "Build Options"
+
+    config AFALG_DIGESTS
+       bool "Build support for digest acceleration"
+       help
+           Digests are fast in software, and accessing AF_ALG adds latency, so
+           you'll need a large request (16KB) just to match software speed.
+           This increases memory usage, and has problems when process fork
+           with open digest contexts (openssh will not work because of it).
+
+    config AFALG_FALLBACK
+       bool "Enable software fallback feature"
+       default y
+       help
+           Use software to fulfill small requests.  Using AF_ALG adds latency,
+           which makes it slow to perform small requests.  Enabling this
+           option overcomes this problem, at the cost of increased memory
+           and CPU usage.  This is a new, experimental feature; if you
+           encounter any problem, this is the first option to disable.
+           The fallback will fail if you enable this engine alongside
+           devcrypto, so you'll not be able to install both at the same
+           time if this option is enabled.
+
+    config AFALG_UPDATE_CTR_IV
+       bool "Don't rely on kernel to update CTR IV"
+       default y
+       help
+           Don't count on the kernel driver to update the CTR-mode counter
+           (IV).  At least one driver does not update the IV as a workaround
+           for DMA issues.  With this option turned on, the engine will keep
+           track of the counter, and the IV will be sent with every update.
+           If fallback is enabled, then the counter needs to be updated by
+           the engine anyway, and sent with the request everytime there's a
+           switch from software to hardware, so this won't bring much gain in
+           that case.
+
+    config AFALG_ZERO_COPY
+       bool "Use Zero-Copy Mode"
+       help
+           Uses a Zero-Copy interface.  Even though it is supposed to improve
+           performance, actual measurements indicate otherwise.
+endif
index ed9f22e4598ad9bcc014d0923e30076276d2f6e1..c312c4a8848ed3105c91b4b561d61a598940e598 100644 (file)
@@ -7,17 +7,21 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=afalg_engine
-PKG_VERSION:=1.1.0
+PKG_VERSION:=1.2.0-beta.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/cotequeiroz/afalg_engine/archive/v$(PKG_VERSION)
-PKG_HASH:=0c0304558e9450752656522a8f9036130f4e745c4818f02f92cb8d6c99357ed6
+PKG_HASH:=6f0da98a3c12eaf50331ac7cd81f7b8800abf54b96fd73bd3e37cc50fd3d2ba8
 
 PKG_MAINTAINER:=Eneas U de Queiroz <cotequeiroz@gmail.com>
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=LICENSE
-PKG_CONFIG_DEPENDS:= CONFIG_AFALG_ZERO_COPY
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_AFALG_DIGESTS \
+       CONFIG_AFALG_FALLBACK \
+       CONFIG_AFALG_UPDATE_CTR_IV \
+       CONFIG_AFALG_ZERO_COPY
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/cmake.mk
@@ -33,7 +37,8 @@ define Package/libopenssl-afalg_sync
     URL:=https://github.com/cotequeiroz/afalg_engine
     DEPENDS:=libopenssl @OPENSSL_ENGINE @!OPENSSL_ENGINE_BUILTIN_AFALG \
             +libopenssl-conf +kmod-crypto-user
-    CONFLICTS:=libopenssl-afalg
+    CONFLICTS:=libopenssl-afalg $(if $(CONFIG_AFALG_FALLBACK),libopenssl-devcrypto)
+    MENU:=1
 endef
 
 define Package/libopenssl-afalg_sync/description
@@ -41,21 +46,20 @@ define Package/libopenssl-afalg_sync/description
     engine, but using the AF_ALG interface instead of /dev/crypto
 
     It is different than the AF_ALG engine that ships with OpenSSL:
+     - it is faster
      - it uses sync calls, instead of async
      - it suports more algorithms
 endef
 
 define Package/libopenssl-afalg_sync/config
-    config AFALG_ZERO_COPY
-        depends on PACKAGE_libopenssl-afalg_sync
-       bool "Use Zero-Copy Mode"
-       help
-           Uses a Zero-Copy interface.  Even though it is supposed to improve
-           performance, actual measurements indicate otherwise.
+    source "$(SOURCE)/Config.in"
 endef
 
 CMAKE_OPTIONS += \
        -DOPENSSL_ENGINES_DIR=/usr/lib/$(ENGINES_DIR) \
+       -DDIGESTS=$(if $(CONFIG_AFALG_DIGESTS),ON,OFF) \
+       -DFALLBACK=$(if $(CONFIG_AFALG_FALLBACK),ON,OFF) \
+       -DUPDATE_CTR_IV=$(if $(CONFIG_AFALG_UPDATE_CTR_IV),ON,OFF) \
        -DUSE_ZERO_COPY=$(if $(CONFIG_AFALG_ZERO_COPY),ON,OFF)
 
 define Package/libopenssl-afalg_sync/install