Lines Matching refs:req
268 * @req: Crypto request currently handled by the device
282 * req, ctx, sg_src/dst (and copies). This essentially
308 struct skcipher_request *req;
347 * @sgl: sg for joining buffer and req->src scatterlist
348 * @skip: Skip offset in req->src for current op
353 * @buffer: For byte(s) from end of req->src in UPDATE op
457 len = ALIGN(dev->req->cryptlen, AES_BLOCK_SIZE);
479 struct skcipher_request *req = dev->req;
480 struct s5p_aes_reqctx *reqctx = skcipher_request_ctx(req);
485 dev->req->cryptlen);
486 s5p_sg_copy_buf(sg_virt(dev->sg_dst_cpy), dev->req->dst,
487 dev->req->cryptlen, 1);
492 memcpy_fromio(req->iv, dev->aes_ioaddr + SSS_REG_AES_IV_DATA(0), AES_BLOCK_SIZE);
495 memcpy_fromio(req->iv, dev->aes_ioaddr + SSS_REG_AES_CNT_DATA(0), AES_BLOCK_SIZE);
499 static void s5p_aes_complete(struct skcipher_request *req, int err)
501 skcipher_request_complete(req, err);
524 len = ALIGN(dev->req->cryptlen, AES_BLOCK_SIZE);
532 s5p_sg_copy_buf(pages, src, dev->req->cryptlen, 0);
661 struct skcipher_request *req;
733 s5p_aes_complete(dev->req, 0);
758 req = dev->req;
763 s5p_aes_complete(req, err);
782 * @req: AHASH request
784 static void s5p_hash_read_msg(struct ahash_request *req)
786 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
812 * @req: AHASH request
814 static void s5p_hash_write_iv(struct ahash_request *req)
816 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
822 * s5p_hash_copy_result() - copy digest into req->result
823 * @req: AHASH request
825 static void s5p_hash_copy_result(struct ahash_request *req)
827 const struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
829 if (!req->result)
832 memcpy(req->result, ctx->digest, ctx->nregs * HASH_REG_SIZEOF);
1204 * @req: AHASH request
1209 * either req->nbytes or ctx->bufcnt + req->nbytes is > BUFLEN or
1212 static int s5p_hash_prepare_request(struct ahash_request *req, bool update)
1214 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1220 nbytes = req->nbytes;
1235 scatterwalk_map_and_copy(ctx->buffer + ctx->bufcnt, req->src,
1257 /* copy hash_later bytes from end of req->src */
1259 scatterwalk_map_and_copy(ctx->buffer, req->src,
1260 req->nbytes - hash_later,
1265 ret = s5p_hash_prepare_sgs(ctx, req->src, nbytes - hash_later,
1273 scatterwalk_map_and_copy(ctx->dd->xmit_buf, req->src,
1307 * @req: AHASH request
1309 static void s5p_hash_finish(struct ahash_request *req)
1311 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1315 s5p_hash_copy_result(req);
1322 * @req: AHASH request
1325 static void s5p_hash_finish_req(struct ahash_request *req, int err)
1327 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1343 s5p_hash_read_msg(req);
1345 s5p_hash_finish(req);
1356 if (req->base.complete)
1357 ahash_request_complete(req, err);
1363 * @req: AHASH request
1365 * If req!=NULL enqueue it on dd->queue, if FLAGS_BUSY is not set on the
1371 struct ahash_request *req)
1380 if (req)
1381 ret = ahash_enqueue_request(&dd->hash_queue, req);
1401 req = ahash_request_cast(async_req);
1402 dd->hash_req = req;
1403 ctx = ahash_request_ctx(req);
1405 err = s5p_hash_prepare_request(req, ctx->op_update);
1409 dev_dbg(dd->dev, "handling new req, op_update: %u, nbytes: %d\n",
1410 ctx->op_update, req->nbytes);
1414 s5p_hash_write_iv(req); /* restore hash IV */
1427 s5p_hash_finish_req(req, err);
1428 req = NULL;
1473 /* If we are not busy, process next req */
1480 * @req: AHASH request
1485 static int s5p_hash_enqueue(struct ahash_request *req, bool op)
1487 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1488 struct s5p_hash_ctx *tctx = crypto_tfm_ctx(req->base.tfm);
1492 return s5p_hash_handle_queue(tctx->dd, req);
1497 * @req: AHASH request
1504 static int s5p_hash_update(struct ahash_request *req)
1506 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1508 if (!req->nbytes)
1511 if (ctx->bufcnt + req->nbytes <= BUFLEN) {
1512 scatterwalk_map_and_copy(ctx->buffer + ctx->bufcnt, req->src,
1513 0, req->nbytes, 0);
1514 ctx->bufcnt += req->nbytes;
1518 return s5p_hash_enqueue(req, true); /* HASH_OP_UPDATE */
1523 * @req: AHASH request
1525 * Note: in final req->src do not have any data, and req->nbytes can be
1544 static int s5p_hash_final(struct ahash_request *req)
1546 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1553 struct s5p_hash_ctx *tctx = crypto_tfm_ctx(req->base.tfm);
1556 ctx->bufcnt, req->result);
1559 return s5p_hash_enqueue(req, false); /* HASH_OP_FINAL */
1563 * s5p_hash_finup() - process last req->src and calculate digest
1564 * @req: AHASH request containing the last update data
1568 static int s5p_hash_finup(struct ahash_request *req)
1570 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1575 err1 = s5p_hash_update(req);
1584 err2 = s5p_hash_final(req);
1591 * @req: AHASH request
1595 static int s5p_hash_init(struct ahash_request *req)
1597 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1598 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
1634 * s5p_hash_digest - calculate digest from req->src
1635 * @req: AHASH request
1639 static int s5p_hash_digest(struct ahash_request *req)
1641 return s5p_hash_init(req) ?: s5p_hash_finup(req);
1693 * @req: AHASH request
1696 static int s5p_hash_export(struct ahash_request *req, void *out)
1698 const struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1707 * @req: AHASH request
1710 static int s5p_hash_import(struct ahash_request *req, const void *in)
1712 struct s5p_hash_reqctx *ctx = ahash_request_ctx(req);
1713 struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
1844 struct skcipher_request *req)
1850 sg = req->src;
1871 struct skcipher_request *req)
1877 sg = req->dst;
1899 struct skcipher_request *req = dev->req;
1912 iv = req->iv;
1917 ctr = req->iv;
1943 err = s5p_set_indata_start(dev, req);
1947 err = s5p_set_outdata_start(dev, req);
1971 s5p_aes_complete(req, err);
1995 dev->req = skcipher_request_cast(async_req);
1996 dev->ctx = crypto_tfm_ctx(dev->req->base.tfm);
1997 reqctx = skcipher_request_ctx(dev->req);
2003 struct skcipher_request *req)
2009 err = crypto_enqueue_request(&dev->queue, &req->base);
2023 static int s5p_aes_crypt(struct skcipher_request *req, unsigned long mode)
2025 struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req);
2026 struct s5p_aes_reqctx *reqctx = skcipher_request_ctx(req);
2030 if (!req->cryptlen)
2033 if (!IS_ALIGNED(req->cryptlen, AES_BLOCK_SIZE) &&
2041 return s5p_aes_handle_req(dev, req);
2061 static int s5p_aes_ecb_encrypt(struct skcipher_request *req)
2063 return s5p_aes_crypt(req, 0);
2066 static int s5p_aes_ecb_decrypt(struct skcipher_request *req)
2068 return s5p_aes_crypt(req, FLAGS_AES_DECRYPT);
2071 static int s5p_aes_cbc_encrypt(struct skcipher_request *req)
2073 return s5p_aes_crypt(req, FLAGS_AES_CBC);
2076 static int s5p_aes_cbc_decrypt(struct skcipher_request *req)
2078 return s5p_aes_crypt(req, FLAGS_AES_DECRYPT | FLAGS_AES_CBC);
2081 static int s5p_aes_ctr_crypt(struct skcipher_request *req)
2083 return s5p_aes_crypt(req, FLAGS_AES_CTR);