summaryrefslogtreecommitdiff
path: root/drivers/crypto/caam/intern.h
diff options
context:
space:
mode:
authorVakul Garg <vakul.garg@nxp.com>2019-03-05 21:03:14 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2019-03-22 15:57:26 +0300
commit16c4dd83a1b2a23004e2728b7c6222592e64e354 (patch)
treecf68af53279ebe79019009eb65ee2e3bdcda087c /drivers/crypto/caam/intern.h
parent9e98c678c2d6ae3a17cb2de55d17f69dddaa231b (diff)
downloadlinux-16c4dd83a1b2a23004e2728b7c6222592e64e354.tar.xz
crypto: caam/jr - optimize job ring enqueue and dequeue operations
Instead of reading job ring's occupancy registers for every req/rsp enqueued/dequeued respectively, we read these registers once and store them in memory. After completing a job enqueue/dequeue, we decrement these values. When these values become zero, we refresh the snapshot of job ring's occupancy registers. This eliminates need of expensive device register read operations for every job enqueued and dequeued and hence makes caam_jr_enqueue() and caam_jr_dequeue() faster. The performance of kernel ipsec improved by about 6% on ls1028 (for frame size 408 bytes). Signed-off-by: Vakul Garg <vakul.garg@nxp.com> Reviewed-by: Horia Geantă <horia.geanta@nxp.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/caam/intern.h')
-rw-r--r--drivers/crypto/caam/intern.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h
index 5869ad58d497..30d5b6c5892f 100644
--- a/drivers/crypto/caam/intern.h
+++ b/drivers/crypto/caam/intern.h
@@ -53,6 +53,7 @@ struct caam_drv_private_jr {
struct caam_jrentry_info *entinfo; /* Alloc'ed 1 per ring entry */
spinlock_t inplock ____cacheline_aligned; /* Input ring index lock */
int inp_ring_write_index; /* Input index "tail" */
+ u32 inpring_avail; /* Number of free entries in input ring */
int head; /* entinfo (s/w ring) head index */
dma_addr_t *inpring; /* Base of input ring, alloc DMA-safe */
spinlock_t outlock ____cacheline_aligned; /* Output ring index lock */