Messages in this thread Patch in this message | | | Date | Tue, 17 Apr 2007 14:36:09 +0200 | From | "Francis Moreau" <> | Subject | Re: [CRYPTO] is it really optimized ? |
| |
On 4/17/07, Herbert Xu <herbert@gondor.apana.org.au> 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-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |