summaryrefslogtreecommitdiffstats
path: root/drivers/crypto/marvell/cesa.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-09-29 12:52:07 +0200
committerTakashi Iwai <tiwai@suse.de>2015-09-29 12:52:07 +0200
commitd8dfacf8b50c260d79864933ac82a8198a0908a9 (patch)
treeb172eb8643de7bd9f9439c58031b06c98116d86a /drivers/crypto/marvell/cesa.h
parente87359efcaf45efc41dbaa6ec25eb26705300cee (diff)
parentdf075feefbd347f13fba5198294cda619532c237 (diff)
downloadlinux-d8dfacf8b50c260d79864933ac82a8198a0908a9.tar.bz2
Merge branch 'topic/firewire-update' into for-next
Diffstat (limited to 'drivers/crypto/marvell/cesa.h')
-rw-r--r--drivers/crypto/marvell/cesa.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/crypto/marvell/cesa.h b/drivers/crypto/marvell/cesa.h
index b60698b30d30..bc2a55bc35e4 100644
--- a/drivers/crypto/marvell/cesa.h
+++ b/drivers/crypto/marvell/cesa.h
@@ -687,6 +687,33 @@ static inline u32 mv_cesa_get_int_mask(struct mv_cesa_engine *engine)
int mv_cesa_queue_req(struct crypto_async_request *req);
+/*
+ * Helper function that indicates whether a crypto request needs to be
+ * cleaned up or not after being enqueued using mv_cesa_queue_req().
+ */
+static inline int mv_cesa_req_needs_cleanup(struct crypto_async_request *req,
+ int ret)
+{
+ /*
+ * The queue still had some space, the request was queued
+ * normally, so there's no need to clean it up.
+ */
+ if (ret == -EINPROGRESS)
+ return false;
+
+ /*
+ * The queue had not space left, but since the request is
+ * flagged with CRYPTO_TFM_REQ_MAY_BACKLOG, it was added to
+ * the backlog and will be processed later. There's no need to
+ * clean it up.
+ */
+ if (ret == -EBUSY && req->flags & CRYPTO_TFM_REQ_MAY_BACKLOG)
+ return false;
+
+ /* Request wasn't queued, we need to clean it up */
+ return true;
+}
+
/* TDMA functions */
static inline void mv_cesa_req_dma_iter_init(struct mv_cesa_dma_iter *iter,