From: Tiwei Bie <tiwei.bie@intel.com>
To: JinYu <jin.yu@intel.com>
Cc: dev@dpdk.org, changpeng.liu@intel.com,
maxime.coquelin@redhat.com, zhihong.wang@intel.com,
stable@dpdk.org, Lin Li <lilin24@baidu.com>,
Xun Ni <nixun@baidu.com>, Yu Zhang <zhangyu31@baidu.com>
Subject: Re: [dpdk-dev] [PATCH v7 08/11] vhost: fix vring functions to support packed ring
Date: Wed, 18 Sep 2019 13:47:59 +0800 [thread overview]
Message-ID: <20190918054758.GA9304@___> (raw)
In-Reply-To: <20190917145234.16951-9-jin.yu@intel.com>
On Tue, Sep 17, 2019 at 10:52:31PM +0800, JinYu wrote:
> This patch fix two APIs so user can get the packed ring
> support.
>
> Fixes: fceec568 (vhost: add packed ring)
> Cc: stable@dpdk.org
I changed my mind, as the packed ring related fields are just
added to rte_vhost_vring in this series, we shouldn't treat
this change as a fix and there is no need to cc stable.
Please also update the title correspondingly.
Thanks!
Tiwei
>
> Signed-off-by: Lin Li <lilin24@baidu.com>
> Signed-off-by: Xun Ni <nixun@baidu.com>
> Signed-off-by: Yu Zhang <zhangyu31@baidu.com>
> Signed-off-by: Jin Yu <jin.yu@intel.com>
> ---
> lib/librte_vhost/vhost.c | 68 +++++++++++++++++++++++++++++-----------
> 1 file changed, 49 insertions(+), 19 deletions(-)
>
> diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
> index 95f99ea51..1b6dcca98 100644
> --- a/lib/librte_vhost/vhost.c
> +++ b/lib/librte_vhost/vhost.c
> @@ -771,9 +771,15 @@ rte_vhost_get_vhost_vring(int vid, uint16_t vring_idx,
> if (!vq)
> return -1;
>
> - vring->desc = vq->desc;
> - vring->avail = vq->avail;
> - vring->used = vq->used;
> + if (vq_is_packed(dev)) {
> + vring->desc_packed = vq->desc_packed;
> + vring->driver_event = vq->driver_event;
> + vring->device_event = vq->device_event;
> + } else {
> + vring->desc = vq->desc;
> + vring->avail = vq->avail;
> + vring->used = vq->used;
> + }
> vring->log_guest_addr = vq->log_guest_addr;
>
> vring->callfd = vq->callfd;
> @@ -1273,13 +1279,51 @@ int rte_vhost_get_log_base(int vid, uint64_t *log_base,
> int rte_vhost_get_vring_base(int vid, uint16_t queue_id,
> uint16_t *last_avail_idx, uint16_t *last_used_idx)
> {
> + struct vhost_virtqueue *vq;
> struct virtio_net *dev = get_device(vid);
>
> if (dev == NULL || last_avail_idx == NULL || last_used_idx == NULL)
> return -1;
>
> - *last_avail_idx = dev->virtqueue[queue_id]->last_avail_idx;
> - *last_used_idx = dev->virtqueue[queue_id]->last_used_idx;
> + vq = dev->virtqueue[queue_id];
> + if (!vq)
> + return -1;
> +
> + if (vq_is_packed(dev)) {
> + *last_avail_idx = (vq->avail_wrap_counter << 15) |
> + vq->last_avail_idx;
> + *last_used_idx = (vq->used_wrap_counter << 15) |
> + vq->last_used_idx;
> + } else {
> + *last_avail_idx = vq->last_avail_idx;
> + *last_used_idx = vq->last_used_idx;
> + }
> +
> + return 0;
> +}
> +
> +int rte_vhost_set_vring_base(int vid, uint16_t queue_id,
> + uint16_t last_avail_idx, uint16_t last_used_idx)
> +{
> + struct vhost_virtqueue *vq;
> + struct virtio_net *dev = get_device(vid);
> +
> + if (!dev)
> + return -1;
> +
> + vq = dev->virtqueue[queue_id];
> + if (!vq)
> + return -1;
> +
> + if (vq_is_packed(dev)) {
> + vq->last_avail_idx = last_avail_idx & 0x7fff;
> + vq->avail_wrap_counter = !!(last_avail_idx & (1 << 15));
> + vq->last_used_idx = last_used_idx & 0x7fff;
> + vq->used_wrap_counter = !!(last_used_idx & (1 << 15));
> + } else {
> + vq->last_avail_idx = last_avail_idx;
> + vq->last_used_idx = last_used_idx;
> + }
>
> return 0;
> }
> @@ -1308,20 +1352,6 @@ rte_vhost_get_vring_base_from_inflight(int vid,
> return 0;
> }
>
> -int rte_vhost_set_vring_base(int vid, uint16_t queue_id,
> - uint16_t last_avail_idx, uint16_t last_used_idx)
> -{
> - struct virtio_net *dev = get_device(vid);
> -
> - if (!dev)
> - return -1;
> -
> - dev->virtqueue[queue_id]->last_avail_idx = last_avail_idx;
> - dev->virtqueue[queue_id]->last_used_idx = last_used_idx;
> -
> - return 0;
> -}
> -
> int rte_vhost_extern_callback_register(int vid,
> struct rte_vhost_user_extern_ops const * const ops, void *ctx)
> {
> --
> 2.17.2
>
next prev parent reply other threads:[~2019-09-18 5:50 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190829141224.49700>
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 00/11] vhost: support inflight share memory protocol feature JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 01/11] vhost: add the inflight description JinYu
2019-09-18 1:29 ` Tiwei Bie
2019-09-18 1:37 ` Yu, Jin
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 02/11] vhost: add packed ring JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 03/11] vhost: add the inflight structure JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 04/11] vhost: add two new messages to support a shared buffer JinYu
2019-09-17 12:55 ` Aaron Conole
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 05/11] vhost: checkout and cleanup the resubmit inflight information JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 06/11] vhost: add the APIs to operate inflight ring JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 07/11] vhost: add APIs for user getting " JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 08/11] vhost: fix vring functions to support packed ring JinYu
2019-09-18 5:47 ` Tiwei Bie [this message]
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 09/11] vhost: add an API for judging vq format JinYu
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 10/11] vhost: add APIs to rte_vhost version map JinYu
2019-09-18 6:05 ` Tiwei Bie
2019-09-18 6:31 ` Yu, Jin
2019-09-17 14:52 ` [dpdk-dev] [PATCH v7 11/11] vhost: add vhost-user-blk example which support inflight JinYu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190918054758.GA9304@___ \
--to=tiwei.bie@intel.com \
--cc=changpeng.liu@intel.com \
--cc=dev@dpdk.org \
--cc=jin.yu@intel.com \
--cc=lilin24@baidu.com \
--cc=maxime.coquelin@redhat.com \
--cc=nixun@baidu.com \
--cc=stable@dpdk.org \
--cc=zhangyu31@baidu.com \
--cc=zhihong.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.