Lines Matching refs:rctx
145 struct iproc_reqctx_s *rctx, in spu_ablkcipher_rx_sg_create() argument
151 struct iproc_ctx_s *ctx = rctx->ctx; in spu_ablkcipher_rx_sg_create()
155 rctx->gfp); in spu_ablkcipher_rx_sg_create()
162 sg_set_buf(sg++, rctx->msg_buf.spu_resp_hdr, ctx->spu_resp_hdr_len); in spu_ablkcipher_rx_sg_create()
167 sg_set_buf(sg++, rctx->msg_buf.c.supdt_tweak, in spu_ablkcipher_rx_sg_create()
171 datalen = spu_msg_sg_add(&sg, &rctx->dst_sg, &rctx->dst_skip, in spu_ablkcipher_rx_sg_create()
172 rctx->dst_nents, chunksize); in spu_ablkcipher_rx_sg_create()
181 sg_set_buf(sg++, rctx->msg_buf.c.supdt_tweak, SPU_SUPDT_LEN); in spu_ablkcipher_rx_sg_create()
184 sg_set_buf(sg++, rctx->msg_buf.rx_stat_pad, stat_pad_len); in spu_ablkcipher_rx_sg_create()
186 memset(rctx->msg_buf.rx_stat, 0, SPU_RX_STATUS_LEN); in spu_ablkcipher_rx_sg_create()
187 sg_set_buf(sg, rctx->msg_buf.rx_stat, spu->spu_rx_status_len()); in spu_ablkcipher_rx_sg_create()
213 struct iproc_reqctx_s *rctx, in spu_ablkcipher_tx_sg_create() argument
218 struct iproc_ctx_s *ctx = rctx->ctx; in spu_ablkcipher_tx_sg_create()
223 rctx->gfp); in spu_ablkcipher_tx_sg_create()
230 sg_set_buf(sg++, rctx->msg_buf.bcm_spu_req_hdr, in spu_ablkcipher_tx_sg_create()
236 sg_set_buf(sg++, rctx->msg_buf.iv_ctr, SPU_XTS_TWEAK_SIZE); in spu_ablkcipher_tx_sg_create()
239 datalen = spu_msg_sg_add(&sg, &rctx->src_sg, &rctx->src_skip, in spu_ablkcipher_tx_sg_create()
240 rctx->src_nents, chunksize); in spu_ablkcipher_tx_sg_create()
248 sg_set_buf(sg++, rctx->msg_buf.spu_req_pad, pad_len); in spu_ablkcipher_tx_sg_create()
252 memset(rctx->msg_buf.tx_stat, 0, stat_len); in spu_ablkcipher_tx_sg_create()
253 sg_set_buf(sg, rctx->msg_buf.tx_stat, stat_len); in spu_ablkcipher_tx_sg_create()
314 static int handle_ablkcipher_req(struct iproc_reqctx_s *rctx) in handle_ablkcipher_req() argument
317 struct crypto_async_request *areq = rctx->parent; in handle_ablkcipher_req()
320 struct iproc_ctx_s *ctx = rctx->ctx; in handle_ablkcipher_req()
346 cipher_parms.iv_len = rctx->iv_ctr_len; in handle_ablkcipher_req()
348 mssg = &rctx->mb_mssg; in handle_ablkcipher_req()
349 chunk_start = rctx->src_sent; in handle_ablkcipher_req()
350 remaining = rctx->total_todo - chunk_start; in handle_ablkcipher_req()
359 rctx->src_sent += chunksize; in handle_ablkcipher_req()
360 rctx->total_sent = rctx->src_sent; in handle_ablkcipher_req()
363 rctx->src_nents = spu_sg_count(rctx->src_sg, rctx->src_skip, chunksize); in handle_ablkcipher_req()
364 rctx->dst_nents = spu_sg_count(rctx->dst_sg, rctx->dst_skip, chunksize); in handle_ablkcipher_req()
367 rctx->is_encrypt && chunk_start) in handle_ablkcipher_req()
372 sg_copy_part_to_buf(req->dst, rctx->msg_buf.iv_ctr, in handle_ablkcipher_req()
373 rctx->iv_ctr_len, in handle_ablkcipher_req()
374 chunk_start - rctx->iv_ctr_len); in handle_ablkcipher_req()
376 if (rctx->iv_ctr_len) { in handle_ablkcipher_req()
378 __builtin_memcpy(local_iv_ctr, rctx->msg_buf.iv_ctr, in handle_ablkcipher_req()
379 rctx->iv_ctr_len); in handle_ablkcipher_req()
383 !rctx->is_encrypt) { in handle_ablkcipher_req()
388 sg_copy_part_to_buf(req->src, rctx->msg_buf.iv_ctr, in handle_ablkcipher_req()
389 rctx->iv_ctr_len, in handle_ablkcipher_req()
390 rctx->src_sent - rctx->iv_ctr_len); in handle_ablkcipher_req()
401 add_to_ctr(rctx->msg_buf.iv_ctr, chunksize >> 4); in handle_ablkcipher_req()
412 cipher_parms.key_buf = rctx->msg_buf.c.supdt_tweak; in handle_ablkcipher_req()
415 } else if (!rctx->is_encrypt) { in handle_ablkcipher_req()
433 rctx->src_sent, chunk_start, remaining, chunksize); in handle_ablkcipher_req()
436 memcpy(rctx->msg_buf.bcm_spu_req_hdr, ctx->bcm_spu_req_hdr, in handle_ablkcipher_req()
437 sizeof(rctx->msg_buf.bcm_spu_req_hdr)); in handle_ablkcipher_req()
444 spu->spu_cipher_req_finish(rctx->msg_buf.bcm_spu_req_hdr + BCM_HDR_LEN, in handle_ablkcipher_req()
445 ctx->spu_req_hdr_len, !(rctx->is_encrypt), in handle_ablkcipher_req()
456 spu->spu_request_pad(rctx->msg_buf.spu_req_pad, 0, in handle_ablkcipher_req()
458 rctx->total_sent, stat_pad_len); in handle_ablkcipher_req()
461 spu->spu_dump_msg_hdr(rctx->msg_buf.bcm_spu_req_hdr + BCM_HDR_LEN, in handle_ablkcipher_req()
464 dump_sg(rctx->src_sg, rctx->src_skip, chunksize); in handle_ablkcipher_req()
465 packet_dump(" pad: ", rctx->msg_buf.spu_req_pad, pad_len); in handle_ablkcipher_req()
473 mssg->ctx = rctx; /* Will be returned in response */ in handle_ablkcipher_req()
476 rx_frag_num += rctx->dst_nents; in handle_ablkcipher_req()
482 err = spu_ablkcipher_rx_sg_create(mssg, rctx, rx_frag_num, chunksize, in handle_ablkcipher_req()
488 tx_frag_num += rctx->src_nents; in handle_ablkcipher_req()
496 err = spu_ablkcipher_tx_sg_create(mssg, rctx, tx_frag_num, chunksize, in handle_ablkcipher_req()
501 err = mailbox_send_message(mssg, req->base.flags, rctx->chan_idx); in handle_ablkcipher_req()
513 static void handle_ablkcipher_resp(struct iproc_reqctx_s *rctx) in handle_ablkcipher_resp() argument
517 struct crypto_async_request *areq = rctx->parent; in handle_ablkcipher_resp()
520 struct iproc_ctx_s *ctx = rctx->ctx; in handle_ablkcipher_resp()
524 payload_len = spu->spu_payload_length(rctx->msg_buf.spu_resp_hdr); in handle_ablkcipher_resp()
538 __func__, rctx->total_received, payload_len); in handle_ablkcipher_resp()
540 dump_sg(req->dst, rctx->total_received, payload_len); in handle_ablkcipher_resp()
542 packet_dump(" supdt ", rctx->msg_buf.c.supdt_tweak, in handle_ablkcipher_resp()
545 rctx->total_received += payload_len; in handle_ablkcipher_resp()
546 if (rctx->total_received == rctx->total_todo) { in handle_ablkcipher_resp()
574 struct iproc_reqctx_s *rctx, in spu_ahash_rx_sg_create() argument
580 struct iproc_ctx_s *ctx = rctx->ctx; in spu_ahash_rx_sg_create()
583 rctx->gfp); in spu_ahash_rx_sg_create()
590 sg_set_buf(sg++, rctx->msg_buf.spu_resp_hdr, ctx->spu_resp_hdr_len); in spu_ahash_rx_sg_create()
593 sg_set_buf(sg++, rctx->msg_buf.digest, digestsize); in spu_ahash_rx_sg_create()
596 sg_set_buf(sg++, rctx->msg_buf.rx_stat_pad, stat_pad_len); in spu_ahash_rx_sg_create()
598 memset(rctx->msg_buf.rx_stat, 0, SPU_RX_STATUS_LEN); in spu_ahash_rx_sg_create()
599 sg_set_buf(sg, rctx->msg_buf.rx_stat, spu->spu_rx_status_len()); in spu_ahash_rx_sg_create()
626 struct iproc_reqctx_s *rctx, in spu_ahash_tx_sg_create() argument
638 rctx->gfp); in spu_ahash_tx_sg_create()
645 sg_set_buf(sg++, rctx->msg_buf.bcm_spu_req_hdr, in spu_ahash_tx_sg_create()
649 sg_set_buf(sg++, rctx->hash_carry, hash_carry_len); in spu_ahash_tx_sg_create()
653 datalen = spu_msg_sg_add(&sg, &rctx->src_sg, &rctx->src_skip, in spu_ahash_tx_sg_create()
654 rctx->src_nents, new_data_len); in spu_ahash_tx_sg_create()
663 sg_set_buf(sg++, rctx->msg_buf.spu_req_pad, pad_len); in spu_ahash_tx_sg_create()
667 memset(rctx->msg_buf.tx_stat, 0, stat_len); in spu_ahash_tx_sg_create()
668 sg_set_buf(sg, rctx->msg_buf.tx_stat, stat_len); in spu_ahash_tx_sg_create()
700 static int handle_ahash_req(struct iproc_reqctx_s *rctx) in handle_ahash_req() argument
703 struct crypto_async_request *areq = rctx->parent; in handle_ahash_req()
708 struct iproc_ctx_s *ctx = rctx->ctx; in handle_ahash_req()
743 rctx->total_todo, rctx->total_sent); in handle_ahash_req()
766 mssg = &rctx->mb_mssg; in handle_ahash_req()
767 chunk_start = rctx->src_sent; in handle_ahash_req()
773 nbytes_to_hash = rctx->total_todo - rctx->total_sent; in handle_ahash_req()
784 if (!rctx->is_final) { in handle_ahash_req()
785 u8 *dest = rctx->hash_carry + rctx->hash_carry_len; in handle_ahash_req()
794 new_len = rem - rctx->hash_carry_len; in handle_ahash_req()
796 rctx->src_sent); in handle_ahash_req()
797 rctx->hash_carry_len = rem; in handle_ahash_req()
799 rctx->hash_carry_len); in handle_ahash_req()
801 rctx->hash_carry, in handle_ahash_req()
802 rctx->hash_carry_len); in handle_ahash_req()
809 local_nbuf = rctx->hash_carry_len; in handle_ahash_req()
810 rctx->hash_carry_len = 0; in handle_ahash_req()
816 rctx->src_nents = spu_sg_count(rctx->src_sg, rctx->src_skip, in handle_ahash_req()
823 hash_parms.type = spu->spu_hash_type(rctx->total_sent); in handle_ahash_req()
830 rctx->total_sent += chunksize; in handle_ahash_req()
832 rctx->src_sent += new_data_len; in handle_ahash_req()
834 if ((rctx->total_sent == rctx->total_todo) && rctx->is_final) in handle_ahash_req()
846 hash_parms.key_buf = rctx->incr_hash; in handle_ahash_req()
853 __func__, rctx->is_final, local_nbuf); in handle_ahash_req()
863 memcpy(rctx->msg_buf.bcm_spu_req_hdr, BCMHEADER, BCM_HDR_LEN); in handle_ahash_req()
866 spu_hdr_len = spu->spu_create_request(rctx->msg_buf.bcm_spu_req_hdr + in handle_ahash_req()
891 spu->spu_request_pad(rctx->msg_buf.spu_req_pad, data_pad_len, in handle_ahash_req()
893 ctx->auth.mode, rctx->total_sent, in handle_ahash_req()
897 spu->spu_dump_msg_hdr(rctx->msg_buf.bcm_spu_req_hdr + BCM_HDR_LEN, in handle_ahash_req()
899 packet_dump(" prebuf: ", rctx->hash_carry, local_nbuf); in handle_ahash_req()
901 dump_sg(rctx->src_sg, rctx->src_skip, new_data_len); in handle_ahash_req()
902 packet_dump(" pad: ", rctx->msg_buf.spu_req_pad, pad_len); in handle_ahash_req()
910 mssg->ctx = rctx; /* Will be returned in response */ in handle_ahash_req()
913 err = spu_ahash_rx_sg_create(mssg, rctx, rx_frag_num, digestsize, in handle_ahash_req()
919 tx_frag_num += rctx->src_nents; in handle_ahash_req()
922 err = spu_ahash_tx_sg_create(mssg, rctx, tx_frag_num, spu_hdr_len, in handle_ahash_req()
927 err = mailbox_send_message(mssg, req->base.flags, rctx->chan_idx); in handle_ahash_req()
991 static int ahash_req_done(struct iproc_reqctx_s *rctx) in ahash_req_done() argument
994 struct crypto_async_request *areq = rctx->parent; in ahash_req_done()
996 struct iproc_ctx_s *ctx = rctx->ctx; in ahash_req_done()
999 memcpy(req->result, rctx->msg_buf.digest, ctx->digestsize); in ahash_req_done()
1017 if (rctx->is_sw_hmac) { in ahash_req_done()
1024 if (rctx->is_sw_hmac || ctx->auth.mode == HASH_MODE_HMAC) { in ahash_req_done()
1041 static void handle_ahash_resp(struct iproc_reqctx_s *rctx) in handle_ahash_resp() argument
1043 struct iproc_ctx_s *ctx = rctx->ctx; in handle_ahash_resp()
1045 struct crypto_async_request *areq = rctx->parent; in handle_ahash_resp()
1055 memcpy(rctx->incr_hash, rctx->msg_buf.digest, MAX_DIGEST_SIZE); in handle_ahash_resp()
1062 if (rctx->is_final && (rctx->total_sent == rctx->total_todo)) in handle_ahash_resp()
1063 ahash_req_done(rctx); in handle_ahash_resp()
1092 struct iproc_reqctx_s *rctx, in spu_aead_rx_sg_create() argument
1100 struct iproc_ctx_s *ctx = rctx->ctx; in spu_aead_rx_sg_create()
1115 rctx->is_encrypt); in spu_aead_rx_sg_create()
1129 rctx->gfp); in spu_aead_rx_sg_create()
1137 sg_set_buf(sg++, rctx->msg_buf.spu_resp_hdr, ctx->spu_resp_hdr_len); in spu_aead_rx_sg_create()
1144 memset(rctx->msg_buf.a.resp_aad, 0, assoc_buf_len); in spu_aead_rx_sg_create()
1145 sg_set_buf(sg++, rctx->msg_buf.a.resp_aad, assoc_buf_len); in spu_aead_rx_sg_create()
1153 datalen = spu_msg_sg_add(&sg, &rctx->dst_sg, &rctx->dst_skip, in spu_aead_rx_sg_create()
1154 rctx->dst_nents, resp_len); in spu_aead_rx_sg_create()
1164 memset(rctx->msg_buf.a.gcmpad, 0, data_padlen); in spu_aead_rx_sg_create()
1165 sg_set_buf(sg++, rctx->msg_buf.a.gcmpad, data_padlen); in spu_aead_rx_sg_create()
1169 sg_set_buf(sg++, rctx->msg_buf.digest, digestsize); in spu_aead_rx_sg_create()
1173 memset(rctx->msg_buf.rx_stat_pad, 0, stat_pad_len); in spu_aead_rx_sg_create()
1174 sg_set_buf(sg++, rctx->msg_buf.rx_stat_pad, stat_pad_len); in spu_aead_rx_sg_create()
1177 memset(rctx->msg_buf.rx_stat, 0, SPU_RX_STATUS_LEN); in spu_aead_rx_sg_create()
1178 sg_set_buf(sg, rctx->msg_buf.rx_stat, spu->spu_rx_status_len()); in spu_aead_rx_sg_create()
1211 struct iproc_reqctx_s *rctx, in spu_aead_tx_sg_create() argument
1224 struct iproc_ctx_s *ctx = rctx->ctx; in spu_aead_tx_sg_create()
1231 rctx->gfp); in spu_aead_tx_sg_create()
1238 sg_set_buf(sg++, rctx->msg_buf.bcm_spu_req_hdr, in spu_aead_tx_sg_create()
1253 sg_set_buf(sg++, rctx->msg_buf.iv_ctr, aead_iv_len); in spu_aead_tx_sg_create()
1256 memset(rctx->msg_buf.a.req_aad_pad, 0, aad_pad_len); in spu_aead_tx_sg_create()
1257 sg_set_buf(sg++, rctx->msg_buf.a.req_aad_pad, aad_pad_len); in spu_aead_tx_sg_create()
1265 written = spu_msg_sg_add(&sg, &rctx->src_sg, &rctx->src_skip, in spu_aead_tx_sg_create()
1266 rctx->src_nents, datalen); in spu_aead_tx_sg_create()
1275 memset(rctx->msg_buf.spu_req_pad, 0, pad_len); in spu_aead_tx_sg_create()
1276 sg_set_buf(sg++, rctx->msg_buf.spu_req_pad, pad_len); in spu_aead_tx_sg_create()
1280 sg_set_buf(sg++, rctx->msg_buf.digest, ctx->digestsize); in spu_aead_tx_sg_create()
1284 memset(rctx->msg_buf.tx_stat, 0, stat_len); in spu_aead_tx_sg_create()
1285 sg_set_buf(sg, rctx->msg_buf.tx_stat, stat_len); in spu_aead_tx_sg_create()
1307 static int handle_aead_req(struct iproc_reqctx_s *rctx) in handle_aead_req() argument
1310 struct crypto_async_request *areq = rctx->parent; in handle_aead_req()
1313 struct iproc_ctx_s *ctx = rctx->ctx; in handle_aead_req()
1336 chunksize = rctx->total_todo; in handle_aead_req()
1344 req_opts.is_inbound = !(rctx->is_encrypt); in handle_aead_req()
1354 cipher_parms.iv_buf = rctx->msg_buf.iv_ctr; in handle_aead_req()
1355 cipher_parms.iv_len = rctx->iv_ctr_len; in handle_aead_req()
1377 if (rctx->is_encrypt) { in handle_aead_req()
1392 rctx->src_nents = spu_sg_count(rctx->src_sg, rctx->src_skip, chunksize); in handle_aead_req()
1393 rctx->dst_nents = spu_sg_count(rctx->dst_sg, rctx->dst_skip, chunksize); in handle_aead_req()
1395 assoc_nents = spu_sg_count(rctx->assoc, 0, in handle_aead_req()
1398 mssg = &rctx->mb_mssg; in handle_aead_req()
1400 rctx->total_sent = chunksize; in handle_aead_req()
1401 rctx->src_sent = chunksize; in handle_aead_req()
1405 rctx->is_encrypt)) in handle_aead_req()
1409 rctx->iv_ctr_len); in handle_aead_req()
1435 if (!rctx->is_encrypt) in handle_aead_req()
1442 chunksize, rctx->is_encrypt, in handle_aead_req()
1452 if (!rctx->is_encrypt) in handle_aead_req()
1465 if (spu_req_incl_icv(ctx->cipher.mode, rctx->is_encrypt)) { in handle_aead_req()
1469 sg_copy_part_to_buf(req->src, rctx->msg_buf.digest, digestsize, in handle_aead_req()
1470 req->assoclen + rctx->total_sent - in handle_aead_req()
1479 memcpy(rctx->msg_buf.bcm_spu_req_hdr, BCMHEADER, BCM_HDR_LEN); in handle_aead_req()
1481 spu_hdr_len = spu->spu_create_request(rctx->msg_buf.bcm_spu_req_hdr + in handle_aead_req()
1498 spu->spu_request_pad(rctx->msg_buf.spu_req_pad, in handle_aead_req()
1501 rctx->total_sent, stat_pad_len); in handle_aead_req()
1504 spu->spu_dump_msg_hdr(rctx->msg_buf.bcm_spu_req_hdr + BCM_HDR_LEN, in handle_aead_req()
1506 dump_sg(rctx->assoc, 0, aead_parms.assoc_size); in handle_aead_req()
1507 packet_dump(" aead iv: ", rctx->msg_buf.iv_ctr, aead_parms.iv_len); in handle_aead_req()
1509 dump_sg(rctx->src_sg, rctx->src_skip, chunksize); in handle_aead_req()
1510 packet_dump(" pad: ", rctx->msg_buf.spu_req_pad, pad_len); in handle_aead_req()
1518 mssg->ctx = rctx; /* Will be returned in response */ in handle_aead_req()
1521 rx_frag_num += rctx->dst_nents; in handle_aead_req()
1532 (ctx->cipher.mode == CIPHER_MODE_CCM)) && !rctx->is_encrypt) { in handle_aead_req()
1540 rx_frag_num -= rctx->dst_nents; in handle_aead_req()
1543 err = spu_aead_rx_sg_create(mssg, req, rctx, rx_frag_num, in handle_aead_req()
1551 tx_frag_num += rctx->src_nents; in handle_aead_req()
1559 err = spu_aead_tx_sg_create(mssg, rctx, tx_frag_num, spu_hdr_len, in handle_aead_req()
1560 rctx->assoc, aead_parms.assoc_size, in handle_aead_req()
1566 err = mailbox_send_message(mssg, req->base.flags, rctx->chan_idx); in handle_aead_req()
1577 static void handle_aead_resp(struct iproc_reqctx_s *rctx) in handle_aead_resp() argument
1580 struct crypto_async_request *areq = rctx->parent; in handle_aead_resp()
1583 struct iproc_ctx_s *ctx = rctx->ctx; in handle_aead_resp()
1589 payload_len = spu->spu_payload_length(rctx->msg_buf.spu_resp_hdr); in handle_aead_resp()
1596 packet_dump(" assoc_data ", rctx->msg_buf.a.resp_aad, in handle_aead_resp()
1605 if (rctx->is_encrypt) { in handle_aead_resp()
1606 icv_offset = req->assoclen + rctx->total_sent; in handle_aead_resp()
1607 packet_dump(" ICV: ", rctx->msg_buf.digest, ctx->digestsize); in handle_aead_resp()
1609 sg_copy_part_from_buf(req->dst, rctx->msg_buf.digest, in handle_aead_resp()
1637 static void spu_chunk_cleanup(struct iproc_reqctx_s *rctx) in spu_chunk_cleanup() argument
1640 struct brcm_message *mssg = &rctx->mb_mssg; in spu_chunk_cleanup()
1655 static void finish_req(struct iproc_reqctx_s *rctx, int err) in finish_req() argument
1657 struct crypto_async_request *areq = rctx->parent; in finish_req()
1662 spu_chunk_cleanup(rctx); in finish_req()
1677 struct iproc_reqctx_s *rctx; in spu_rx_callback() local
1682 rctx = mssg->ctx; in spu_rx_callback()
1683 if (unlikely(!rctx)) { in spu_rx_callback()
1689 areq = rctx->parent; in spu_rx_callback()
1690 ctx = rctx->ctx; in spu_rx_callback()
1693 err = spu->spu_status_process(rctx->msg_buf.rx_stat); in spu_rx_callback()
1702 switch (rctx->ctx->alg->type) { in spu_rx_callback()
1704 handle_ablkcipher_resp(rctx); in spu_rx_callback()
1707 handle_ahash_resp(rctx); in spu_rx_callback()
1710 handle_aead_resp(rctx); in spu_rx_callback()
1721 if (rctx->total_sent < rctx->total_todo) { in spu_rx_callback()
1723 spu_chunk_cleanup(rctx); in spu_rx_callback()
1725 switch (rctx->ctx->alg->type) { in spu_rx_callback()
1727 err = handle_ablkcipher_req(rctx); in spu_rx_callback()
1730 err = handle_ahash_req(rctx); in spu_rx_callback()
1739 err = handle_aead_req(rctx); in spu_rx_callback()
1751 finish_req(rctx, err); in spu_rx_callback()
1767 struct iproc_reqctx_s *rctx = ablkcipher_request_ctx(req); in ablkcipher_enqueue() local
1774 rctx->gfp = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | in ablkcipher_enqueue()
1776 rctx->parent = &req->base; in ablkcipher_enqueue()
1777 rctx->is_encrypt = encrypt; in ablkcipher_enqueue()
1778 rctx->bd_suppress = false; in ablkcipher_enqueue()
1779 rctx->total_todo = req->nbytes; in ablkcipher_enqueue()
1780 rctx->src_sent = 0; in ablkcipher_enqueue()
1781 rctx->total_sent = 0; in ablkcipher_enqueue()
1782 rctx->total_received = 0; in ablkcipher_enqueue()
1783 rctx->ctx = ctx; in ablkcipher_enqueue()
1786 rctx->src_sg = req->src; in ablkcipher_enqueue()
1787 rctx->src_nents = 0; in ablkcipher_enqueue()
1788 rctx->src_skip = 0; in ablkcipher_enqueue()
1789 rctx->dst_sg = req->dst; in ablkcipher_enqueue()
1790 rctx->dst_nents = 0; in ablkcipher_enqueue()
1791 rctx->dst_skip = 0; in ablkcipher_enqueue()
1799 rctx->iv_ctr_len = in ablkcipher_enqueue()
1801 memcpy(rctx->msg_buf.iv_ctr, req->info, rctx->iv_ctr_len); in ablkcipher_enqueue()
1803 rctx->iv_ctr_len = 0; in ablkcipher_enqueue()
1807 rctx->chan_idx = select_channel(); in ablkcipher_enqueue()
1808 err = handle_ablkcipher_req(rctx); in ablkcipher_enqueue()
1811 spu_chunk_cleanup(rctx); in ablkcipher_enqueue()
2003 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in ahash_enqueue() local
2011 rctx->gfp = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | in ahash_enqueue()
2013 rctx->parent = &req->base; in ahash_enqueue()
2014 rctx->ctx = ctx; in ahash_enqueue()
2015 rctx->bd_suppress = true; in ahash_enqueue()
2016 memset(&rctx->mb_mssg, 0, sizeof(struct brcm_message)); in ahash_enqueue()
2019 rctx->src_sg = req->src; in ahash_enqueue()
2020 rctx->src_skip = 0; in ahash_enqueue()
2021 rctx->src_nents = 0; in ahash_enqueue()
2022 rctx->dst_sg = NULL; in ahash_enqueue()
2023 rctx->dst_skip = 0; in ahash_enqueue()
2024 rctx->dst_nents = 0; in ahash_enqueue()
2027 if ((rctx->is_final == 1) && (rctx->total_todo == 0) && in ahash_enqueue()
2031 rctx->is_final ? "" : "non-", alg_name); in ahash_enqueue()
2040 rctx->chan_idx = select_channel(); in ahash_enqueue()
2042 err = handle_ahash_req(rctx); in ahash_enqueue()
2045 spu_chunk_cleanup(rctx); in ahash_enqueue()
2060 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in __ahash_init() local
2067 rctx->hash_carry_len = 0; in __ahash_init()
2068 rctx->is_final = 0; in __ahash_init()
2070 rctx->total_todo = 0; in __ahash_init()
2071 rctx->src_sent = 0; in __ahash_init()
2072 rctx->total_sent = 0; in __ahash_init()
2073 rctx->total_received = 0; in __ahash_init()
2079 rctx->is_sw_hmac = false; in __ahash_init()
2177 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in __ahash_update() local
2183 rctx->total_todo += req->nbytes; in __ahash_update()
2184 rctx->src_sent = 0; in __ahash_update()
2235 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in __ahash_final() local
2239 rctx->is_final = 1; in __ahash_final()
2272 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in __ahash_finup() local
2276 rctx->total_todo += req->nbytes; in __ahash_finup()
2277 rctx->src_sent = 0; in __ahash_finup()
2278 rctx->is_final = 1; in __ahash_finup()
2387 const struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in ahash_export() local
2390 spu_exp->total_todo = rctx->total_todo; in ahash_export()
2391 spu_exp->total_sent = rctx->total_sent; in ahash_export()
2392 spu_exp->is_sw_hmac = rctx->is_sw_hmac; in ahash_export()
2393 memcpy(spu_exp->hash_carry, rctx->hash_carry, sizeof(rctx->hash_carry)); in ahash_export()
2394 spu_exp->hash_carry_len = rctx->hash_carry_len; in ahash_export()
2395 memcpy(spu_exp->incr_hash, rctx->incr_hash, sizeof(rctx->incr_hash)); in ahash_export()
2402 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in ahash_import() local
2405 rctx->total_todo = spu_exp->total_todo; in ahash_import()
2406 rctx->total_sent = spu_exp->total_sent; in ahash_import()
2407 rctx->is_sw_hmac = spu_exp->is_sw_hmac; in ahash_import()
2408 memcpy(rctx->hash_carry, spu_exp->hash_carry, sizeof(rctx->hash_carry)); in ahash_import()
2409 rctx->hash_carry_len = spu_exp->hash_carry_len; in ahash_import()
2410 memcpy(rctx->incr_hash, spu_exp->incr_hash, sizeof(rctx->incr_hash)); in ahash_import()
2517 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in ahash_hmac_init() local
2530 rctx->is_sw_hmac = true; in ahash_hmac_init()
2533 memcpy(rctx->hash_carry, ctx->ipad, blocksize); in ahash_hmac_init()
2534 rctx->hash_carry_len = blocksize; in ahash_hmac_init()
2535 rctx->total_todo += blocksize; in ahash_hmac_init()
2567 struct iproc_reqctx_s *rctx = ahash_request_ctx(req); in ahash_hmac_digest() local
2587 rctx->is_sw_hmac = false; in ahash_hmac_digest()
2590 rctx->is_sw_hmac = true; in ahash_hmac_digest()
2593 memcpy(rctx->hash_carry, ctx->ipad, blocksize); in ahash_hmac_digest()
2594 rctx->hash_carry_len = blocksize; in ahash_hmac_digest()
2595 rctx->total_todo += blocksize; in ahash_hmac_digest()
2605 struct iproc_reqctx_s *rctx = aead_request_ctx(req); in aead_need_fallback() local
2618 if ((rctx->is_encrypt && (req->cryptlen == 0)) || in aead_need_fallback()
2619 (!rctx->is_encrypt && (req->cryptlen == ctx->digestsize))) { in aead_need_fallback()
2663 struct iproc_reqctx_s *rctx = aead_request_ctx(req); in aead_complete() local
2670 areq->complete = rctx->old_complete; in aead_complete()
2671 areq->data = rctx->old_data; in aead_complete()
2680 struct iproc_reqctx_s *rctx = aead_request_ctx(req); in aead_do_fallback() local
2689 rctx->old_tfm = tfm; in aead_do_fallback()
2695 rctx->old_complete = req->base.complete; in aead_do_fallback()
2696 rctx->old_data = req->base.data; in aead_do_fallback()
2708 rctx->old_complete, req); in aead_do_fallback()
2709 req->base.data = rctx->old_data; in aead_do_fallback()
2723 struct iproc_reqctx_s *rctx = aead_request_ctx(req); in aead_enqueue() local
2737 rctx->gfp = (req->base.flags & (CRYPTO_TFM_REQ_MAY_BACKLOG | in aead_enqueue()
2739 rctx->parent = &req->base; in aead_enqueue()
2740 rctx->is_encrypt = is_encrypt; in aead_enqueue()
2741 rctx->bd_suppress = false; in aead_enqueue()
2742 rctx->total_todo = req->cryptlen; in aead_enqueue()
2743 rctx->src_sent = 0; in aead_enqueue()
2744 rctx->total_sent = 0; in aead_enqueue()
2745 rctx->total_received = 0; in aead_enqueue()
2746 rctx->is_sw_hmac = false; in aead_enqueue()
2747 rctx->ctx = ctx; in aead_enqueue()
2748 memset(&rctx->mb_mssg, 0, sizeof(struct brcm_message)); in aead_enqueue()
2751 rctx->assoc = req->src; in aead_enqueue()
2758 if (spu_sg_at_offset(req->src, req->assoclen, &rctx->src_sg, in aead_enqueue()
2759 &rctx->src_skip) < 0) { in aead_enqueue()
2765 rctx->src_nents = 0; in aead_enqueue()
2766 rctx->dst_nents = 0; in aead_enqueue()
2768 rctx->dst_sg = rctx->src_sg; in aead_enqueue()
2769 rctx->dst_skip = rctx->src_skip; in aead_enqueue()
2776 if (spu_sg_at_offset(req->dst, req->assoclen, &rctx->dst_sg, in aead_enqueue()
2777 &rctx->dst_skip) < 0) { in aead_enqueue()
2789 rctx->iv_ctr_len = in aead_enqueue()
2793 rctx->iv_ctr_len = CCM_AES_IV_SIZE; in aead_enqueue()
2795 rctx->iv_ctr_len = 0; in aead_enqueue()
2798 rctx->hash_carry_len = 0; in aead_enqueue()
2802 rctx->src_sg, rctx->src_skip); in aead_enqueue()
2803 flow_log(" assoc: %p, assoclen %u\n", rctx->assoc, req->assoclen); in aead_enqueue()
2806 rctx->dst_sg, rctx->dst_skip); in aead_enqueue()
2807 flow_log(" iv_ctr_len:%u\n", rctx->iv_ctr_len); in aead_enqueue()
2808 flow_dump(" iv: ", req->iv, rctx->iv_ctr_len); in aead_enqueue()
2824 if (rctx->iv_ctr_len) { in aead_enqueue()
2826 memcpy(rctx->msg_buf.iv_ctr + ctx->salt_offset, in aead_enqueue()
2828 memcpy(rctx->msg_buf.iv_ctr + ctx->salt_offset + ctx->salt_len, in aead_enqueue()
2830 rctx->iv_ctr_len - ctx->salt_len - ctx->salt_offset); in aead_enqueue()
2833 rctx->chan_idx = select_channel(); in aead_enqueue()
2834 err = handle_aead_req(rctx); in aead_enqueue()
2837 spu_chunk_cleanup(rctx); in aead_enqueue()