This patch disables Rx queue interrupts, cleans the datapath event and queue/vector map when stopping the device.
Signed-off-by: Jianfeng Tan <jianfeng....@intel.com> --- drivers/net/virtio/virtio_ethdev.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 886524c..cc5750e 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1484,7 +1484,6 @@ virtio_dev_start(struct rte_eth_dev *dev) PMD_DRV_LOG(ERR, "link status not supported by host"); return -ENOTSUP; } - } if (dev->data->dev_conf.intr_conf.rxq) { @@ -1611,11 +1610,17 @@ static void virtio_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; + struct rte_intr_conf *intr_conf = &dev->data->dev_conf.intr_conf; + struct rte_intr_handle *intr_handle = &dev->pci_dev->intr_handle; PMD_INIT_LOG(DEBUG, "stop"); - if (dev->data->dev_conf.intr_conf.lsc) - rte_intr_disable(&dev->pci_dev->intr_handle); + if (intr_conf->lsc || intr_conf->rxq) { + rte_intr_disable(intr_handle); + rte_intr_efd_disable(intr_handle); + rte_free(intr_handle->intr_vec); + intr_handle->intr_vec = NULL; + } memset(&link, 0, sizeof(link)); virtio_dev_atomic_write_link_status(dev, &link); -- 2.7.4