Lines Matching defs:edesc

325 	struct talitos_edesc *edesc;
333 edesc = container_of(request->desc, struct talitos_edesc, desc);
335 return ((struct talitos_desc *)(edesc->buf + edesc->dma_len))->hdr1;
490 struct talitos_edesc *edesc;
492 edesc = container_of(priv->chan[ch].fifo[iter].desc,
495 (edesc->buf + edesc->dma_len))->hdr;
959 struct talitos_edesc *edesc,
966 unsigned int src_nents = edesc->src_nents ? : 1;
967 unsigned int dst_nents = edesc->dst_nents ? : 1;
970 dma_sync_single_for_device(dev, edesc->dma_link_tbl + offset,
972 sg_pcopy_from_buffer(dst, dst_nents, edesc->buf + offset, len,
987 struct talitos_edesc *edesc,
995 bool is_ipsec_esp = edesc->desc.hdr & DESC_HDR_TYPE_IPSEC_ESP;
996 struct talitos_ptr *civ_ptr = &edesc->desc.ptr[is_ipsec_esp ? 2 : 3];
999 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[6],
1003 talitos_sg_unmap(dev, edesc, areq->src, areq->dst,
1006 if (edesc->dma_len)
1007 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len,
1011 unsigned int dst_nents = edesc->dst_nents ? : 1;
1028 struct talitos_edesc *edesc;
1030 edesc = container_of(desc, struct talitos_edesc, desc);
1032 ipsec_esp_unmap(dev, edesc, areq, true);
1034 dma_unmap_single(dev, edesc->iv_dma, ivsize, DMA_TO_DEVICE);
1036 kfree(edesc);
1048 struct talitos_edesc *edesc;
1051 edesc = container_of(desc, struct talitos_edesc, desc);
1053 ipsec_esp_unmap(dev, edesc, req, false);
1057 oicv = edesc->buf + edesc->dma_len;
1063 kfree(edesc);
1073 struct talitos_edesc *edesc;
1075 edesc = container_of(desc, struct talitos_edesc, desc);
1077 ipsec_esp_unmap(dev, edesc, req, false);
1084 kfree(edesc);
1144 unsigned int len, struct talitos_edesc *edesc,
1163 to_talitos_ptr(ptr, edesc->dma_link_tbl + offset, aligned_len, is_sec1);
1167 &edesc->link_tbl[tbl_off], align);
1170 copy_talitos_ptr(ptr, &edesc->link_tbl[tbl_off], is_sec1);
1173 to_talitos_ptr(ptr, edesc->dma_link_tbl +
1181 unsigned int len, struct talitos_edesc *edesc,
1185 return talitos_sg_map_ext(dev, src, len, edesc, ptr, sg_count, offset,
1192 static int ipsec_esp(struct talitos_edesc *edesc, struct aead_request *areq,
1202 struct talitos_desc *desc = &edesc->desc;
1214 dma_addr_t dma_icv = edesc->dma_link_tbl + edesc->dma_len - authsize;
1219 sg_count = edesc->src_nents ?: 1;
1221 sg_copy_to_buffer(areq->src, sg_count, edesc->buf,
1229 ret = talitos_sg_map(dev, areq->src, areq->assoclen, edesc,
1238 to_talitos_ptr(civ_ptr, edesc->iv_dma, ivsize, is_sec1);
1253 ret = talitos_sg_map_ext(dev, areq->src, cryptlen, edesc, &desc->ptr[4],
1264 sg_count = edesc->dst_nents ? : 1;
1273 ret = talitos_sg_map_ext(dev, areq->dst, cryptlen, edesc, &desc->ptr[5],
1279 struct talitos_ptr *tbl_ptr = &edesc->link_tbl[tbl_off];
1293 talitos_sg_map(dev, areq->dst, authsize, edesc, &desc->ptr[6],
1303 dma_sync_single_for_device(dev, edesc->dma_link_tbl,
1304 edesc->dma_len,
1309 ipsec_esp_unmap(dev, edesc, areq, encrypt);
1310 kfree(edesc);
1330 struct talitos_edesc *edesc;
1372 * allocate space for base edesc plus the link tables,
1395 edesc = kmalloc(alloc_len, GFP_DMA | flags);
1396 if (!edesc)
1399 iv = memcpy(((u8 *)edesc) + alloc_len - ivsize, iv, ivsize);
1402 memset(&edesc->desc, 0, sizeof(edesc->desc));
1404 edesc->src_nents = src_nents;
1405 edesc->dst_nents = dst_nents;
1406 edesc->iv_dma = iv_dma;
1407 edesc->dma_len = dma_len;
1409 edesc->dma_link_tbl = dma_map_single(dev, &edesc->link_tbl[0],
1410 edesc->dma_len,
1413 return edesc;
1435 struct talitos_edesc *edesc;
1438 edesc = aead_edesc_alloc(req, req->iv, 0, true);
1439 if (IS_ERR(edesc))
1440 return PTR_ERR(edesc);
1443 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_MODE0_ENCRYPT;
1445 return ipsec_esp(edesc, req, true, ipsec_esp_encrypt_done);
1454 struct talitos_edesc *edesc;
1458 edesc = aead_edesc_alloc(req, req->iv, 1, false);
1459 if (IS_ERR(edesc))
1460 return PTR_ERR(edesc);
1462 if ((edesc->desc.hdr & DESC_HDR_TYPE_IPSEC_ESP) &&
1464 ((!edesc->src_nents && !edesc->dst_nents) ||
1468 edesc->desc.hdr = ctx->desc_hdr_template |
1474 return ipsec_esp(edesc, req, false,
1479 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_DIR_INBOUND;
1482 icvdata = edesc->buf + edesc->dma_len;
1484 sg_pcopy_to_buffer(req->src, edesc->src_nents ? : 1, icvdata, authsize,
1487 return ipsec_esp(edesc, req, false, ipsec_esp_decrypt_swauth_done);
1532 struct talitos_edesc *edesc,
1535 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[5], DMA_FROM_DEVICE);
1537 talitos_sg_unmap(dev, edesc, areq->src, areq->dst, areq->cryptlen, 0);
1538 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[1], DMA_TO_DEVICE);
1540 if (edesc->dma_len)
1541 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len,
1553 struct talitos_edesc *edesc;
1555 edesc = container_of(desc, struct talitos_edesc, desc);
1557 common_nonsnoop_unmap(dev, edesc, areq);
1560 kfree(edesc);
1565 static int common_nonsnoop(struct talitos_edesc *edesc,
1574 struct talitos_desc *desc = &edesc->desc;
1587 to_talitos_ptr(&desc->ptr[1], edesc->iv_dma, ivsize, is_sec1);
1592 sg_count = edesc->src_nents ?: 1;
1594 sg_copy_to_buffer(areq->src, sg_count, edesc->buf,
1603 sg_count = talitos_sg_map_ext(dev, areq->src, cryptlen, edesc, &desc->ptr[3],
1610 sg_count = edesc->dst_nents ? : 1;
1615 ret = talitos_sg_map(dev, areq->dst, cryptlen, edesc, &desc->ptr[4],
1616 sg_count, 0, (edesc->src_nents + 1));
1627 dma_sync_single_for_device(dev, edesc->dma_link_tbl,
1628 edesc->dma_len, DMA_BIDIRECTIONAL);
1632 common_nonsnoop_unmap(dev, edesc, areq);
1633 kfree(edesc);
1654 struct talitos_edesc *edesc;
1665 edesc = skcipher_edesc_alloc(areq, true);
1666 if (IS_ERR(edesc))
1667 return PTR_ERR(edesc);
1670 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_MODE0_ENCRYPT;
1672 return common_nonsnoop(edesc, areq, skcipher_done);
1679 struct talitos_edesc *edesc;
1690 edesc = skcipher_edesc_alloc(areq, false);
1691 if (IS_ERR(edesc))
1692 return PTR_ERR(edesc);
1694 edesc->desc.hdr = ctx->desc_hdr_template | DESC_HDR_DIR_INBOUND;
1696 return common_nonsnoop(edesc, areq, skcipher_done);
1700 struct talitos_edesc *edesc,
1707 struct talitos_desc *desc = &edesc->desc;
1709 (edesc->buf + edesc->dma_len);
1711 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[5], DMA_FROM_DEVICE);
1720 talitos_sg_unmap(dev, edesc, req_ctx->psrc, NULL, 0, 0);
1723 if (from_talitos_ptr_len(&edesc->desc.ptr[1], is_sec1))
1724 unmap_single_talitos_ptr(dev, &edesc->desc.ptr[1],
1734 if (edesc->dma_len)
1735 dma_unmap_single(dev, edesc->dma_link_tbl, edesc->dma_len,
1738 if (edesc->desc.next_desc)
1739 dma_unmap_single(dev, be32_to_cpu(edesc->desc.next_desc),
1748 struct talitos_edesc *edesc =
1757 common_nonsnoop_hash_unmap(dev, edesc, areq);
1759 kfree(edesc);
1769 struct talitos_edesc *edesc,
1780 edesc->desc.hdr &= ~DESC_HDR_MODE0_MDEU_PAD;
1785 static int common_nonsnoop_hash(struct talitos_edesc *edesc,
1795 struct talitos_desc *desc = &edesc->desc;
1823 sg_count = edesc->src_nents ?: 1;
1825 sg_copy_to_buffer(req_ctx->psrc, sg_count, edesc->buf, length);
1837 sg_count = talitos_sg_map(dev, req_ctx->psrc, length, edesc,
1859 talitos_handle_buggy_hash(ctx, edesc, &desc->ptr[3]);
1863 (edesc->buf + edesc->dma_len);
1883 sg_count = talitos_sg_map(dev, req_ctx->psrc, length, edesc,
1900 dma_sync_single_for_device(dev, edesc->dma_link_tbl,
1901 edesc->dma_len, DMA_BIDIRECTIONAL);
1905 common_nonsnoop_hash_unmap(dev, edesc, areq);
1906 kfree(edesc);
1985 struct talitos_edesc *edesc;
2067 edesc = ahash_edesc_alloc(areq, nbytes_to_hash);
2068 if (IS_ERR(edesc))
2069 return PTR_ERR(edesc);
2071 edesc->desc.hdr = ctx->desc_hdr_template;
2075 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_PAD;
2077 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_CONT;
2081 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_INIT;
2087 edesc->desc.hdr |= DESC_HDR_MODE0_MDEU_HMAC;
2089 return common_nonsnoop_hash(edesc, areq, nbytes_to_hash, ahash_done);