On Fri, Jul 20, 2018 at 07:42:01PM +0200, Stephan Müller wrote: > The cipher implementations of the kernel crypto API favor in-place > cipher operations. Thus, switch the CTR cipher operation in the DRBG to > perform in-place operations. This is implemented by using the output > buffer as input buffer and zeroizing it before the cipher operation to > implement a CTR encryption of a NULL buffer. > > The speed improvement is quite visibile with the following comparison > using the LRNG implementation. > > Without the patch set: > > 16 bytes| 12.267661 MB/s| 61338304 bytes | 5000000213 ns > 32 bytes| 23.603770 MB/s| 118018848 bytes | 5000000073 ns > 64 bytes| 46.732262 MB/s| 233661312 bytes | 5000000241 ns > 128 bytes| 90.038042 MB/s| 450190208 bytes | 5000000244 ns > 256 bytes| 160.399616 MB/s| 801998080 bytes | 5000000393 ns > 512 bytes| 259.878400 MB/s| 1299392000 bytes | 5000001675 ns > 1024 bytes| 386.050662 MB/s| 1930253312 bytes | 5000001661 ns > 2048 bytes| 493.641728 MB/s| 2468208640 bytes | 5000001598 ns > 4096 bytes| 581.835981 MB/s| 2909179904 bytes | 5000003426 ns > > With the patch set: > > 16 bytes | 17.051142 MB/s | 85255712 bytes | 5000000854 ns > 32 bytes | 32.695898 MB/s | 163479488 bytes | 5000000544 ns > 64 bytes | 64.490739 MB/s | 322453696 bytes | 5000000954 ns > 128 bytes | 123.285043 MB/s | 616425216 bytes | 5000000201 ns > 256 bytes | 233.434573 MB/s | 1167172864 bytes | 5000000573 ns > 512 bytes | 384.405197 MB/s | 1922025984 bytes | 5000000671 ns > 1024 bytes | 566.313370 MB/s | 2831566848 bytes | 5000001080 ns > 2048 bytes | 744.518042 MB/s | 3722590208 bytes | 5000000926 ns > 4096 bytes | 867.501670 MB/s | 4337508352 bytes | 5000002181 ns > > Signed-off-by: Stephan Mueller <smueller@xxxxxxxxxx> Patch applied. Thanks. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt