[dpdk-dev] net/virtio: fix queue notify
Checks
Commit Message
According to spec, we should write virtqueue index into the notify
address, rather than 1. Besides, some HW backend may rely on the data
written to identify which queue need to serve.
Fixes: 6ba1f63b5ab0 ("virtio: support specification 1.0")
Cc: stable@dpdk.org
Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
---
drivers/net/virtio/virtio_pci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Tue, 11 Apr 2017 03:44:28 -0700
Xiao Wang <xiao.w.wang@intel.com> wrote:
> According to spec, we should write virtqueue index into the notify
> address, rather than 1. Besides, some HW backend may rely on the data
> written to identify which queue need to serve.
>
> Fixes: 6ba1f63b5ab0 ("virtio: support specification 1.0")
> Cc: stable@dpdk.org
>
> Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
> ---
> drivers/net/virtio/virtio_pci.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
> index ce9a9d3..b767c03 100644
> --- a/drivers/net/virtio/virtio_pci.c
> +++ b/drivers/net/virtio/virtio_pci.c
> @@ -504,7 +504,7 @@
> static void
> modern_notify_queue(struct virtio_hw *hw __rte_unused, struct virtqueue *vq)
> {
> - rte_write16(1, vq->notify_addr);
> + rte_write16(vq->vq_queue_index, vq->notify_addr);
> }
Yes, this looks correct. It is what Linux and FreeBSD drivers do.
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
On Wed, Apr 12, 2017 at 02:39:25PM -0700, Stephen Hemminger wrote:
> On Tue, 11 Apr 2017 03:44:28 -0700
> Xiao Wang <xiao.w.wang@intel.com> wrote:
>
> > According to spec, we should write virtqueue index into the notify
> > address, rather than 1. Besides, some HW backend may rely on the data
> > written to identify which queue need to serve.
> >
> > Fixes: 6ba1f63b5ab0 ("virtio: support specification 1.0")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
> > ---
> > drivers/net/virtio/virtio_pci.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c
> > index ce9a9d3..b767c03 100644
> > --- a/drivers/net/virtio/virtio_pci.c
> > +++ b/drivers/net/virtio/virtio_pci.c
> > @@ -504,7 +504,7 @@
> > static void
> > modern_notify_queue(struct virtio_hw *hw __rte_unused, struct virtqueue *vq)
> > {
> > - rte_write16(1, vq->notify_addr);
> > + rte_write16(vq->vq_queue_index, vq->notify_addr);
> > }
>
>
> Yes, this looks correct. It is what Linux and FreeBSD drivers do.
>
> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Applied to dpdk-next-virtio.
Thanks.
--yliu
@@ -504,7 +504,7 @@
static void
modern_notify_queue(struct virtio_hw *hw __rte_unused, struct virtqueue *vq)
{
- rte_write16(1, vq->notify_addr);
+ rte_write16(vq->vq_queue_index, vq->notify_addr);
}
const struct virtio_pci_ops modern_ops = {