[dpdk-dev] virtio: fix wrong queue index for VIRTIO_PCI_QUEUE_SEL

Message ID 1449543912-31066-1-git-send-email-yuanhan.liu@linux.intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Yuanhan Liu Dec. 8, 2015, 3:05 a.m. UTC
  We should provide VIRTIO_PCI_QUEUE_SEL with vq->vq_queue_idx,
but not vq->queue_id.

vq->queue_id is the queue id from rte_eth_rx/tx_queue_setup(),
which always starts from 0 no matter which queue it is. However,
for virtio, even number is for RX queue, and odd number is for
TX queue.

Fixes: 5382b188fb8a ("virtio: add queue release")

Cc: Bernard Iremonger <bernard.iremonger@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---
 drivers/net/virtio/virtio_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Thomas Monjalon Dec. 9, 2015, 8:09 p.m. UTC | #1
2015-12-08 11:05, Yuanhan Liu:
> We should provide VIRTIO_PCI_QUEUE_SEL with vq->vq_queue_idx,
> but not vq->queue_id.
> 
> vq->queue_id is the queue id from rte_eth_rx/tx_queue_setup(),
> which always starts from 0 no matter which queue it is. However,
> for virtio, even number is for RX queue, and odd number is for
> TX queue.
> 
> Fixes: 5382b188fb8a ("virtio: add queue release")
> 
> Cc: Bernard Iremonger <bernard.iremonger@intel.com>

Bernard was not CC'ed.

> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>

Applied, thanks
  
Yuanhan Liu Dec. 10, 2015, 1:33 a.m. UTC | #2
On Wed, Dec 09, 2015 at 09:09:27PM +0100, Thomas Monjalon wrote:
> 2015-12-08 11:05, Yuanhan Liu:
> > We should provide VIRTIO_PCI_QUEUE_SEL with vq->vq_queue_idx,
> > but not vq->queue_id.
> > 
> > vq->queue_id is the queue id from rte_eth_rx/tx_queue_setup(),
> > which always starts from 0 no matter which queue it is. However,
> > for virtio, even number is for RX queue, and odd number is for
> > TX queue.
> > 
> > Fixes: 5382b188fb8a ("virtio: add queue release")
> > 
> > Cc: Bernard Iremonger <bernard.iremonger@intel.com>
> 
> Bernard was not CC'ed.

Weird, it was indeed in the CC list (in the patch I sent) on my
email client.

	--yliu
  

Patch

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 16ff827..d928339 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -273,7 +273,7 @@  virtio_dev_queue_release(struct virtqueue *vq) {
 	if (vq) {
 		hw = vq->hw;
 		/* Select and deactivate the queue */
-		VIRTIO_WRITE_REG_2(hw, VIRTIO_PCI_QUEUE_SEL, vq->queue_id);
+		VIRTIO_WRITE_REG_2(hw, VIRTIO_PCI_QUEUE_SEL, vq->vq_queue_index);
 		VIRTIO_WRITE_REG_4(hw, VIRTIO_PCI_QUEUE_PFN, 0);
 
 		rte_free(vq->sw_ring);