crypto: aead - Add aead_queue interface
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 8 Jul 2015 04:15:14 +0000 (12:15 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 14 Jul 2015 06:56:44 +0000 (14:56 +0800)
This patch adds a type-safe queueing interface for AEAD.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
include/crypto/internal/aead.h

index 4b25471..c3942f4 100644 (file)
@@ -34,6 +34,10 @@ struct crypto_aead_spawn {
        struct crypto_spawn base;
 };
 
+struct aead_queue {
+       struct crypto_queue base;
+};
+
 extern const struct crypto_type crypto_aead_type;
 extern const struct crypto_type crypto_nivaead_type;
 
@@ -157,6 +161,37 @@ static inline unsigned int crypto_aead_maxauthsize(struct crypto_aead *aead)
        return crypto_aead_alg_maxauthsize(crypto_aead_alg(aead));
 }
 
+static inline void aead_init_queue(struct aead_queue *queue,
+                                  unsigned int max_qlen)
+{
+       crypto_init_queue(&queue->base, max_qlen);
+}
+
+static inline int aead_enqueue_request(struct aead_queue *queue,
+                                      struct aead_request *request)
+{
+       return crypto_enqueue_request(&queue->base, &request->base);
+}
+
+static inline struct aead_request *aead_dequeue_request(
+       struct aead_queue *queue)
+{
+       struct crypto_async_request *req;
+
+       req = crypto_dequeue_request(&queue->base);
+
+       return req ? container_of(req, struct aead_request, base) : NULL;
+}
+
+static inline struct aead_request *aead_get_backlog(struct aead_queue *queue)
+{
+       struct crypto_async_request *req;
+
+       req = crypto_get_backlog(&queue->base);
+
+       return req ? container_of(req, struct aead_request, base) : NULL;
+}
+
 int crypto_register_aead(struct aead_alg *alg);
 void crypto_unregister_aead(struct aead_alg *alg);
 int crypto_register_aeads(struct aead_alg *algs, int count);