mirror of https://github.com/xemu-project/xemu.git
cryptodev: wrap the ready flag
The ready flag should be set by the children of cryptodev backend interface. Warp the setter/getter functions for it. Signed-off-by: Gonglei <arei.gonglei@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
46fd170545
commit
6138dbda5a
|
@ -94,6 +94,8 @@ static void cryptodev_builtin_init(
|
||||||
backend->conf.max_size = LONG_MAX - sizeof(CryptoDevBackendSymOpInfo);
|
backend->conf.max_size = LONG_MAX - sizeof(CryptoDevBackendSymOpInfo);
|
||||||
backend->conf.max_cipher_key_len = CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_LEN;
|
backend->conf.max_cipher_key_len = CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_LEN;
|
||||||
backend->conf.max_auth_key_len = CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN;
|
backend->conf.max_auth_key_len = CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN;
|
||||||
|
|
||||||
|
cryptodev_backend_set_ready(backend, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -366,6 +368,8 @@ static void cryptodev_builtin_cleanup(
|
||||||
backend->conf.peers.ccs[i] = NULL;
|
backend->conf.peers.ccs[i] = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cryptodev_backend_set_ready(backend, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -73,8 +73,6 @@ void cryptodev_backend_cleanup(
|
||||||
if (bc->cleanup) {
|
if (bc->cleanup) {
|
||||||
bc->cleanup(backend, errp);
|
bc->cleanup(backend, errp);
|
||||||
}
|
}
|
||||||
|
|
||||||
backend->ready = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t cryptodev_backend_sym_create_session(
|
int64_t cryptodev_backend_sym_create_session(
|
||||||
|
@ -189,11 +187,10 @@ cryptodev_backend_complete(UserCreatable *uc, Error **errp)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
backend->ready = true;
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
backend->ready = false;
|
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,6 +204,16 @@ bool cryptodev_backend_is_used(CryptoDevBackend *backend)
|
||||||
return backend->is_used;
|
return backend->is_used;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cryptodev_backend_set_ready(CryptoDevBackend *backend, bool ready)
|
||||||
|
{
|
||||||
|
backend->ready = ready;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cryptodev_backend_is_ready(CryptoDevBackend *backend)
|
||||||
|
{
|
||||||
|
return backend->ready;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
cryptodev_backend_can_be_deleted(UserCreatable *uc, Error **errp)
|
cryptodev_backend_can_be_deleted(UserCreatable *uc, Error **errp)
|
||||||
{
|
{
|
||||||
|
|
|
@ -732,7 +732,7 @@ static void virtio_crypto_reset(VirtIODevice *vdev)
|
||||||
VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
|
VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
|
||||||
/* multiqueue is disabled by default */
|
/* multiqueue is disabled by default */
|
||||||
vcrypto->curr_queues = 1;
|
vcrypto->curr_queues = 1;
|
||||||
if (!vcrypto->cryptodev->ready) {
|
if (!cryptodev_backend_is_ready(vcrypto->cryptodev)) {
|
||||||
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
|
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
|
||||||
} else {
|
} else {
|
||||||
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
|
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
|
||||||
|
@ -792,7 +792,7 @@ static void virtio_crypto_device_realize(DeviceState *dev, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
vcrypto->ctrl_vq = virtio_add_queue(vdev, 64, virtio_crypto_handle_ctrl);
|
vcrypto->ctrl_vq = virtio_add_queue(vdev, 64, virtio_crypto_handle_ctrl);
|
||||||
if (!vcrypto->cryptodev->ready) {
|
if (!cryptodev_backend_is_ready(vcrypto->cryptodev)) {
|
||||||
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
|
vcrypto->status &= ~VIRTIO_CRYPTO_S_HW_READY;
|
||||||
} else {
|
} else {
|
||||||
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
|
vcrypto->status |= VIRTIO_CRYPTO_S_HW_READY;
|
||||||
|
|
|
@ -317,5 +317,24 @@ void cryptodev_backend_set_used(CryptoDevBackend *backend, bool used);
|
||||||
*/
|
*/
|
||||||
bool cryptodev_backend_is_used(CryptoDevBackend *backend);
|
bool cryptodev_backend_is_used(CryptoDevBackend *backend);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cryptodev_backend_set_ready:
|
||||||
|
* @backend: the cryptodev backend object
|
||||||
|
* @ready: ture or false
|
||||||
|
*
|
||||||
|
* Set the cryptodev backend is ready or not, which is called
|
||||||
|
* by the children of the cryptodev banckend interface.
|
||||||
|
*/
|
||||||
|
void cryptodev_backend_set_ready(CryptoDevBackend *backend, bool ready);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cryptodev_backend_is_ready:
|
||||||
|
* @backend: the cryptodev backend object
|
||||||
|
*
|
||||||
|
* Return the status that the cryptodev backend is ready or not
|
||||||
|
*
|
||||||
|
* Returns: true on ready, or false on not ready
|
||||||
|
*/
|
||||||
|
bool cryptodev_backend_is_ready(CryptoDevBackend *backend);
|
||||||
|
|
||||||
#endif /* CRYPTODEV_H */
|
#endif /* CRYPTODEV_H */
|
||||||
|
|
Loading…
Reference in New Issue