On 7/19/2017 4:08 AM, Yuanhan Liu wrote:
On Wed, Jul 19, 2017 at 11:18:23AM +0800, Jiayu Hu wrote:
When use rte_eth_dev_configure() to enable rx queue interrupt for virtio
devices, virtio_configure_intr() isn't called to set up the interrupt
environment, which causes rx queue interrupt setup failed. This patch is
to fix this issue.
Hmm, how was this supposed to work in the begining when this feature
was introduced? Jianfeng?

In the v17.05, virtio_configure_intr() will be called by virtio_dev_configure() if the request feature is changed. That's not correct.



        --yliu


Fixes: 26b683b4f7d0 ("net/virtio: setup Rx queue interrupts")
Cc: sta...@dpdk.org

Signed-off-by: Jiayu Hu <jiayu...@intel.com>
---
  drivers/net/virtio/virtio_ethdev.c | 7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/drivers/net/virtio/virtio_ethdev.c 
b/drivers/net/virtio/virtio_ethdev.c
index 00a3122..66656ed 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1688,6 +1688,13 @@ virtio_dev_configure(struct rte_eth_dev *dev)
                return -ENOTSUP;
        }
+ if (dev->data->dev_conf.intr_conf.rxq) {
+               if (virtio_configure_intr(dev) < 0) {
+                       PMD_DRV_LOG(ERR, "failed to configure interrupt");
+                       return -ENOTSUP;
+               }
+       }
+

Hi Jiayu,

I would expect this will not work for virtio pci devices (QEMU might crash). Could you double check that?

Thanks,
Jianfeng

        if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
                /* Enable vector (0) for Link State Intrerrupt */
                if (VTPCI_OPS(hw)->set_config_irq(hw, 0) ==
--
2.7.4

Reply via email to