Lines Matching refs:areq

25 static bool meson_cipher_need_fallback(struct skcipher_request *areq)  in meson_cipher_need_fallback()  argument
27 struct scatterlist *src_sg = areq->src; in meson_cipher_need_fallback()
28 struct scatterlist *dst_sg = areq->dst; in meson_cipher_need_fallback()
30 if (areq->cryptlen == 0) in meson_cipher_need_fallback()
58 static int meson_cipher_do_fallback(struct skcipher_request *areq) in meson_cipher_do_fallback() argument
60 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(areq); in meson_cipher_do_fallback()
62 struct meson_cipher_req_ctx *rctx = skcipher_request_ctx(areq); in meson_cipher_do_fallback()
72 skcipher_request_set_callback(&rctx->fallback_req, areq->base.flags, in meson_cipher_do_fallback()
73 areq->base.complete, areq->base.data); in meson_cipher_do_fallback()
74 skcipher_request_set_crypt(&rctx->fallback_req, areq->src, areq->dst, in meson_cipher_do_fallback()
75 areq->cryptlen, areq->iv); in meson_cipher_do_fallback()
84 static int meson_cipher(struct skcipher_request *areq) in meson_cipher() argument
86 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(areq); in meson_cipher()
88 struct meson_cipher_req_ctx *rctx = skcipher_request_ctx(areq); in meson_cipher()
94 struct scatterlist *src_sg = areq->src; in meson_cipher()
95 struct scatterlist *dst_sg = areq->dst; in meson_cipher()
107 crypto_tfm_alg_name(areq->base.tfm), in meson_cipher()
108 areq->cryptlen, in meson_cipher()
130 if (areq->iv && ivsize > 0) { in meson_cipher()
131 if (ivsize > areq->cryptlen) { in meson_cipher()
132 dev_err(mc->dev, "invalid ivsize=%d vs len=%d\n", ivsize, areq->cryptlen); in meson_cipher()
136 memcpy(bkeyiv + 32, areq->iv, ivsize); in meson_cipher()
144 offset = areq->cryptlen - ivsize; in meson_cipher()
145 scatterwalk_map_and_copy(backup_iv, areq->src, offset, in meson_cipher()
177 if (areq->src == areq->dst) { in meson_cipher()
178 nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), in meson_cipher()
187 nr_sgs = dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), in meson_cipher()
194 nr_sgd = dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst), in meson_cipher()
203 src_sg = areq->src; in meson_cipher()
204 dst_sg = areq->dst; in meson_cipher()
205 len = areq->cryptlen; in meson_cipher()
238 if (areq->src == areq->dst) { in meson_cipher()
239 dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_BIDIRECTIONAL); in meson_cipher()
241 dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE); in meson_cipher()
242 dma_unmap_sg(mc->dev, areq->dst, sg_nents(areq->dst), DMA_FROM_DEVICE); in meson_cipher()
245 if (areq->iv && ivsize > 0) { in meson_cipher()
247 memcpy(areq->iv, backup_iv, ivsize); in meson_cipher()
249 scatterwalk_map_and_copy(areq->iv, areq->dst, in meson_cipher()
250 areq->cryptlen - ivsize, in meson_cipher()
262 void *areq) in meson_handle_cipher_request() argument
265 struct skcipher_request *breq = container_of(areq, struct skcipher_request, base); in meson_handle_cipher_request()
275 int meson_skdecrypt(struct skcipher_request *areq) in meson_skdecrypt() argument
277 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(areq); in meson_skdecrypt()
279 struct meson_cipher_req_ctx *rctx = skcipher_request_ctx(areq); in meson_skdecrypt()
284 if (meson_cipher_need_fallback(areq)) in meson_skdecrypt()
285 return meson_cipher_do_fallback(areq); in meson_skdecrypt()
290 return crypto_transfer_skcipher_request_to_engine(engine, areq); in meson_skdecrypt()
293 int meson_skencrypt(struct skcipher_request *areq) in meson_skencrypt() argument
295 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(areq); in meson_skencrypt()
297 struct meson_cipher_req_ctx *rctx = skcipher_request_ctx(areq); in meson_skencrypt()
302 if (meson_cipher_need_fallback(areq)) in meson_skencrypt()
303 return meson_cipher_do_fallback(areq); in meson_skencrypt()
308 return crypto_transfer_skcipher_request_to_engine(engine, areq); in meson_skencrypt()