crypto: hisilicon/qm - fix judgement of queue is full
authorHui Tang <tanghui20@huawei.com>
Sat, 15 Aug 2020 09:56:11 +0000 (17:56 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 21 Aug 2020 04:47:51 +0000 (14:47 +1000)
The queue depth is 1024, so the condition for judging the queue full
should be 1023, otherwise the hardware cannot judge whether the queue
is empty or full.

Fixes: 263c9959c937("crypto: hisilicon - add queue management driver...")
Signed-off-by: Hui Tang <tanghui20@huawei.com>
Signed-off-by: Yang Shen <shenyang39@huawei.com>
Reviewed-by: Zhou Wang <wangzhou1@hisilicon.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/hisilicon/qm.c

index 95a1b6c..b9bff96 100644 (file)
@@ -1647,7 +1647,7 @@ static void *qm_get_avail_sqe(struct hisi_qp *qp)
        struct hisi_qp_status *qp_status = &qp->qp_status;
        u16 sq_tail = qp_status->sq_tail;
 
-       if (unlikely(atomic_read(&qp->qp_status.used) == QM_Q_DEPTH))
+       if (unlikely(atomic_read(&qp->qp_status.used) == QM_Q_DEPTH - 1))
                return NULL;
 
        return qp->sqe + sq_tail * qp->qm->sqe_size;