On 4/17/07, Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote:
On Mon, Apr 16, 2007 at 10:37:01AM +0200, Francis Moreau wrote: > > BTW, here are figures I got with 2 different versions of the driver > when using tcrypt module. The second being the result with the > optimized driver (no key reloading on each block): > > normal version: > test 4 (128 bit key, 8192 byte blocks): 1 operation in 67991 cycles (8192 > bytes) > > optimized version: > test 4 (128 bit key, 8192 byte blocks): 1 operation in 51783 cycles (8192 > bytes) > > So the gain is 16000 cycles which seems to worth the change, isn't it ? Sounds like it would. It would help of course if you posted the patch :)
OK, I tried to cook up something very simple. Since I don't know this code, please be indulgent when reading the following patch ;) diff --git a/crypto/api.c b/crypto/api.c index 55af8bb..f067de8 100644 --- a/crypto/api.c +++ b/crypto/api.c @@ -71,6 +71,10 @@ struct crypto_alg *__crypto_alg_lookup(const char *name, u32 type, u32 mask) ((struct crypto_larval *)q)->mask != mask) continue; + if (alg->cra_flags & CRYPTO_ALG_EXCLUSIVE && + atomic_read(&alg->cra_refcnt) > 0) + continue; + exact = !strcmp(q->cra_driver_name, name); fuzzy = !strcmp(q->cra_name, name); if (!exact && !(fuzzy && q->cra_priority > best)) diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 779aa78..278d386 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -41,6 +41,7 @@ #define CRYPTO_ALG_DEAD 0x00000020 #define CRYPTO_ALG_DYING 0x00000040 #define CRYPTO_ALG_ASYNC 0x00000080 +#define CRYPTO_ALG_EXCLUSIVE 0x00000100 /* * Set this bit if and only if the algorithm requires another algorithm of -- Francis - To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html