Now all infrastructure to batch request are in place, it is time to use
it.
Introduce some debug for it also.

Signed-off-by: Corentin Labbe <clabbe.montj...@gmail.com>
---
 .../crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c    | 14 ++++++++------
 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c  |  9 ++++++---
 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h       |  2 ++
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c 
b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
index 41d18c18d1d1..fe5374788304 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
@@ -103,20 +103,22 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine 
*engine, void *async_req
 
        algt = container_of(alg, struct sun8i_ce_alg_template, alg.skcipher);
 
-       dev_dbg(ce->dev, "%s %s %u %x IV(%p %u) key=%u\n", __func__,
+       dev_dbg(ce->dev, "%s %s %u %x IV(%p %u) key=%u slot=%d\n", __func__,
                crypto_tfm_alg_name(areq->base.tfm),
                areq->cryptlen,
                rctx->op_dir, areq->iv, crypto_skcipher_ivsize(tfm),
-               op->keylen);
-
-#ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
-       algt->stat_req++;
-#endif
+               op->keylen, slot);
 
        flow = rctx->flow;
 
        chan = &ce->chanlist[flow];
 
+#ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
+       algt->stat_req++;
+       if (chan->engine->ct + 1 > chan->tmax)
+               chan->tmax = chan->engine->ct + 1;
+#endif
+
        cet = &chan->tl[slot];
        memset(cet, 0, sizeof(struct ce_task));
 
diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c 
b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
index 39bf684c0ff5..7cd98c227357 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
@@ -104,7 +104,7 @@ int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, 
const char *name)
        int err = 0;
 
 #ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
-       ce->chanlist[flow].stat_req++;
+       ce->chanlist[flow].stat_req += ce->chanlist[flow].engine->ct;
 #endif
        /* mark last one */
        ce->chanlist[flow].tl[ce->chanlist[flow].engine->ct - 1].t_common_ctl 
|= cpu_to_le32(CE_COMM_INT);
@@ -287,7 +287,10 @@ static int sun8i_ce_dbgfs_read(struct seq_file *seq, void 
*v)
        int i;
 
        for (i = 0; i < MAXFLOW; i++)
-               seq_printf(seq, "Channel %d: nreq %lu\n", i, 
ce->chanlist[i].stat_req);
+               seq_printf(seq, "Channel %d: nreq %lu tmax %d eqlen=%d/%d\n", i,
+                          ce->chanlist[i].stat_req, ce->chanlist[i].tmax,
+                          ce->chanlist[i].engine->queue.qlen,
+                          ce->chanlist[i].engine->queue.max_qlen);
 
        for (i = 0; i < ARRAY_SIZE(ce_algs); i++) {
                if (!ce_algs[i].ce)
@@ -345,7 +348,7 @@ static int sun8i_ce_allocate_chanlist(struct sun8i_ce_dev 
*ce)
        for (i = 0; i < MAXFLOW; i++) {
                init_completion(&ce->chanlist[i].complete);
 
-               ce->chanlist[i].engine = crypto_engine_alloc_init(ce->dev, 
true);
+               ce->chanlist[i].engine = crypto_engine_alloc_init2(ce->dev, 
true, MAXTASK, MAXTASK * 2);
                if (!ce->chanlist[i].engine) {
                        dev_err(ce->dev, "Cannot allocate engine\n");
                        i--;
diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h 
b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
index 2d3325a13bf1..22bb15fea476 100644
--- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
+++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
@@ -135,6 +135,7 @@ struct ce_task {
  * @t_phy:     Physical address of task
  * @tl:                pointer to the current ce_task for this flow
  * @stat_req:  number of request done by this flow
+ * @tmax:      The maximum number of tasks done in one batch
  */
 struct sun8i_ce_flow {
        struct crypto_engine *engine;
@@ -145,6 +146,7 @@ struct sun8i_ce_flow {
        struct ce_task *tl;
 #ifdef CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG
        unsigned long stat_req;
+       int tmax;
 #endif
 };
 
-- 
2.24.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/linux-sunxi/20200114135936.32422-11-clabbe.montjoie%40gmail.com.

Reply via email to