On 05/10/2018 05:41 PM, Fan Zhang wrote:
This patch enables the handling of buffers non-contiguous in
virtual address space in the vhost_crypto. Instead of using
rte_vhost_va_from_guest_pa(), the host virtual address is
converted by vhost_iova_to_vva() for wider use cases.
For copy mode, the copy length is limited to the chunck size,
next chuncks VAs being fetched afterward.
Signed-off-by: Fan Zhang <[email protected]>
---
lib/librte_vhost/vhost_crypto.c | 201 ++++++++++++++++++++++++++--------------
1 file changed, 129 insertions(+), 72 deletions(-)
...
+ req = get_data_ptr(vc_req, &desc, sizeof(*req), VHOST_ACCESS_RO);
+ if (unlikely(req == NULL))
Adding braces around the switch would be less error prone IMHO.
+ switch (vcrypto->option) {
+ case RTE_VHOST_CRYPTO_ZERO_COPY_ENABLE:
+ err = VIRTIO_CRYPTO_BADMSG;
+ VC_LOG_ERR("Invalid descriptor");
+ goto error_exit;
+ case RTE_VHOST_CRYPTO_ZERO_COPY_DISABLE:
+ req = &tmp_req;
+ if (unlikely(copy_data(req, vc_req, &desc, sizeof(*req))
+ < 0)) {
+ err = VIRTIO_CRYPTO_BADMSG;
+ VC_LOG_ERR("Invalid descriptor");
+ goto error_exit;
+ }
+ break;
+ default:
+ err = VIRTIO_CRYPTO_ERR;
+ VC_LOG_ERR("Invalid option");
+ goto error_exit;
+ }
Other than than, it looks good to me.
Reviewed-by: Maxime Coquelin <[email protected]>
I will add the braces when applying.
Thanks,
Maxime