From: Markus Stockhausen <markus.stockhausen@gmx.de>
To: linux-crypto@vger.kernel.org
Cc: Markus Stockhausen <markus.stockhausen@gmx.de>
Subject: [PATCH v2 0/6] crypto/realtek: add new driver
Date: Tue, 6 Dec 2022 20:20:31 +0100 [thread overview]
Message-ID: <20221206192037.608808-1-markus.stockhausen@gmx.de> (raw)
This driver adds support for the Realtek crypto engine. It provides hardware
accelerated AES, SHA1 & MD5 algorithms. It is included in SoCs of the RTL838x
series, such as RTL8380, RTL8381, RTL8382, as well as SoCs from the RTL930x
series, such as RTL9301, RTL9302 and RTL9303. Some little endian and ARM based
Realtek SoCs seem to have this engine too. Nevertheless this patch was only
developed and verified on MIPS big endian devices.
Changes since v1:
- use macros to allow unaligned access during hash state import/export
Module has been successfully tested with
- lots of module loads/unloads with crypto manager extra tests enabled.
- openssl devcrypto benchmarking
- tcrypt.ko benchmarking
Benchmarks from tcrypt.ko mode=600, 402, 403 sec=5 on a 800 MHz RTL9301 SoC can
be summed up as follows:
- with smallest block sizes the engine is 8-10 times slower than software
- sweet spot (harware speed = software speed) starts at 256 byte blocks
- With large blocks the engine is round about 2 times faster than software
- md5 performance is always worse than software
op/s with default software algorithms:
16 B 64 B 256 B 1024 B 1472 B 8192 B
ecb(aes) 128 bit encrypt 513593 165651 44233 11264 7846 1411
ecb(aes) 128 bit decrypt 514819 165792 44259 11268 7851 1411
ecb(aes) 192 bit encrypt 455136 142680 37761 9579 6673 1198
ecb(aes) 192 bit decrypt 456524 142836 37790 9584 6675 1200
ecb(aes) 256 bit encrypt 412102 125771 33038 8361 5825 1048
ecb(aes) 256 bit decrypt 412321 125800 33056 8368 5827 1048
16 B 64 B 256 B 1024 B 1472 B 8192 B
cbc(aes) 128 bit encrypt 476081 154228 41307 10520 7331 1318
cbc(aes) 128 bit decrypt 462068 152934 41228 10516 7326 1315
cbc(aes) 192 bit encrypt 426126 133894 35598 9041 6297 1132
cbc(aes) 192 bit decrypt 416446 133116 35542 9040 6296 1131
cbc(aes) 256 bit encrypt 386841 118950 31382 7953 5539 996
cbc(aes) 256 bit decrypt 379032 118209 31324 7952 5537 995
16 B 64 B 256 B 1024 B 1472 B 8192 B
ctr(aes) 128 bit encrypt 475435 152852 40825 10372 7225 1299
ctr(aes) 128 bit decrypt 475804 152852 40862 10374 7227 1299
ctr(aes) 192 bit encrypt 426900 133025 35230 8940 6228 1120
ctr(aes) 192 bit decrypt 427377 133030 35235 8942 6228 1120
ctr(aes) 256 bit encrypt 388872 118259 31086 7875 5484 985
ctr(aes) 256 bit decrypt 388862 118260 31100 7875 5483 985
16 B 64 B 256 B 1024 B 2048 B 4096 B 8192 B
md5 600185 365210 166293 52399 27389 14011 7068
sha1 230154 124734 52979 16055 8322 4237 2137
op/s with module and hardware offloading enabled:
16 B 64 B 256 B 1024 B 1472 B 8192 B
ecb(aes) 128 bit encrypt 65062 58964 41380 19433 14884 2712
ecb(aes) 128 bit decrypt 65288 58507 40417 18854 14400 2627
ecb(aes) 192 bit encrypt 65233 57798 39236 17849 13534 2468
ecb(aes) 192 bit decrypt 65377 57100 38444 17336 13147 2406
ecb(aes) 256 bit encrypt 65064 56928 37400 16496 12432 2270
ecb(aes) 256 bit decrypt 64932 56115 36833 16064 12097 2219
16 B 64 B 256 B 1024 B 1472 B 8192 B
cbc(aes) 128 bit encrypt 64246 58073 40720 19361 14878 2718
cbc(aes) 128 bit decrypt 60969 55128 38904 18630 14184 2614
cbc(aes) 192 bit encrypt 64211 56854 38787 17793 13571 2468
cbc(aes) 192 bit decrypt 60948 53947 37209 17097 12955 2390
cbc(aes) 256 bit encrypt 63920 55889 37128 16502 12430 2267
cbc(aes) 256 bit decrypt 60680 53174 35787 15819 11961 2200
16 B 64 B 256 B 1024 B 1472 B 8192 B
ctr(aes) 128 bit encrypt 64452 58387 40897 19401 14921 2710
ctr(aes) 128 bit decrypt 64425 58244 41016 19433 14747 2710
ctr(aes) 192 bit encrypt 64513 57115 38884 17860 13547 2468
ctr(aes) 192 bit decrypt 64531 57116 39088 17785 13510 2468
ctr(aes) 256 bit encrypt 64284 56094 37254 16524 12411 2267
ctr(aes) 256 bit decrypt 64272 56321 37296 16436 12411 2265
16 B 64 B 256 B 1024 B 2048 B 4096 B 8192 B
md5 47224 44513 39175 25264 17199 10548 5874
sha1 46389 43578 36878 22501 14890 8796 4835
Markus Stockhausen (6)
crypto/realtek: header definitions
crypto/realtek: core functions
crypto/realtek: hash algorithms
crypto/realtek: skcipher algorithms
crypto/realtek: enable module
crypto/realtek: add devicetree documentation
/devicetree/bindings/crypto/realtek,realtek-crypto.yaml| 51 +
drivers/crypto/Kconfig | 13
drivers/crypto/Makefile | 1
drivers/crypto/realtek/Makefile | 5
drivers/crypto/realtek/realtek_crypto.c | 472 ++++++++++
drivers/crypto/realtek/realtek_crypto.h | 325 ++++++
drivers/crypto/realtek/realtek_crypto_ahash.c | 406 ++++++++
drivers/crypto/realtek/realtek_crypto_skcipher.c | 361 +++++++
8 files changed, 1634 insertions(+)
next reply other threads:[~2022-12-06 19:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-06 19:20 Markus Stockhausen [this message]
2022-12-06 19:20 ` [PATCH v2 1/6] crypto/realtek: header definitions Markus Stockhausen
2022-12-06 19:20 ` [PATCH v2 2/6] crypto/realtek: core functions Markus Stockhausen
2022-12-06 19:20 ` [PATCH v2 3/6] crypto/realtek: hash algorithms Markus Stockhausen
2022-12-30 7:55 ` Herbert Xu
2022-12-30 8:38 ` Markus Stockhausen
2022-12-30 8:43 ` Herbert Xu
2022-12-06 19:20 ` [PATCH v2 4/6] crypto/realtek: skcipher algorithms Markus Stockhausen
2022-12-06 19:20 ` [PATCH v2 5/6] crypto/realtek: enable module Markus Stockhausen
2022-12-06 19:20 ` [PATCH v2 6/6] crypto/realtek: add devicetree documentation Markus Stockhausen
2022-12-30 6:54 ` [PATCH v2 0/6] crypto/realtek: add new driver Markus Stockhausen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221206192037.608808-1-markus.stockhausen@gmx.de \
--to=markus.stockhausen@gmx.de \
--cc=linux-crypto@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).