Lines Matching refs:edesc

905 			     struct talitos_edesc *edesc,  in talitos_sg_unmap()  argument
909 unsigned int src_nents = edesc->src_nents ? : 1; in talitos_sg_unmap()
910 unsigned int dst_nents = edesc->dst_nents ? : 1; in talitos_sg_unmap()
923 struct talitos_edesc *edesc, in ipsec_esp_unmap() argument
926 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[6], DMA_FROM_DEVICE); in ipsec_esp_unmap()
927 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[3], DMA_TO_DEVICE); in ipsec_esp_unmap()
928 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[2], DMA_TO_DEVICE); in ipsec_esp_unmap()
929 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[0], DMA_TO_DEVICE); in ipsec_esp_unmap()
931 talitos_sg_unmap(dev, edesc, areq->src, areq->dst); in ipsec_esp_unmap()
933 if (edesc->dma_len) in ipsec_esp_unmap()
934 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len, in ipsec_esp_unmap()
948 struct talitos_edesc *edesc; in ipsec_esp_encrypt_done() local
952 edesc = container_of(desc, struct talitos_edesc, desc); in ipsec_esp_encrypt_done()
954 ipsec_esp_unmap(dev, edesc, areq); in ipsec_esp_encrypt_done()
957 if (edesc->icv_ool) { in ipsec_esp_encrypt_done()
958 icvdata = &edesc->link_tbl[edesc->src_nents + in ipsec_esp_encrypt_done()
959 edesc->dst_nents + 2]; in ipsec_esp_encrypt_done()
960 sg = sg_last(areq->dst, edesc->dst_nents); in ipsec_esp_encrypt_done()
965 kfree(edesc); in ipsec_esp_encrypt_done()
977 struct talitos_edesc *edesc; in ipsec_esp_decrypt_swauth_done() local
981 edesc = container_of(desc, struct talitos_edesc, desc); in ipsec_esp_decrypt_swauth_done()
983 ipsec_esp_unmap(dev, edesc, req); in ipsec_esp_decrypt_swauth_done()
987 sg = sg_last(req->dst, edesc->dst_nents ? : 1); in ipsec_esp_decrypt_swauth_done()
990 if (edesc->dma_len) { in ipsec_esp_decrypt_swauth_done()
991 oicv = (char *)&edesc->link_tbl[edesc->src_nents + in ipsec_esp_decrypt_swauth_done()
992 edesc->dst_nents + 2]; in ipsec_esp_decrypt_swauth_done()
993 if (edesc->icv_ool) in ipsec_esp_decrypt_swauth_done()
996 oicv = (char *)&edesc->link_tbl[0]; in ipsec_esp_decrypt_swauth_done()
1001 kfree(edesc); in ipsec_esp_decrypt_swauth_done()
1011 struct talitos_edesc *edesc; in ipsec_esp_decrypt_hwauth_done() local
1013 edesc = container_of(desc, struct talitos_edesc, desc); in ipsec_esp_decrypt_hwauth_done()
1015 ipsec_esp_unmap(dev, edesc, req); in ipsec_esp_decrypt_hwauth_done()
1022 kfree(edesc); in ipsec_esp_decrypt_hwauth_done()
1081 static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq, in ipsec_esp() argument
1090 struct talitos_desc *desc = &edesc->desc; in ipsec_esp()
1101 sg_count = dma_map_sg(dev, areq->src, edesc->src_nents ?: 1, in ipsec_esp()
1109 &edesc->link_tbl[tbl_off])) > 1) { in ipsec_esp()
1110 to_talitos_ptr(&desc->ptr[1], edesc->dma_link_tbl + tbl_off * in ipsec_esp()
1114 dma_sync_single_for_device(dev, edesc->dma_link_tbl, in ipsec_esp()
1115 edesc->dma_len, DMA_BIDIRECTIONAL); in ipsec_esp()
1124 to_talitos_ptr(&desc->ptr[2], edesc->iv_dma, 0); in ipsec_esp()
1143 if (edesc->desc.hdr & DESC_HDR_MODE1_MDEU_CICV) in ipsec_esp()
1151 &edesc->link_tbl[tbl_off])) > in ipsec_esp()
1154 to_talitos_ptr(&desc->ptr[4], edesc->dma_link_tbl + in ipsec_esp()
1157 dma_sync_single_for_device(dev, edesc->dma_link_tbl, in ipsec_esp()
1158 edesc->dma_len, in ipsec_esp()
1162 copy_talitos_ptr(&desc->ptr[4], &edesc->link_tbl[tbl_off], 0); in ipsec_esp()
1170 sg_count = dma_map_sg(dev, areq->dst, edesc->dst_nents ? : 1, in ipsec_esp()
1173 edesc->icv_ool = false; in ipsec_esp()
1181 &edesc->link_tbl[tbl_off])) > 1) { in ipsec_esp()
1182 struct talitos_ptr *tbl_ptr = &edesc->link_tbl[tbl_off]; in ipsec_esp()
1184 to_talitos_ptr(&desc->ptr[5], edesc->dma_link_tbl + in ipsec_esp()
1195 to_talitos_ptr(tbl_ptr, edesc->dma_link_tbl + in ipsec_esp()
1196 (edesc->src_nents + edesc->dst_nents + in ipsec_esp()
1200 dma_sync_single_for_device(ctx->dev, edesc->dma_link_tbl, in ipsec_esp()
1201 edesc->dma_len, DMA_BIDIRECTIONAL); in ipsec_esp()
1203 edesc->icv_ool = true; in ipsec_esp()
1205 copy_talitos_ptr(&desc->ptr[5], &edesc->link_tbl[tbl_off], 0); in ipsec_esp()
1214 ipsec_esp_unmap(dev, edesc, areq); in ipsec_esp()
1215 kfree(edesc); in ipsec_esp()
1235 struct talitos_edesc *edesc; in talitos_edesc_alloc() local
1285 edesc = kmalloc(alloc_len, GFP_DMA | flags); in talitos_edesc_alloc()
1286 if (!edesc) { in talitos_edesc_alloc()
1294 edesc->src_nents = src_nents; in talitos_edesc_alloc()
1295 edesc->dst_nents = dst_nents; in talitos_edesc_alloc()
1296 edesc->iv_dma = iv_dma; in talitos_edesc_alloc()
1297 edesc->dma_len = dma_len; in talitos_edesc_alloc()
1299 edesc->dma_link_tbl = dma_map_single(dev, &edesc->link_tbl[0], in talitos_edesc_alloc()
1300 edesc->dma_len, in talitos_edesc_alloc()
1303 return edesc; in talitos_edesc_alloc()
1324 struct talitos_edesc *edesc; in aead_encrypt() local
1327 edesc = aead_edesc_alloc(req, req->iv, 0, true); in aead_encrypt()
1328 if (IS_ERR(edesc)) in aead_encrypt()
1329 return PTR_ERR(edesc); in aead_encrypt()
1332 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_MODE0_ENCRYPT; in aead_encrypt()
1334 return ipsec_esp(edesc, req, ipsec_esp_encrypt_done); in aead_encrypt()
1343 struct talitos_edesc *edesc; in aead_decrypt() local
1350 edesc = aead_edesc_alloc(req, req->iv, 1, false); in aead_decrypt()
1351 if (IS_ERR(edesc)) in aead_decrypt()
1352 return PTR_ERR(edesc); in aead_decrypt()
1355 ((!edesc->src_nents && !edesc->dst_nents) || in aead_decrypt()
1359 edesc->desc.hdr = ctx->desc_hdr_template | in aead_decrypt()
1364 edesc->desc.hdr_lo = 0; in aead_decrypt()
1366 return ipsec_esp(edesc, req, ipsec_esp_decrypt_hwauth_done); in aead_decrypt()
1370 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_DIR_INBOUND; in aead_decrypt()
1373 if (edesc->dma_len) in aead_decrypt()
1374 icvdata = (char *)&edesc->link_tbl[edesc->src_nents + in aead_decrypt()
1375 edesc->dst_nents + 2]; in aead_decrypt()
1377 icvdata = &edesc->link_tbl[0]; in aead_decrypt()
1379 sg = sg_last(req->src, edesc->src_nents ? : 1); in aead_decrypt()
1383 return ipsec_esp(edesc, req, ipsec_esp_decrypt_swauth_done); in aead_decrypt()
1399 struct talitos_edesc *edesc) in unmap_sg_talitos_ptr() argument
1405 if (!edesc->src_nents) { in unmap_sg_talitos_ptr()
1410 if (dst && edesc->dst_nents) { in unmap_sg_talitos_ptr()
1412 edesc->dma_link_tbl + len, in unmap_sg_talitos_ptr()
1414 sg_copy_from_buffer(dst, edesc->dst_nents ? : 1, in unmap_sg_talitos_ptr()
1415 edesc->buf + len, len); in unmap_sg_talitos_ptr()
1420 talitos_sg_unmap(dev, edesc, src, dst); in unmap_sg_talitos_ptr()
1425 struct talitos_edesc *edesc, in common_nonsnoop_unmap() argument
1428 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[5], DMA_FROM_DEVICE); in common_nonsnoop_unmap()
1430 unmap_sg_talitos_ptr(dev, areq->src, areq->dst, areq->nbytes, edesc); in common_nonsnoop_unmap()
1431 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[2], DMA_TO_DEVICE); in common_nonsnoop_unmap()
1432 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[1], DMA_TO_DEVICE); in common_nonsnoop_unmap()
1434 if (edesc->dma_len) in common_nonsnoop_unmap()
1435 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len, in common_nonsnoop_unmap()
1444 struct talitos_edesc *edesc; in ablkcipher_done() local
1446 edesc = container_of(desc, struct talitos_edesc, desc); in ablkcipher_done()
1448 common_nonsnoop_unmap(dev, edesc, areq); in ablkcipher_done()
1450 kfree(edesc); in ablkcipher_done()
1456 unsigned int len, struct talitos_edesc *edesc, in map_sg_in_talitos_ptr() argument
1466 sg_count = edesc->src_nents ? : 1; in map_sg_in_talitos_ptr()
1472 sg_copy_to_buffer(src, sg_count, edesc->buf, len); in map_sg_in_talitos_ptr()
1473 to_talitos_ptr(ptr, edesc->dma_link_tbl, is_sec1); in map_sg_in_talitos_ptr()
1474 dma_sync_single_for_device(dev, edesc->dma_link_tbl, in map_sg_in_talitos_ptr()
1480 sg_count = dma_map_sg(dev, src, edesc->src_nents ? : 1, dir); in map_sg_in_talitos_ptr()
1486 &edesc->link_tbl[0]); in map_sg_in_talitos_ptr()
1488 to_talitos_ptr(ptr, edesc->dma_link_tbl, 0); in map_sg_in_talitos_ptr()
1491 edesc->dma_link_tbl, in map_sg_in_talitos_ptr()
1492 edesc->dma_len, in map_sg_in_talitos_ptr()
1505 unsigned int len, struct talitos_edesc *edesc, in map_sg_out_talitos_ptr() argument
1513 sg_count = dma_map_sg(dev, dst, edesc->dst_nents ? : 1, dir); in map_sg_out_talitos_ptr()
1523 to_talitos_ptr(ptr, edesc->dma_link_tbl + len, is_sec1); in map_sg_out_talitos_ptr()
1525 edesc->dma_link_tbl + len, in map_sg_out_talitos_ptr()
1535 &edesc->link_tbl[edesc->src_nents + 1]; in map_sg_out_talitos_ptr()
1537 to_talitos_ptr(ptr, edesc->dma_link_tbl + in map_sg_out_talitos_ptr()
1538 (edesc->src_nents + 1) * in map_sg_out_talitos_ptr()
1542 dma_sync_single_for_device(dev, edesc->dma_link_tbl, in map_sg_out_talitos_ptr()
1543 edesc->dma_len, in map_sg_out_talitos_ptr()
1549 static int common_nonsnoop(struct talitos_edesc *edesc, in common_nonsnoop() argument
1558 struct talitos_desc *desc = &edesc->desc; in common_nonsnoop()
1569 to_talitos_ptr(&desc->ptr[1], edesc->iv_dma, is_sec1); in common_nonsnoop()
1580 sg_count = map_sg_in_talitos_ptr(dev, areq->src, cryptlen, edesc, in common_nonsnoop()
1586 map_sg_out_talitos_ptr(dev, areq->dst, cryptlen, edesc, in common_nonsnoop()
1600 common_nonsnoop_unmap(dev, edesc, areq); in common_nonsnoop()
1601 kfree(edesc); in common_nonsnoop()
1622 struct talitos_edesc *edesc; in ablkcipher_encrypt() local
1625 edesc = ablkcipher_edesc_alloc(areq, true); in ablkcipher_encrypt()
1626 if (IS_ERR(edesc)) in ablkcipher_encrypt()
1627 return PTR_ERR(edesc); in ablkcipher_encrypt()
1630 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_MODE0_ENCRYPT; in ablkcipher_encrypt()
1632 return common_nonsnoop(edesc, areq, ablkcipher_done); in ablkcipher_encrypt()
1639 struct talitos_edesc *edesc; in ablkcipher_decrypt() local
1642 edesc = ablkcipher_edesc_alloc(areq, false); in ablkcipher_decrypt()
1643 if (IS_ERR(edesc)) in ablkcipher_decrypt()
1644 return PTR_ERR(edesc); in ablkcipher_decrypt()
1646 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_DIR_INBOUND; in ablkcipher_decrypt()
1648 return common_nonsnoop(edesc, areq, ablkcipher_done); in ablkcipher_decrypt()
1652 struct talitos_edesc *edesc, in common_nonsnoop_hash_unmap() argument
1659 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[5], DMA_FROM_DEVICE); in common_nonsnoop_hash_unmap()
1661 unmap_sg_talitos_ptr(dev, req_ctx->psrc, NULL, 0, edesc); in common_nonsnoop_hash_unmap()
1664 if (from_talitos_ptr_len(&edesc->desc.ptr[1], is_sec1)) in common_nonsnoop_hash_unmap()
1665 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[1], in common_nonsnoop_hash_unmap()
1668 if (from_talitos_ptr_len(&edesc->desc.ptr[2], is_sec1)) in common_nonsnoop_hash_unmap()
1669 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[2], in common_nonsnoop_hash_unmap()
1672 if (edesc->dma_len) in common_nonsnoop_hash_unmap()
1673 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len, in common_nonsnoop_hash_unmap()
1683 struct talitos_edesc *edesc = in ahash_done() local
1692 common_nonsnoop_hash_unmap(dev, edesc, areq); in ahash_done()
1694 kfree(edesc); in ahash_done()
1704 struct talitos_edesc *edesc, in talitos_handle_buggy_hash() argument
1715 edesc->desc.hdr &= ~DESC_HDR_MODE0_MDEU_PAD; in talitos_handle_buggy_hash()
1720 static int common_nonsnoop_hash(struct talitos_edesc *edesc, in common_nonsnoop_hash() argument
1730 struct talitos_desc *desc = &edesc->desc; in common_nonsnoop_hash()
1761 map_sg_in_talitos_ptr(dev, req_ctx->psrc, length, edesc, in common_nonsnoop_hash()
1781 talitos_handle_buggy_hash(ctx, edesc, &desc->ptr[3]); in common_nonsnoop_hash()
1785 common_nonsnoop_hash_unmap(dev, edesc, areq); in common_nonsnoop_hash()
1786 kfree(edesc); in common_nonsnoop_hash()
1851 struct talitos_edesc *edesc; in ahash_process_req() local
1903 edesc = ahash_edesc_alloc(areq, nbytes_to_hash); in ahash_process_req()
1904 if (IS_ERR(edesc)) in ahash_process_req()
1905 return PTR_ERR(edesc); in ahash_process_req()
1907 edesc->desc.hdr = ctx->desc_hdr_template; in ahash_process_req()
1911 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_PAD; in ahash_process_req()
1913 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_CONT; in ahash_process_req()
1917 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_INIT; in ahash_process_req()
1923 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_HMAC; in ahash_process_req()
1925 return common_nonsnoop_hash(edesc, areq, nbytes_to_hash, in ahash_process_req()