[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 12/14] virtio-crypto: add destroy session logic
From: |
Gonglei |
Subject: |
[Qemu-devel] [PATCH v1 12/14] virtio-crypto: add destroy session logic |
Date: |
Thu, 8 Sep 2016 11:42:34 +0800 |
Signed-off-by: Gonglei <address@hidden>
---
hw/virtio/virtio-crypto.c | 36 +++++++++++++++++++++++++++++++++---
1 file changed, 33 insertions(+), 3 deletions(-)
diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c
index b3ad974..0888725 100644
--- a/hw/virtio/virtio-crypto.c
+++ b/hw/virtio/virtio-crypto.c
@@ -145,6 +145,33 @@ err:
return -1;
}
+static void
+virtio_crypto_handle_close_session(VirtIOCrypto *vcrypto,
+ struct virtio_crypto_destroy_session_req *close_sess_req,
+ uint32_t queue_id)
+{
+ VirtIODevice *vdev = VIRTIO_DEVICE(vcrypto);
+ int ret;
+ CryptoClientState *cc = vcrypto->crypto->ccs;
+ uint64_t session_id;
+ uint32_t status;
+ int queue_index = virtio_crypto_vq2q(queue_id);
+
+ session_id = virtio_ldq_p(vdev, &close_sess_req->session_id);
+ DPRINTF("close session, id=%" PRIu64 "\n", session_id);
+ cc = qemu_get_crypto_subqueue(vcrypto->crypto, queue_index);
+ ret = qemu_crypto_close_session(cc, session_id);
+ if (ret == 0) {
+ status = VIRTIO_CRYPTO_OP_OK;
+ } else {
+ error_report("destroy session failed");
+ status = VIRTIO_CRYPTO_OP_ERR;
+ }
+
+ /* Set the result, notify the frontend driver soon */
+ virtio_stl_p(vdev, &close_sess_req->status, status);
+}
+
static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
{
VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
@@ -184,12 +211,15 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev,
VirtQueue *vq)
break;
case VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION:
- case VIRTIO_CRYPTO_HASH_CREATE_SESSION:
case VIRTIO_CRYPTO_HASH_DESTROY_SESSION:
- case VIRTIO_CRYPTO_MAC_CREATE_SESSION:
case VIRTIO_CRYPTO_MAC_DESTROY_SESSION:
- case VIRTIO_CRYPTO_AEAD_CREATE_SESSION:
case VIRTIO_CRYPTO_AEAD_DESTROY_SESSION:
+ virtio_crypto_handle_close_session(vcrypto,
+ &ctrl.u.destroy_session, queue_id);
+ break;
+ case VIRTIO_CRYPTO_HASH_CREATE_SESSION:
+ case VIRTIO_CRYPTO_MAC_CREATE_SESSION:
+ case VIRTIO_CRYPTO_AEAD_CREATE_SESSION:
default:
error_report("virtio-crypto unsupported ctrl opcode: %u",
opcode);
--
1.7.12.4
- [Qemu-devel] [PATCH v1 00/14] virtio-crypto: introduce framework and device emulation, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 06/14] crypto: add internal handle logic layer, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 01/14] crypto: introduce cryptodev backend and crypto legacy hardware, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 03/14] crypto: add cryptoLegacyHW stuff, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 12/14] virtio-crypto: add destroy session logic,
Gonglei <=
- [Qemu-devel] [PATCH v1 05/14] crypto: add cryptodev-linux as a cryptodev backend, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 07/14] virtio-crypto: introduce virtio-crypto.h, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 14/14] virtio-crypto: add data virtqueue processing handler, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 13/14] virtio-crypto: get correct input data address for each request, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 10/14] virtio-crypto: set capacity of crypto legacy hardware, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 11/14] virtio-crypto: add control queue handler, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 09/14] virtio-crypto: add virtio crypto realization modle, Gonglei, 2016/09/07
- [Qemu-devel] [PATCH v1 08/14] virtio-crypto-pci: add virtio crypto pci support, Gonglei, 2016/09/07