From: Antoine Ténart Date: Thu, 15 Jun 2017 07:56:27 +0000 (+0200) Subject: crypto: inside-secure - only dequeue when needed X-Git-Tag: v5.15~10839^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5eb0cc66f3a3cad46c2e432342f2a3c20c992b94;p=platform%2Fkernel%2Flinux-starfive.git crypto: inside-secure - only dequeue when needed This force the need_dequeue flag to be unset whenever the dequeue function is called, to avoid calling it when it is not necessary. Signed-off-by: Antoine Tenart Signed-off-by: Herbert Xu --- diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c index 8f195e0..e7f87ac 100644 --- a/drivers/crypto/inside-secure/safexcel.c +++ b/drivers/crypto/inside-secure/safexcel.c @@ -429,6 +429,8 @@ void safexcel_dequeue(struct safexcel_crypto_priv *priv, int ring) struct safexcel_request *request; int ret, nreq = 0, cdesc = 0, rdesc = 0, commands, results; + priv->ring[ring].need_dequeue = false; + do { spin_lock_bh(&priv->ring[ring].queue_lock); backlog = crypto_get_backlog(&priv->ring[ring].queue); @@ -631,10 +633,8 @@ static void safexcel_handle_result_work(struct work_struct *work) safexcel_handle_result_descriptor(priv, data->ring); - if (priv->ring[data->ring].need_dequeue) { - priv->ring[data->ring].need_dequeue = false; + if (priv->ring[data->ring].need_dequeue) safexcel_dequeue(data->priv, data->ring); - } } struct safexcel_ring_irq_data {