lkml.org 
[lkml]   [2022]   [May]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[RFC PATCH 3/7] crypto: aead - Add ctx helpers with DMA alignment
    This patch adds helpers to access the aead context structure and
    request context structure with an added alignment for DMA access.

    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    ---

    include/crypto/internal/aead.h | 28 ++++++++++++++++++++++++++++
    1 file changed, 28 insertions(+)

    diff --git a/include/crypto/internal/aead.h b/include/crypto/internal/aead.h
    index 27b7b0224ea6f..be225f3f7fdbf 100644
    --- a/include/crypto/internal/aead.h
    +++ b/include/crypto/internal/aead.h
    @@ -39,6 +39,11 @@ static inline void *crypto_aead_ctx(struct crypto_aead *tfm)
    return crypto_tfm_ctx(&tfm->base);
    }

    +static inline void *crypto_aead_ctx_dma(struct crypto_aead *tfm)
    +{
    + return crypto_tfm_ctx_dma(&tfm->base);
    +}
    +
    static inline struct crypto_instance *aead_crypto_instance(
    struct aead_instance *inst)
    {
    @@ -65,6 +70,20 @@ static inline void *aead_request_ctx(struct aead_request *req)
    return req->__ctx;
    }

    +static inline void *aead_request_ctx_dma(struct aead_request *req)
    +{
    + unsigned int align = 1;
    +
    +#ifdef ARCH_DMA_MINALIGN
    + align = ARCH_DMA_MINALIGN;
    +#endif
    +
    + if (align <= crypto_tfm_ctx_alignment())
    + align = 1;
    +
    + return PTR_ALIGN(aead_request_ctx(req), align);
    +}
    +
    static inline void aead_request_complete(struct aead_request *req, int err)
    {
    req->base.complete(&req->base, err);
    @@ -108,6 +127,15 @@ static inline void crypto_aead_set_reqsize(struct crypto_aead *aead,
    aead->reqsize = reqsize;
    }

    +static inline void crypto_aead_set_reqsize_dma(struct crypto_aead *aead,
    + unsigned int reqsize)
    +{
    +#ifdef ARCH_DMA_MINALIGN
    + reqsize += ARCH_DMA_MINALIGN & ~(crypto_tfm_ctx_alignment() - 1);
    +#endif
    + aead->reqsize = reqsize;
    +}
    +
    static inline void aead_init_queue(struct aead_queue *queue,
    unsigned int max_qlen)
    {
    \
     
     \ /
      Last update: 2022-05-10 13:09    [W:4.178 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site